diff --git a/weed/server/volume_server_uds.go b/weed/server/volume_server_uds.go index 2867cdec6..6442fb32e 100644 --- a/weed/server/volume_server_uds.go +++ b/weed/server/volume_server_uds.go @@ -189,6 +189,11 @@ func (u *UdsServer) handleLocate(req *LocateRequest) *LocateResponse { return resp } + if u.vs == nil { + resp.Status = UdsStatusError + return resp + } + volumeId := fileId.VolumeId needleId := fileId.Key diff --git a/weed/server/volume_server_uds_test.go b/weed/server/volume_server_uds_test.go index 53b7f3ec5..0a1f6de1e 100644 --- a/weed/server/volume_server_uds_test.go +++ b/weed/server/volume_server_uds_test.go @@ -162,11 +162,10 @@ func TestUdsServerProtocol(t *testing.T) { t.Fatalf("Failed to read response: %v", err) } - // Since vs is nil, we expect an error status (handleLocate will panic or return error) - // In this case, we just check we got a valid response back + // Since vs is nil, we expect UdsStatusError status := respBuf[0] - if status != UdsStatusOk && status != UdsStatusNotFound && status != UdsStatusError { - t.Errorf("Unexpected status: %d", status) + if status != UdsStatusError { + t.Errorf("Expected UdsStatusError (%d) for nil VolumeServer, got %d", UdsStatusError, status) } }