mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-11-24 06:25:55 +00:00
fix pruning notification
This commit is contained in:
parent
09b2c53b3f
commit
600f39ffc6
@ -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())
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user