mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-11-26 15:35:55 +00:00
fix cases of nil pointers...
This commit is contained in:
parent
e059e880c7
commit
b4754d4b23
@ -1,6 +1,8 @@
|
||||
package txindex
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
|
||||
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
||||
)
|
||||
|
||||
@ -10,3 +12,24 @@ type TXAcceptanceChange struct {
|
||||
Added map[externalapi.DomainTransactionID]*externalapi.DomainHash
|
||||
Removed map[externalapi.DomainTransactionID]*externalapi.DomainHash
|
||||
}
|
||||
|
||||
// ConvertDomainHashToString converts the given DomainHash to a string
|
||||
func ConvertDomainHashToString(blockHash *externalapi.DomainHash) string {
|
||||
return hex.EncodeToString(blockHash.ByteSlice())
|
||||
}
|
||||
|
||||
// ConvertStringDomainHashToDomainHash converts the given string to a domainHash
|
||||
func ConvertStringToDomainHash(stringDomainHash string) (*externalapi.DomainHash, error) {
|
||||
return externalapi.NewDomainHashFromString(stringDomainHash)
|
||||
}
|
||||
|
||||
// ConvertDomainHashToString converts the given DomainHash to a string
|
||||
func ConvertTXIDToString(txID *externalapi.DomainTransactionID) string {
|
||||
return hex.EncodeToString(txID.ByteSlice())
|
||||
}
|
||||
|
||||
// ConvertStringDomainHashToDomainHash converts the given string to a domainHash
|
||||
func ConvertStringTXID(stringDomainTransactionID string) (*externalapi.DomainTransactionID, error) {
|
||||
return externalapi.NewDomainTransactionIDFromString(stringDomainTransactionID)
|
||||
}
|
||||
|
||||
|
||||
@ -60,13 +60,13 @@ func (tis *txIndexStore) deleteAll() error {
|
||||
}
|
||||
|
||||
func (tis *txIndexStore) add(txID externalapi.DomainTransactionID, blockHash *externalapi.DomainHash) {
|
||||
log.Tracef("Adding %s Txs from blockHash %s", txID.String(), blockHash.String())
|
||||
log.Tracef("Adding %s Txs from blockHash %s", txID.String(), ConvertDomainHashToString(blockHash))
|
||||
delete(tis.toRemove, txID) //adding takes precedence
|
||||
tis.toAdd[txID] = blockHash
|
||||
}
|
||||
|
||||
func (tis *txIndexStore) remove(txID externalapi.DomainTransactionID, blockHash *externalapi.DomainHash) {
|
||||
log.Tracef("Removing %s Txs from blockHash %s", txID.String(), blockHash.String())
|
||||
log.Tracef("Removing %s Txs from blockHash %s", txID.String(), ConvertDomainHashToString(blockHash))
|
||||
if _, found := tis.toAdd[txID]; !found { //adding takes precedence
|
||||
tis.toRemove[txID] = blockHash
|
||||
}
|
||||
|
||||
@ -98,6 +98,9 @@ func (ti *TXIndex) isSynced() (bool, error) {
|
||||
|
||||
txIndexVirtualParents, err := ti.store.getVirtualParents()
|
||||
if err != nil {
|
||||
if database.IsNotFoundError(err) {
|
||||
return false, nil
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
|
||||
@ -179,7 +182,7 @@ func (ti *TXIndex) addTXIDs(selectedParentChainChanges *externalapi.SelectedChai
|
||||
chainBlockAcceptanceData := chainBlocksAcceptanceData[i]
|
||||
for _, blockAcceptanceData := range chainBlockAcceptanceData {
|
||||
for _, transactionAcceptanceData := range blockAcceptanceData.TransactionAcceptanceData {
|
||||
if transactionAcceptanceData.IsAccepted {
|
||||
if transactionAcceptanceData.IsAccepted && transactionAcceptanceData.Transaction.ID != nil {
|
||||
ti.store.add(*transactionAcceptanceData.Transaction.ID, addedChainBlock)
|
||||
}
|
||||
}
|
||||
@ -210,7 +213,7 @@ func (ti *TXIndex) removeTXIDs(selectedParentChainChanges *externalapi.SelectedC
|
||||
chainBlockAcceptanceData := chainBlocksAcceptanceData[i]
|
||||
for _, blockAcceptanceData := range chainBlockAcceptanceData {
|
||||
for _, transactionAcceptanceData := range blockAcceptanceData.TransactionAcceptanceData {
|
||||
if transactionAcceptanceData.IsAccepted {
|
||||
if transactionAcceptanceData.IsAccepted && transactionAcceptanceData.Transaction.ID != nil{
|
||||
ti.store.remove(*transactionAcceptanceData.Transaction.ID, removedChainBlock)
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ type appHarness struct {
|
||||
config *config.Config
|
||||
database database.Database
|
||||
utxoIndex bool
|
||||
txIndex bool
|
||||
overrideDAGParams *dagconfig.Params
|
||||
}
|
||||
|
||||
@ -33,6 +34,7 @@ type harnessParams struct {
|
||||
miningAddress string
|
||||
miningAddressPrivateKey string
|
||||
utxoIndex bool
|
||||
txIndex bool
|
||||
overrideDAGParams *dagconfig.Params
|
||||
protocolVersion uint32
|
||||
}
|
||||
@ -45,6 +47,7 @@ func setupHarness(t *testing.T, params *harnessParams) (harness *appHarness, tea
|
||||
miningAddress: params.miningAddress,
|
||||
miningAddressPrivateKey: params.miningAddressPrivateKey,
|
||||
utxoIndex: params.utxoIndex,
|
||||
txIndex: params.txIndex,
|
||||
overrideDAGParams: params.overrideDAGParams,
|
||||
}
|
||||
|
||||
@ -100,6 +103,34 @@ 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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user