diff options
| author | 小羽 <loli@linux.com> | 2024-07-13 01:49:15 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-12 10:49:15 -0700 |
| commit | cb5dae0c9cd0e19c7e865ebf1ddfdf5138e8a74c (patch) | |
| tree | e3871ef7a191812e37324f6902fd03d056d476b9 /weed | |
| parent | e8537d7172f5aafcc97c60cb8e50b831e467c351 (diff) | |
| download | seaweedfs-cb5dae0c9cd0e19c7e865ebf1ddfdf5138e8a74c.tar.xz seaweedfs-cb5dae0c9cd0e19c7e865ebf1ddfdf5138e8a74c.zip | |
Fix "no more writable volumes" error when volume grows and master leader changed at the same time (#5771)
Diffstat (limited to 'weed')
| -rw-r--r-- | weed/server/master_grpc_server_volume.go | 7 |
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) |
