diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-04-03 15:55:43 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-03 15:55:43 +0800 |
commit | 1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9 (patch) | |
tree | 557ddf9fe004b6cd483acce4270930d8ab53c322 | |
parent | f2fb45707b788b8e422c9f1016f1f0cdd0a411ab (diff) | |
download | dexon-consensus-1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9.tar dexon-consensus-1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9.tar.gz dexon-consensus-1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9.tar.bz2 dexon-consensus-1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9.tar.lz dexon-consensus-1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9.tar.xz dexon-consensus-1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9.tar.zst dexon-consensus-1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9.zip |
core: prepare signer and npk (#545)
-rw-r--r-- | core/agreement-mgr.go | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/core/agreement-mgr.go b/core/agreement-mgr.go index 8cb4c2e..582a72e 100644 --- a/core/agreement-mgr.go +++ b/core/agreement-mgr.go @@ -159,6 +159,22 @@ func (mgr *agreementMgr) prepare() { // Hacky way to make agreement module self contained. mgr.recv.agreementModule = agr mgr.baModule = agr + if round >= DKGDelayRound { + setting := mgr.generateSetting(round) + if setting == nil { + mgr.logger.Warn("Unable to prepare init setting", "round", round) + } else if _, exist := setting.dkgSet[mgr.ID]; exist { + mgr.logger.Debug("Preparing signer and npks.", "round", round) + npk, signer, err := mgr.con.cfgModule.getDKGInfo(round, false) + if err != nil { + mgr.logger.Error("Failed to prepare signer and npks.", + "round", round, + "error", err) + } + mgr.logger.Debug("Prepared signer and npks.", + "round", round, "signer", signer != nil, "npks", npk != nil) + } + } return } @@ -362,7 +378,7 @@ func (mgr *agreementMgr) generateSetting(round uint64) *baRoundSetting { var err error dkgSet, err = mgr.cache.GetNotarySet(round) if err != nil { - mgr.logger.Error("Failed to get notarySet", "round", round) + mgr.logger.Error("Failed to get notarySet", "round", round, "error", err) return nil } } @@ -431,11 +447,6 @@ Loop: default: } mgr.recv.isNotary = checkRound() - // Run BA for this round. - mgr.recv.restartNotary <- types.Position{ - Round: currentRound, - Height: math.MaxUint64, - } mgr.voteFilter = utils.NewVoteFilter() mgr.recv.emptyBlockHashMap = &sync.Map{} if currentRound >= DKGDelayRound && mgr.recv.isNotary { @@ -450,6 +461,11 @@ Loop: mgr.recv.npks = nil mgr.recv.psigSigner = nil } + // Run BA for this round. + mgr.recv.restartNotary <- types.Position{ + Round: currentRound, + Height: math.MaxUint64, + } if err := mgr.baRoutineForOneRound(setting); err != nil { mgr.logger.Error("BA routine failed", "error", err, |