remove leftover from copy pasting and bug splattering

This commit is contained in:
D-Stacks 2022-06-21 23:45:44 +02:00
parent c3393988c1
commit 540d77ff17
2 changed files with 45 additions and 41 deletions

View File

@ -11,6 +11,7 @@ import (
var txAcceptedIndexBucket = database.MakeBucket([]byte("tx-index")) var txAcceptedIndexBucket = database.MakeBucket([]byte("tx-index"))
var virtualParentsKey = database.MakeBucket([]byte("")).Key([]byte("tx-index-virtual-parent")) var virtualParentsKey = database.MakeBucket([]byte("")).Key([]byte("tx-index-virtual-parent"))
var pruningPointKey = database.MakeBucket([]byte("")).Key([]byte("tx-index-prunning-point")) var pruningPointKey = database.MakeBucket([]byte("")).Key([]byte("tx-index-prunning-point"))
type txIndexStore struct { type txIndexStore struct {
database database.Database database database.Database
toAdd map[externalapi.DomainTransactionID]*externalapi.DomainHash toAdd map[externalapi.DomainTransactionID]*externalapi.DomainHash
@ -59,24 +60,9 @@ func (tis *txIndexStore) deleteAll() error {
} }
func (tis *txIndexStore) add(txID externalapi.DomainTransactionID, blockHash *externalapi.DomainHash) { func (tis *txIndexStore) add(txID externalapi.DomainTransactionID, blockHash *externalapi.DomainHash) {
log.Tracef("Adding %d Txs from blockHash %s", len(txIDs), acceptingBlockHash.String()) log.Tracef("Adding %s Txs from blockHash %s", txID.String(), blockHash.String())
for _, txID := range txID { tis.toAdd[txID] = blockHash
if _, found := tis.toRemove[*txID]; found {
delete(tis.toRemove, *txID)
}
tis.toAdd[*txID] = *blockHash
} }
}
func (tis *txIndexStore) remove(txIDs []*externalapi.DomainTransactionID, blockHash *externalapi.DomainHash) {
log.Tracef("Removing %d Txs from blockHash %s", len(txIDs), blockHash.String())
for _, txID := range txIDs {
if _, found := tis.toAdd[*txID]; found {
delete(tis.toAdd, *txID)
}
tis.toRemove[*txID] = *blockHash
}
}
func (tis *txIndexStore) discard() { func (tis *txIndexStore) discard() {
tis.toAdd = make(map[externalapi.DomainTransactionID]*externalapi.DomainHash) tis.toAdd = make(map[externalapi.DomainTransactionID]*externalapi.DomainHash)
@ -94,30 +80,40 @@ func (tis *txIndexStore) commitAndReturnRemoved() (
dbTransaction, err := tis.database.Begin() dbTransaction, err := tis.database.Begin()
if err != nil { if err != nil {
return err return nil, err
} }
defer dbTransaction.RollbackUnlessClosed() defer dbTransaction.RollbackUnlessClosed()
removed := make(map[externalapi.DomainTransactionID]*externalapi.DomainHash) removed = make(map[externalapi.DomainTransactionID]*externalapi.DomainHash)
for txID, blockHash := range tis.toAdd { for txID, blockHash := range tis.toAdd {
key := convertTxIDToKey(txAcceptedIndexBucket, TxID) key := tis.convertTxIDToKey(txAcceptedIndexBucket, txID)
if dbTransaction.Has(key) { found, err := dbTransaction.Has(key)
removedBlockHash, err := dbTransaction.Get(key) if err != nil {
return nil, err
}
if found {
serializedRemovedBlockHash, err := dbTransaction.Get(key)
if err != nil { if err != nil {
return nil, err return nil, err
} }
removed[txID] = externalapi.NewDomainHashFromByteSlice(removedBlockHash) removedBlockHash, err := externalapi.NewDomainHashFromByteSlice(serializedRemovedBlockHash)
if err != nil {
return nil, err
}
removed[txID] = removedBlockHash
} }
dbTransaction.Put(key, blockHash.ByteSlice()) dbTransaction.Put(key, blockHash.ByteSlice())
if err != nil { if err != nil {
return nil, err return nil, err
} }
} }
err = dbTransaction.Put(virtualParentsKey, serializeHashes(ti.virtualSelectedParents)) err = dbTransaction.Put(virtualParentsKey, serializeHashes(tis.virtualParents))
if err != nil { if err != nil {
return err return nil, err
} }
err = dbTransaction.Put(pruningPointKey, tis.pruningPoint.ByteSlice()) err = dbTransaction.Put(pruningPointKey, tis.pruningPoint.ByteSlice())
if err != nil { if err != nil {
@ -153,7 +149,7 @@ func (tis *txIndexStore) updateVirtualParents(virtualParents []*externalapi.Doma
func (tis *txIndexStore) CommitWithoutTransaction() error { func (tis *txIndexStore) CommitWithoutTransaction() error {
for txID, blockHash := range tis.toAdd { for txID, blockHash := range tis.toAdd {
key := tis.convertTxIDToKey(txAcceptedIndexBucket, txID) key := tis.convertTxIDToKey(txAcceptedIndexBucket, txID)
err = tis.database.Put(key, blockHash.ByteSlice()) err := tis.database.Put(key, blockHash.ByteSlice())
if err != nil { if err != nil {
return err return err
} }
@ -180,7 +176,7 @@ func (tis *txIndexStore) getPruningPoint() (*externalapi.DomainHash, error) {
return nil, errors.Errorf("cannot get the Pruning point while staging isn't empty") return nil, errors.Errorf("cannot get the Pruning point while staging isn't empty")
} }
serializedPruningPointHash, err := uis.database.Get(pruningPointKey) serializedPruningPointHash, err := tis.database.Get(pruningPointKey)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -188,14 +184,10 @@ func (tis *txIndexStore) getPruningPoint() (*externalapi.DomainHash, error) {
return externalapi.NewDomainHashFromByteSlice(serializedPruningPointHash) return externalapi.NewDomainHashFromByteSlice(serializedPruningPointHash)
} }
func (tis *txIndexStore) convertTxIDToKey(bucket *database.Bucket, txID *externalapi.DomainTransactionID) *database.Key { func (tis *txIndexStore) convertTxIDToKey(bucket *database.Bucket, txID externalapi.DomainTransactionID) *database.Key {
return bucket.Key(txID.ByteSlice()) return bucket.Key(txID.ByteSlice())
} }
func (tis *txIndexStore) updateVirtualParent(virtualParent externalapi.DomainHash) {
tis.virtualParents = virtualParent
}
func (tis *txIndexStore) convertKeyToTxID(key *database.Key) (*externalapi.DomainTransactionID, error) { func (tis *txIndexStore) convertKeyToTxID(key *database.Key) (*externalapi.DomainTransactionID, error) {
return externalapi.NewDomainTransactionIDFromByteSlice(key.Suffix()) return externalapi.NewDomainTransactionIDFromByteSlice(key.Suffix())
} }
@ -216,13 +208,13 @@ func (tis *txIndexStore) isAnythingStaged() bool {
return len(tis.toAdd) > 0 return len(tis.toAdd) > 0
} }
func (tis *txIndexStore) getTxAcceptingBlockHash(txID *externalapi.DomainTransactionID) (externalapi.DomainHash, error) { func (tis *txIndexStore) getTxAcceptingBlockHash(txID *externalapi.DomainTransactionID) (*externalapi.DomainHash, error) {
if tis.isAnythingAcceptingStaged() { if tis.isAnythingStaged() {
return nil, errors.Errorf("cannot get TX accepting Block hash while staging isn't empty") return nil, errors.Errorf("cannot get TX accepting Block hash while staging isn't empty")
} }
key := tis.convertTxIDToKey(txAcceptedIndexBucket, txID) key := tis.convertTxIDToKey(txAcceptedIndexBucket, *txID)
serializedAcceptingBlockHash, err := tis.database.Get(key) serializedAcceptingBlockHash, err := tis.database.Get(key)
if err != nil { if err != nil {

View File

@ -186,24 +186,36 @@ func (ti *TXIndex) addTXIDs(selectedParentChainChanges *externalapi.SelectedChai
} }
// TXAcceptingBlockHash returns all the UTXOs for the given scriptPublicKey // TXAcceptingBlockHash returns all the UTXOs for the given scriptPublicKey
func (ui *TXIndex) TXAcceptingBlockHash(txID *externalapi.DomainTransactionID) (*externalapi.DomainHash, error) { func (ti *TXIndex) TXAcceptingBlockHash(txID *externalapi.DomainTransactionID) (*externalapi.DomainHash, error) {
onEnd := logger.LogAndMeasureExecutionTime(log, "TXIndex.TXAcceptingBlockHash") onEnd := logger.LogAndMeasureExecutionTime(log, "TXIndex.TXAcceptingBlockHash")
defer onEnd() defer onEnd()
ui.mutex.Lock() ti.mutex.Lock()
defer ui.mutex.Unlock() defer ti.mutex.Unlock()
return ui.store.getUTXOOutpointEntryPairs(scriptPublicKey) acceptingBlockHash, err := ti.store.getTxAcceptingBlockHash(txID)
if err != nil {
return nil, err
}
return acceptingBlockHash, nil
} }
func (ti *TXIndex) TXAcceptingBlock(txID *externalapi.DomainTransactionID) (externalapi.DomainHash, error) { func (ti *TXIndex) TXAcceptingBlock(txID *externalapi.DomainTransactionID) (*externalapi.DomainBlock, error) {
onEnd := logger.LogAndMeasureExecutionTime(log, "TXIndex.TXAcceptingBlock") onEnd := logger.LogAndMeasureExecutionTime(log, "TXIndex.TXAcceptingBlock")
defer onEnd() defer onEnd()
ti.mutex.Lock() ti.mutex.Lock()
defer ti.mutex.Unlock() defer ti.mutex.Unlock()
return ti.store.getUTXOOutpointEntryPairs(scriptPublicKey) acceptingBlockHash, err := ti.store.getTxAcceptingBlockHash(txID)
if err != nil {
return nil, err
}
acceptingBlock, err := ti.domain.Consensus().GetBlock(acceptingBlockHash)
if err != nil {
return nil, err
}
return acceptingBlock, nil
} }
//TO DO: Get Block from TxID //TO DO: Get Block from TxID