dao: do not remove block executable by conflict record stub
It's possible for transaction to include block hash into Conflicts attribure. If so, then we must not remove block executable record while cleaning transation's conflict records. This commit is a direct consequence of e6ceee0f230a21c87006a9297636be29c0d8ea47. Ref. #3427. Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
This commit is contained in:
parent
2ad4c86712
commit
dc8b2f639a
1 changed files with 4 additions and 0 deletions
|
@ -789,6 +789,10 @@ func (dao *Simple) DeleteBlock(h util.Uint256) error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("failed to retrieve conflict record stub for %s (height %d, conflict %s): %w", tx.Hash().StringLE(), b.Index, hash.StringLE(), err)
|
||||
}
|
||||
// It might be a block since we allow transactions to have block hash in the Conflicts attribute.
|
||||
if v[0] != storage.ExecTransaction {
|
||||
continue
|
||||
}
|
||||
index := binary.LittleEndian.Uint32(v[1:])
|
||||
// We can check for `<=` here, but use equality comparison to be more precise
|
||||
// and do not touch earlier conflict records (if any). Their removal must be triggered
|
||||
|
|
Loading…
Reference in a new issue