fix pruning notification

This commit is contained in:
D-Stacks 2022-06-24 22:08:24 +02:00
parent 09b2c53b3f
commit 600f39ffc6
6 changed files with 26 additions and 49 deletions

View File

@ -44,7 +44,6 @@ func HandleGetAcceptingBlockHashOfTx(context *rpccontext.Context, _ *router.Rout
errorMessage := &appmessage.GetAcceptingBlockHashOfTxResponseMessage{} errorMessage := &appmessage.GetAcceptingBlockHashOfTxResponseMessage{}
errorMessage.Error = appmessage.RPCErrorf("Could not find accepting block hash in the txindex database for txID: %s", domainTxID.String()) errorMessage.Error = appmessage.RPCErrorf("Could not find accepting block hash in the txindex database for txID: %s", domainTxID.String())
return errorMessage, nil return errorMessage, nil
} }
response := appmessage.NewGetAcceptingBlockHashOfTxResponse(acceptingBlockHash.String()) response := appmessage.NewGetAcceptingBlockHashOfTxResponse(acceptingBlockHash.String())

View File

@ -941,9 +941,11 @@ func (s *consensus) resolveVirtualNoLock(maxBlocksToResolve uint64) (bool, error
return false, err return false, err
} }
err = s.sendPruningPointChangedEvent(pruningPointChange) if pruningPointChange != nil {
if err != nil { err = s.sendPruningPointChangedEvent(pruningPointChange)
return false, err if err != nil {
return false, err
}
} }
err = s.sendVirtualChangedEvent(virtualChangeSet, true) err = s.sendVirtualChangedEvent(virtualChangeSet, true)

View File

@ -190,12 +190,13 @@ func (pm *pruningManager) UpdatePruningPointByVirtualAndReturnChange(stagingArea
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &externalapi.PruningPointChange{
OldPruningPoint: currentPruningPoint,
NewPruningPoint: newPruningPoint,
}, nil
} }
return &externalapi.PruningPointChange{ return nil, nil
OldPruningPoint: currentPruningPoint,
NewPruningPoint: newPruningPoint,
}, err
} }
type blockIteratorFromOneBlock struct { type blockIteratorFromOneBlock struct {

View File

@ -90,17 +90,18 @@ func (tis *txIndexStore) commit() error {
defer dbTransaction.RollbackUnlessClosed() defer dbTransaction.RollbackUnlessClosed()
for toRemoveTxID := range tis.toRemove { //safer to remove first for toAddTxID, blockHash := range tis.toAdd {
key := tis.convertTxIDToKey(txAcceptedIndexBucket, toRemoveTxID) delete(tis.toRemove, toAddTxID) //safeguard
err := dbTransaction.Delete(key) key := tis.convertTxIDToKey(txAcceptedIndexBucket, toAddTxID)
dbTransaction.Put(key, blockHash.ByteSlice())
if err != nil { if err != nil {
return err return err
} }
} }
for toAddTxID, blockHash := range tis.toAdd { for toRemoveTxID := range tis.toRemove {
key := tis.convertTxIDToKey(txAcceptedIndexBucket, toAddTxID) key := tis.convertTxIDToKey(txAcceptedIndexBucket, toRemoveTxID)
dbTransaction.Put(key, blockHash.ByteSlice()) err := dbTransaction.Delete(key)
if err != nil { if err != nil {
return err return err
} }

View File

@ -49,6 +49,8 @@ func (ti *TXIndex) Reset() error {
ti.mutex.Lock() ti.mutex.Lock()
defer ti.mutex.Unlock() defer ti.mutex.Unlock()
log.Info("Reseting TX Index")
err := ti.store.deleteAll() err := ti.store.deleteAll()
if err != nil { if err != nil {
return err return err
@ -188,7 +190,7 @@ func (ti *TXIndex) addTXIDs(selectedParentChainChanges *externalapi.SelectedChai
chainBlockAcceptanceData := chainBlocksAcceptanceData[i] chainBlockAcceptanceData := chainBlocksAcceptanceData[i]
for _, blockAcceptanceData := range chainBlockAcceptanceData { for _, blockAcceptanceData := range chainBlockAcceptanceData {
for _, transactionAcceptanceData := range blockAcceptanceData.TransactionAcceptanceData { 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 { if transactionAcceptanceData.IsAccepted {
ti.store.add( ti.store.add(
*consensushashing.TransactionID(transactionAcceptanceData.Transaction), *consensushashing.TransactionID(transactionAcceptanceData.Transaction),
@ -222,12 +224,12 @@ func (ti *TXIndex) removeTXIDs(selectedParentChainChanges *externalapi.SelectedC
for i, removedChainBlock := range chainBlocksChunk { for i, removedChainBlock := range chainBlocksChunk {
chainBlockAcceptanceData := chainBlocksAcceptanceData[i] chainBlockAcceptanceData := chainBlocksAcceptanceData[i]
for _, blockAcceptanceData := range chainBlockAcceptanceData { 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 { for _, transactionAcceptanceData := range blockAcceptanceData.TransactionAcceptanceData {
if transactionAcceptanceData.IsAccepted { if transactionAcceptanceData.IsAccepted {
ti.store.remove( ti.store.remove(
*consensushashing.TransactionID(transactionAcceptanceData.Transaction), *consensushashing.TransactionID(transactionAcceptanceData.Transaction),
removedChainBlock, removedChainBlock,
) )
} }
} }

View File

@ -24,7 +24,7 @@ type appHarness struct {
config *config.Config config *config.Config
database database.Database database database.Database
utxoIndex bool utxoIndex bool
txIndex bool txIndex bool
overrideDAGParams *dagconfig.Params overrideDAGParams *dagconfig.Params
} }
@ -34,7 +34,7 @@ type harnessParams struct {
miningAddress string miningAddress string
miningAddressPrivateKey string miningAddressPrivateKey string
utxoIndex bool utxoIndex bool
txIndex bool txIndex bool
overrideDAGParams *dagconfig.Params overrideDAGParams *dagconfig.Params
protocolVersion uint32 protocolVersion uint32
} }
@ -47,7 +47,7 @@ func setupHarness(t *testing.T, params *harnessParams) (harness *appHarness, tea
miningAddress: params.miningAddress, miningAddress: params.miningAddress,
miningAddressPrivateKey: params.miningAddressPrivateKey, miningAddressPrivateKey: params.miningAddressPrivateKey,
utxoIndex: params.utxoIndex, utxoIndex: params.utxoIndex,
txIndex: params.txIndex, txIndex: params.txIndex,
overrideDAGParams: params.overrideDAGParams, overrideDAGParams: params.overrideDAGParams,
} }
@ -103,34 +103,6 @@ func standardSetup(t *testing.T) (appHarness1, appHarness2, appHarness3 *appHarn
return harnesses[0], harnesses[1], harnesses[2], teardown 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) { func setRPCClient(t *testing.T, harness *appHarness) {
var err error var err error
harness.rpcClient, err = newTestRPCClient(harness.rpcAddress) harness.rpcClient, err = newTestRPCClient(harness.rpcAddress)