From 49cea72e417385f8dd2b191c28bafebb7ddc1b16 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Thu, 13 Apr 2023 18:20:52 +0300 Subject: [PATCH] core: improve documentation to SetOracle/SetNotary I've carefully checked the way how new service can be added to the Blockchain instance or to be removed from it. Current implemention of SetNotary and SetOracle methods doesn't contain dangerous code, and native contracts have atomic values everywhere where service is stored. Current implementation of Notary, Oracle and StateRoot services' reload/disabling/enabling on SIGUSR1 is safe and doesn't require any adjustment. This commit closes #2944, it's not a bug in the code, it's just stale documentation. Signed-off-by: Anna Shaleva --- pkg/core/blockchain.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/core/blockchain.go b/pkg/core/blockchain.go index f9996d3b4..29dca5738 100644 --- a/pkg/core/blockchain.go +++ b/pkg/core/blockchain.go @@ -328,8 +328,8 @@ func NewBlockchain(s storage.Store, cfg config.Blockchain, log *zap.Logger) (*Bl return bc, nil } -// SetOracle sets oracle module. It doesn't protected by mutex and -// must be called before `bc.Run()` to avoid data race. +// SetOracle sets oracle module. It can safely be called on the running blockchain. +// To unregister Oracle service use SetOracle(nil). func (bc *Blockchain) SetOracle(mod native.OracleService) { orc := bc.contracts.Oracle if mod != nil { @@ -356,8 +356,8 @@ func (bc *Blockchain) SetOracle(mod native.OracleService) { bc.contracts.Designate.OracleService.Store(&mod) } -// SetNotary sets notary module. It doesn't protected by mutex and -// must be called before `bc.Run()` to avoid data race. +// SetNotary sets notary module. It may safely be called on the running blockchain. +// To unregister Notary service use SetNotary(nil). func (bc *Blockchain) SetNotary(mod native.NotaryService) { if mod != nil { keys, _, err := bc.contracts.Designate.GetDesignatedByRole(bc.dao, noderoles.P2PNotary, bc.BlockHeight())