tweak
Some checks failed
Build and Publish / BuildAndDeploy (push) Has been cancelled

This commit is contained in:
matst80
2024-11-11 23:51:57 +01:00
parent 98a4d9b1c6
commit 95ff0575de

View File

@@ -319,16 +319,23 @@ func (p *SyncedPool) RequestOwnership(id CartId) error {
ok++ ok++
} }
if ok == 0 && all > 0 { if ok == 0 && all > 0 {
delete(p.local.grains, id) p.removeLocalGrain(id)
return fmt.Errorf("no remotes confirmed change") return fmt.Errorf("no remotes confirmed change")
} }
if ok < (all / 2) { if (all < 3 && ok < all) || ok < (all/2) {
delete(p.local.grains, id) p.removeLocalGrain(id)
return fmt.Errorf("quorum not reached") return fmt.Errorf("quorum not reached")
} }
return nil 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 { func (p *SyncedPool) addRemoteHost(address string, remote *RemoteHost) error {
known := make([]string, 0, len(p.remotes)) known := make([]string, 0, len(p.remotes))
for _, r := range p.remotes { for _, r := range p.remotes {