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.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())

View File

@ -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)

View File

@ -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 {

View File

@ -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
}

View File

@ -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,
)
}
}

View File

@ -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)