From 600f39ffc65e4cff92d3c50f2270bb7bba80e1da Mon Sep 17 00:00:00 2001 From: D-Stacks Date: Fri, 24 Jun 2022 22:08:24 +0200 Subject: [PATCH] fix pruning notification --- .../get_accepting_block_hash_of_tx.go | 1 - domain/consensus/consensus.go | 8 +++-- .../pruningmanager/pruningmanager.go | 9 ++--- domain/txindex/store.go | 13 +++---- domain/txindex/txindex.go | 10 +++--- testing/integration/setup_test.go | 34 ++----------------- 6 files changed, 26 insertions(+), 49 deletions(-) diff --git a/app/rpc/rpchandlers/get_accepting_block_hash_of_tx.go b/app/rpc/rpchandlers/get_accepting_block_hash_of_tx.go index c99ae135f..3c6349386 100644 --- a/app/rpc/rpchandlers/get_accepting_block_hash_of_tx.go +++ b/app/rpc/rpchandlers/get_accepting_block_hash_of_tx.go @@ -44,7 +44,6 @@ func HandleGetAcceptingBlockHashOfTx(context *rpccontext.Context, _ *router.Rout errorMessage := &appmessage.GetAcceptingBlockHashOfTxResponseMessage{} errorMessage.Error = appmessage.RPCErrorf("Could not find accepting block hash in the txindex database for txID: %s", domainTxID.String()) return errorMessage, nil - } response := appmessage.NewGetAcceptingBlockHashOfTxResponse(acceptingBlockHash.String()) diff --git a/domain/consensus/consensus.go b/domain/consensus/consensus.go index a82b4afbb..e7e03f5ff 100644 --- a/domain/consensus/consensus.go +++ b/domain/consensus/consensus.go @@ -941,9 +941,11 @@ func (s *consensus) resolveVirtualNoLock(maxBlocksToResolve uint64) (bool, error return false, err } - err = s.sendPruningPointChangedEvent(pruningPointChange) - if err != nil { - return false, err + if pruningPointChange != nil { + err = s.sendPruningPointChangedEvent(pruningPointChange) + if err != nil { + return false, err + } } err = s.sendVirtualChangedEvent(virtualChangeSet, true) diff --git a/domain/consensus/processes/pruningmanager/pruningmanager.go b/domain/consensus/processes/pruningmanager/pruningmanager.go index 7b68f10bc..46b033ae6 100644 --- a/domain/consensus/processes/pruningmanager/pruningmanager.go +++ b/domain/consensus/processes/pruningmanager/pruningmanager.go @@ -190,12 +190,13 @@ func (pm *pruningManager) UpdatePruningPointByVirtualAndReturnChange(stagingArea if err != nil { return nil, err } + return &externalapi.PruningPointChange{ + OldPruningPoint: currentPruningPoint, + NewPruningPoint: newPruningPoint, + }, nil } - return &externalapi.PruningPointChange{ - OldPruningPoint: currentPruningPoint, - NewPruningPoint: newPruningPoint, - }, err + return nil, nil } type blockIteratorFromOneBlock struct { diff --git a/domain/txindex/store.go b/domain/txindex/store.go index 257026d3f..269a812ae 100644 --- a/domain/txindex/store.go +++ b/domain/txindex/store.go @@ -90,17 +90,18 @@ func (tis *txIndexStore) commit() error { defer dbTransaction.RollbackUnlessClosed() - for toRemoveTxID := range tis.toRemove { //safer to remove first - key := tis.convertTxIDToKey(txAcceptedIndexBucket, toRemoveTxID) - err := dbTransaction.Delete(key) + for toAddTxID, blockHash := range tis.toAdd { + delete(tis.toRemove, toAddTxID) //safeguard + key := tis.convertTxIDToKey(txAcceptedIndexBucket, toAddTxID) + dbTransaction.Put(key, blockHash.ByteSlice()) if err != nil { return err } } - for toAddTxID, blockHash := range tis.toAdd { - key := tis.convertTxIDToKey(txAcceptedIndexBucket, toAddTxID) - dbTransaction.Put(key, blockHash.ByteSlice()) + for toRemoveTxID := range tis.toRemove { + key := tis.convertTxIDToKey(txAcceptedIndexBucket, toRemoveTxID) + err := dbTransaction.Delete(key) if err != nil { return err } diff --git a/domain/txindex/txindex.go b/domain/txindex/txindex.go index 98c83bb01..446d2fdab 100644 --- a/domain/txindex/txindex.go +++ b/domain/txindex/txindex.go @@ -49,6 +49,8 @@ func (ti *TXIndex) Reset() error { ti.mutex.Lock() defer ti.mutex.Unlock() + log.Info("Reseting TX Index") + err := ti.store.deleteAll() if err != nil { return err @@ -188,7 +190,7 @@ func (ti *TXIndex) addTXIDs(selectedParentChainChanges *externalapi.SelectedChai chainBlockAcceptanceData := chainBlocksAcceptanceData[i] for _, blockAcceptanceData := range chainBlockAcceptanceData { for _, transactionAcceptanceData := range blockAcceptanceData.TransactionAcceptanceData { - log.Info("TX index Adding: ", len(blockAcceptanceData.TransactionAcceptanceData)) + log.Tracef("TX index Adding: %d transactions", len(blockAcceptanceData.TransactionAcceptanceData)) if transactionAcceptanceData.IsAccepted { ti.store.add( *consensushashing.TransactionID(transactionAcceptanceData.Transaction), @@ -222,12 +224,12 @@ func (ti *TXIndex) removeTXIDs(selectedParentChainChanges *externalapi.SelectedC for i, removedChainBlock := range chainBlocksChunk { chainBlockAcceptanceData := chainBlocksAcceptanceData[i] for _, blockAcceptanceData := range chainBlockAcceptanceData { - log.Info("TX index Removing: ", len(blockAcceptanceData.TransactionAcceptanceData)) + log.Tracef("TX index Removing: %d transactions", len(blockAcceptanceData.TransactionAcceptanceData)) for _, transactionAcceptanceData := range blockAcceptanceData.TransactionAcceptanceData { if transactionAcceptanceData.IsAccepted { ti.store.remove( - *consensushashing.TransactionID(transactionAcceptanceData.Transaction), - removedChainBlock, + *consensushashing.TransactionID(transactionAcceptanceData.Transaction), + removedChainBlock, ) } } diff --git a/testing/integration/setup_test.go b/testing/integration/setup_test.go index bf22729b3..10e7c9b05 100644 --- a/testing/integration/setup_test.go +++ b/testing/integration/setup_test.go @@ -24,7 +24,7 @@ type appHarness struct { config *config.Config database database.Database utxoIndex bool - txIndex bool + txIndex bool overrideDAGParams *dagconfig.Params } @@ -34,7 +34,7 @@ type harnessParams struct { miningAddress string miningAddressPrivateKey string utxoIndex bool - txIndex bool + txIndex bool overrideDAGParams *dagconfig.Params protocolVersion uint32 } @@ -47,7 +47,7 @@ func setupHarness(t *testing.T, params *harnessParams) (harness *appHarness, tea miningAddress: params.miningAddress, miningAddressPrivateKey: params.miningAddressPrivateKey, utxoIndex: params.utxoIndex, - txIndex: params.txIndex, + txIndex: params.txIndex, overrideDAGParams: params.overrideDAGParams, } @@ -103,34 +103,6 @@ func standardSetup(t *testing.T) (appHarness1, appHarness2, appHarness3 *appHarn return harnesses[0], harnesses[1], harnesses[2], teardown } -// standardSetupWithTxindex creates a standard setup of 3 appHarnesses, with txindexes. -func standardSetupWithTxindex(t *testing.T) (appHarness1, appHarness2, appHarness3 *appHarness, teardownFunc func()) { - harnesses, teardown := setupHarnesses(t, []*harnessParams{ - { - p2pAddress: p2pAddress1, - rpcAddress: rpcAddress1, - miningAddress: miningAddress1, - miningAddressPrivateKey: miningAddress1PrivateKey, - txIndex: true, - }, - { - p2pAddress: p2pAddress2, - rpcAddress: rpcAddress2, - miningAddress: miningAddress2, - miningAddressPrivateKey: miningAddress2PrivateKey, - txIndex: true, - }, { - p2pAddress: p2pAddress3, - rpcAddress: rpcAddress3, - miningAddress: miningAddress3, - miningAddressPrivateKey: miningAddress3PrivateKey, - - }, - }) - - return harnesses[0], harnesses[1], harnesses[2], teardown -} - func setRPCClient(t *testing.T, harness *appHarness) { var err error harness.rpcClient, err = newTestRPCClient(harness.rpcAddress)