commit
48162c1e3a
@ -0,0 +1,179 @@ |
||||
package quorum |
||||
|
||||
import ( |
||||
"math/big" |
||||
"sync" |
||||
|
||||
"github.com/ethereum/go-ethereum/common" |
||||
bls_core "github.com/harmony-one/bls/ffi/go/bls" |
||||
"github.com/harmony-one/harmony/consensus/votepower" |
||||
"github.com/harmony-one/harmony/crypto/bls" |
||||
shardingconfig "github.com/harmony-one/harmony/internal/configs/sharding" |
||||
"github.com/harmony-one/harmony/multibls" |
||||
"github.com/harmony-one/harmony/numeric" |
||||
"github.com/harmony-one/harmony/shard" |
||||
) |
||||
|
||||
var _ Decider = threadSafeDeciderImpl{} |
||||
|
||||
type threadSafeDeciderImpl struct { |
||||
mu *sync.RWMutex |
||||
decider Decider |
||||
} |
||||
|
||||
func NewThreadSafeDecider(decider Decider, mu *sync.RWMutex) Decider { |
||||
return threadSafeDeciderImpl{ |
||||
mu: mu, |
||||
decider: decider, |
||||
} |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) String() string { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.String() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) Participants() multibls.PublicKeys { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.Participants() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) IndexOf(key bls.SerializedPublicKey) int { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.IndexOf(key) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) ParticipantsCount() int64 { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.ParticipantsCount() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) NthNextValidator(slotList shard.SlotList, pubKey *bls.PublicKeyWrapper, next int) (bool, *bls.PublicKeyWrapper) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.NthNextValidator(slotList, pubKey, next) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) NthNextHmy(instance shardingconfig.Instance, pubkey *bls.PublicKeyWrapper, next int) (bool, *bls.PublicKeyWrapper) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.NthNextHmy(instance, pubkey, next) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) NthNextHmyExt(instance shardingconfig.Instance, wrapper *bls.PublicKeyWrapper, i int) (bool, *bls.PublicKeyWrapper) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.NthNextHmyExt(instance, wrapper, i) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) FirstParticipant(instance shardingconfig.Instance) *bls.PublicKeyWrapper { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.FirstParticipant(instance) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) UpdateParticipants(pubKeys, allowlist []bls.PublicKeyWrapper) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
a.decider.UpdateParticipants(pubKeys, allowlist) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) submitVote(p Phase, pubkeys []bls.SerializedPublicKey, sig *bls_core.Sign, headerHash common.Hash, height, viewID uint64) (*votepower.Ballot, error) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.submitVote(p, pubkeys, sig, headerHash, height, viewID) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) SignersCount(phase Phase) int64 { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.SignersCount(phase) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) reset(phases []Phase) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
a.decider.reset(phases) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) ReadBallot(p Phase, pubkey bls.SerializedPublicKey) *votepower.Ballot { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.ReadBallot(p, pubkey) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) TwoThirdsSignersCount() int64 { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.TwoThirdsSignersCount() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) AggregateVotes(p Phase) *bls_core.Sign { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.AggregateVotes(p) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) SetVoters(subCommittee *shard.Committee, epoch *big.Int) (*TallyResult, error) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.SetVoters(subCommittee, epoch) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) Policy() Policy { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.Policy() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) AddNewVote(p Phase, pubkeys []*bls.PublicKeyWrapper, sig *bls_core.Sign, headerHash common.Hash, height, viewID uint64) (*votepower.Ballot, error) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.AddNewVote(p, pubkeys, sig, headerHash, height, viewID) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) IsQuorumAchievedByMask(mask *bls.Mask) bool { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.IsQuorumAchievedByMask(mask) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) QuorumThreshold() numeric.Dec { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.QuorumThreshold() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) IsAllSigsCollected() bool { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.IsAllSigsCollected() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) ResetPrepareAndCommitVotes() { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
a.decider.ResetPrepareAndCommitVotes() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) ResetViewChangeVotes() { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
a.decider.ResetViewChangeVotes() |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) CurrentTotalPower(p Phase) (*numeric.Dec, error) { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.CurrentTotalPower(p) |
||||
} |
||||
|
||||
func (a threadSafeDeciderImpl) IsQuorumAchieved(p Phase) bool { |
||||
a.mu.Lock() |
||||
defer a.mu.Unlock() |
||||
return a.decider.IsQuorumAchieved(p) |
||||
} |
@ -1,12 +1,14 @@ |
||||
#!/usr/bin/env bash |
||||
set -e |
||||
|
||||
echo $TRAVIS_PULL_REQUEST_BRANCH |
||||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" |
||||
echo $DIR |
||||
echo $GOPATH |
||||
cd $GOPATH/src/github.com/harmony-one/harmony-test |
||||
git fetch |
||||
git pull |
||||
git checkout $TRAVIS_PULL_REQUEST_BRANCH || true |
||||
git branch --show-current |
||||
cd localnet |
||||
docker build -t harmonyone/localnet-test . |
||||
|
Loading…
Reference in new issue