From b4f4dc98b5106d32fcff727969a9b2e385c21450 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 17 Mar 2026 17:22:34 -0700 Subject: [PATCH] Remove SetState version check to match Go behavior Go's SetState unconditionally applies the state without any version mismatch check. The Rust version had an extra optimistic concurrency check that would reject valid requests from Go clients that don't track versions. --- seaweed-volume/src/server/grpc_server.rs | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/seaweed-volume/src/server/grpc_server.rs b/seaweed-volume/src/server/grpc_server.rs index 09409d9ac..f1c4a0c69 100644 --- a/seaweed-volume/src/server/grpc_server.rs +++ b/seaweed-volume/src/server/grpc_server.rs @@ -852,16 +852,8 @@ impl VolumeServer for VolumeGrpcService { let req = request.into_inner(); if let Some(new_state) = &req.state { - // Check version matches (optimistic concurrency) - let current_version = self.state.state_version.load(Ordering::Relaxed); - if new_state.version != current_version { - return Err(Status::failed_precondition(format!( - "version mismatch: expected {}, got {}", - current_version, new_state.version - ))); - } - - // Apply state changes + // Match Go: simply apply the state without version checking. + // Go's SetState calls vs.store.State.Update(req.GetState()) unconditionally. self.state .maintenance .store(new_state.maintenance, Ordering::Relaxed);