[NOD-1549] Properly handle errors in unorphanBlock (#1107)

* [NOD-1549] In AddBlock, simply log RuleErrors.

* [NOD-1549] Properly handle errors in unorphanBlock.
This commit is contained in:
stasatdaglabs 2020-11-18 12:19:30 +02:00 committed by GitHub
parent 3f92ddd827
commit 75d21d39cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 5 deletions

View File

@ -2,6 +2,8 @@ package flowcontext
import (
"github.com/kaspanet/kaspad/app/protocol/blocklogger"
"github.com/kaspanet/kaspad/domain/consensus/ruleerrors"
"github.com/pkg/errors"
"sync/atomic"
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
@ -81,6 +83,10 @@ func (f *FlowContext) SharedRequestedBlocks() *blockrelay.SharedRequestedBlocks
func (f *FlowContext) AddBlock(block *externalapi.DomainBlock) error {
err := f.Domain().Consensus().ValidateAndInsertBlock(block)
if err != nil {
if errors.As(err, &ruleerrors.RuleError{}) {
log.Infof("Validation failed for block %s: %s", consensusserialization.BlockHash(block), err)
return nil
}
return err
}
err = f.OnNewBlock(block)

View File

@ -2,6 +2,7 @@ package flowcontext
import (
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
"github.com/kaspanet/kaspad/domain/consensus/ruleerrors"
"github.com/kaspanet/kaspad/domain/consensus/utils/consensusserialization"
"github.com/pkg/errors"
)
@ -104,12 +105,17 @@ func (f *FlowContext) unorphanBlock(orphanHash externalapi.DomainHash) error {
if !ok {
return errors.Errorf("attempted to unorphan a non-orphan block %s", orphanHash)
}
err := f.domain.Consensus().ValidateAndInsertBlock(orphanBlock)
if err != nil {
return err
}
delete(f.orphans, orphanHash)
log.Debugf("Unorphaned block %s", orphanHash)
err := f.domain.Consensus().ValidateAndInsertBlock(orphanBlock)
if err != nil {
if errors.As(err, &ruleerrors.RuleError{}) {
log.Infof("Validation failed for orphan block %s: %s", orphanHash, err)
return nil
}
return err
}
log.Infof("Unorphaned block %s", orphanHash)
return nil
}