aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-04-03 15:55:43 +0800
committerGitHub <noreply@github.com>2019-04-03 15:55:43 +0800
commit1ebfe09074d9eb80ae6a3380d1b706035fd4c9c9 (patch)
tree557ddf9fe004b6cd483acce4270930d8ab53c322
parentf2fb45707b788b8e422c9f1016f1f0cdd0a411ab (diff)
downloaddexon-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.go28
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,