aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author小羽 <loli@linux.com>2024-07-13 01:49:15 +0800
committerGitHub <noreply@github.com>2024-07-12 10:49:15 -0700
commitcb5dae0c9cd0e19c7e865ebf1ddfdf5138e8a74c (patch)
treee3871ef7a191812e37324f6902fd03d056d476b9
parente8537d7172f5aafcc97c60cb8e50b831e467c351 (diff)
downloadseaweedfs-cb5dae0c9cd0e19c7e865ebf1ddfdf5138e8a74c.tar.xz
seaweedfs-cb5dae0c9cd0e19c7e865ebf1ddfdf5138e8a74c.zip
Fix "no more writable volumes" error when volume grows and master leader changed at the same time (#5771)
-rw-r--r--weed/server/master_grpc_server_volume.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/weed/server/master_grpc_server_volume.go b/weed/server/master_grpc_server_volume.go
index 503da7fd4..86b66a818 100644
--- a/weed/server/master_grpc_server_volume.go
+++ b/weed/server/master_grpc_server_volume.go
@@ -27,9 +27,13 @@ func (ms *MasterServer) ProcessGrowRequest() {
break
}
+ option := req.Option
+ vl := ms.Topo.GetVolumeLayout(option.Collection, option.ReplicaPlacement, option.Ttl, option.DiskType)
+
if !ms.Topo.IsLeader() {
//discard buffered requests
time.Sleep(time.Second * 1)
+ vl.DoneGrowRequest()
continue
}
@@ -42,9 +46,6 @@ func (ms *MasterServer) ProcessGrowRequest() {
return !found
})
- option := req.Option
- vl := ms.Topo.GetVolumeLayout(option.Collection, option.ReplicaPlacement, option.Ttl, option.DiskType)
-
// not atomic but it's okay
if !found && vl.ShouldGrowVolumes(option) {
filter.Store(req, nil)