This commit is contained in:
@@ -319,16 +319,23 @@ func (p *SyncedPool) RequestOwnership(id CartId) error {
|
||||
ok++
|
||||
}
|
||||
if ok == 0 && all > 0 {
|
||||
delete(p.local.grains, id)
|
||||
p.removeLocalGrain(id)
|
||||
return fmt.Errorf("no remotes confirmed change")
|
||||
}
|
||||
if ok < (all / 2) {
|
||||
delete(p.local.grains, id)
|
||||
if (all < 3 && ok < all) || ok < (all/2) {
|
||||
p.removeLocalGrain(id)
|
||||
return fmt.Errorf("quorum not reached")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *SyncedPool) removeLocalGrain(id CartId) {
|
||||
p.mu.Lock()
|
||||
defer p.mu.Unlock()
|
||||
delete(p.local.grains, id)
|
||||
delete(p.remoteIndex, id)
|
||||
}
|
||||
|
||||
func (p *SyncedPool) addRemoteHost(address string, remote *RemoteHost) error {
|
||||
known := make([]string, 0, len(p.remotes))
|
||||
for _, r := range p.remotes {
|
||||
|
||||
Reference in New Issue
Block a user