forked from TrueCloudLab/neoneo-go
core: split ErrAlreadyExists into ErrAlreadyExists and ErrAlreadyInPool
ErrAlreadyExists is in blockchain and ErrAlreadyInPool is in mempool. Signed-off-by: Tatiana Nesterenko <tatiana@nspcc.io>
This commit is contained in:
parent
16d1d1e5eb
commit
3abddc78c0
3 changed files with 10 additions and 8 deletions
|
@ -423,7 +423,7 @@ func mkP2PNotary(config config.P2PNotary, chain *core.Blockchain, serv *network.
|
||||||
}
|
}
|
||||||
n, err := notary.NewNotary(cfg, serv.Net, serv.GetNotaryPool(), func(tx *transaction.Transaction) error {
|
n, err := notary.NewNotary(cfg, serv.Net, serv.GetNotaryPool(), func(tx *transaction.Transaction) error {
|
||||||
err := serv.RelayTxn(tx)
|
err := serv.RelayTxn(tx)
|
||||||
if err != nil && !errors.Is(err, core.ErrAlreadyExists) {
|
if err != nil && !errors.Is(err, core.ErrAlreadyExists) && !errors.Is(err, core.ErrAlreadyInPool) {
|
||||||
return fmt.Errorf("can't relay completed notary transaction: hash %s, error: %w", tx.Hash().StringLE(), err)
|
return fmt.Errorf("can't relay completed notary transaction: hash %s, error: %w", tx.Hash().StringLE(), err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -88,10 +88,12 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// ErrAlreadyExists is returned when trying to add some already existing
|
// ErrAlreadyExists is returned when trying to add some transaction
|
||||||
// transaction into the pool (not specifying whether it exists in the
|
// that already exists on chain.
|
||||||
// chain or mempool).
|
ErrAlreadyExists = errors.New("already exists in blockchain")
|
||||||
ErrAlreadyExists = errors.New("already exists")
|
// ErrAlreadyInPool is returned when trying to add some already existing
|
||||||
|
// transaction into the mempool.
|
||||||
|
ErrAlreadyInPool = errors.New("already exists in mempool")
|
||||||
// ErrOOM is returned when adding transaction to the memory pool because
|
// ErrOOM is returned when adding transaction to the memory pool because
|
||||||
// it reached its full capacity.
|
// it reached its full capacity.
|
||||||
ErrOOM = errors.New("no space left in the memory pool")
|
ErrOOM = errors.New("no space left in the memory pool")
|
||||||
|
@ -2480,7 +2482,7 @@ func (bc *Blockchain) verifyAndPoolTx(t *transaction.Transaction, pool *mempool.
|
||||||
if err := bc.dao.HasTransaction(t.Hash(), t.Signers); err != nil {
|
if err := bc.dao.HasTransaction(t.Hash(), t.Signers); err != nil {
|
||||||
switch {
|
switch {
|
||||||
case errors.Is(err, dao.ErrAlreadyExists):
|
case errors.Is(err, dao.ErrAlreadyExists):
|
||||||
return fmt.Errorf("blockchain: %w", ErrAlreadyExists)
|
return ErrAlreadyExists
|
||||||
case errors.Is(err, dao.ErrHasConflicts):
|
case errors.Is(err, dao.ErrHasConflicts):
|
||||||
return fmt.Errorf("blockchain: %w", ErrHasConflicts)
|
return fmt.Errorf("blockchain: %w", ErrHasConflicts)
|
||||||
default:
|
default:
|
||||||
|
@ -2500,7 +2502,7 @@ func (bc *Blockchain) verifyAndPoolTx(t *transaction.Transaction, pool *mempool.
|
||||||
case errors.Is(err, mempool.ErrConflict):
|
case errors.Is(err, mempool.ErrConflict):
|
||||||
return ErrMemPoolConflict
|
return ErrMemPoolConflict
|
||||||
case errors.Is(err, mempool.ErrDup):
|
case errors.Is(err, mempool.ErrDup):
|
||||||
return fmt.Errorf("mempool: %w", ErrAlreadyExists)
|
return ErrAlreadyInPool
|
||||||
case errors.Is(err, mempool.ErrInsufficientFunds):
|
case errors.Is(err, mempool.ErrInsufficientFunds):
|
||||||
return ErrInsufficientFunds
|
return ErrInsufficientFunds
|
||||||
case errors.Is(err, mempool.ErrOOM):
|
case errors.Is(err, mempool.ErrOOM):
|
||||||
|
|
|
@ -1358,7 +1358,7 @@ func TestBlockchain_VerifyTx(t *testing.T) {
|
||||||
require.NoError(t, bc.PoolTx(tx))
|
require.NoError(t, bc.PoolTx(tx))
|
||||||
|
|
||||||
err := bc.PoolTx(tx)
|
err := bc.PoolTx(tx)
|
||||||
require.ErrorIs(t, err, core.ErrAlreadyExists)
|
require.ErrorIs(t, err, core.ErrAlreadyInPool)
|
||||||
})
|
})
|
||||||
t.Run("MemPoolOOM", func(t *testing.T) {
|
t.Run("MemPoolOOM", func(t *testing.T) {
|
||||||
mp := mempool.New(1, 0, false, nil)
|
mp := mempool.New(1, 0, false, nil)
|
||||||
|
|
Loading…
Reference in a new issue