From 69b41a7f1620cad330fa7d60a75fb09dc9fa1e68 Mon Sep 17 00:00:00 2001 From: pingqiu Date: Sat, 4 Apr 2026 12:06:53 -0700 Subject: [PATCH] refactor: rebind bounded replica-ready heartbeat truth Make the heartbeat/master boundary carry explicit replica readiness truth so the registry no longer depends only on replica transport-address presence as a readiness proxy. Keep backward compatibility by falling back to the old address heuristic when older heartbeats do not send the field. Made-with: Cursor --- sw-block/.private/phase/phase-16-log.md | 123 ++++ sw-block/.private/phase/phase-16.md | 107 +++- weed/pb/master.proto | 1 + weed/pb/master_pb/master.pb.go | 587 +++++++++--------- weed/pb/master_pb/master_grpc.pb.go | 4 +- weed/server/master_block_registry.go | 11 +- weed/server/master_block_registry_test.go | 40 ++ weed/server/volume_server_block.go | 37 +- weed/server/volume_server_block_test.go | 54 +- weed/storage/blockvol/block_heartbeat.go | 57 +- .../storage/blockvol/block_heartbeat_proto.go | 3 +- .../blockvol/block_heartbeat_proto_test.go | 32 +- 12 files changed, 710 insertions(+), 346 deletions(-) diff --git a/sw-block/.private/phase/phase-16-log.md b/sw-block/.private/phase/phase-16-log.md index acbdfb858..fe24ac291 100644 --- a/sw-block/.private/phase/phase-16-log.md +++ b/sw-block/.private/phase/phase-16-log.md @@ -1149,3 +1149,126 @@ Conclusion: relies on broad volume-wide invalidation 2. this slice still does not claim broad failover/publication closure or full recovery-loop closure + +--- + +#### `16L` Start Note Rev 1 + +Date: 2026-04-04 +Scope: bounded `PublishHealthy` rebinding at the server boundary + +Why this slice exists: + +1. `debug` and `core projection` surfaces already treat publication health as + core-owned truth +2. but `ReadinessSnapshot.PublishHealthy` still intentionally stays adapter-local + and `CoreProjectionMismatches` still intentionally excludes it +3. that leaves one visible publication seam at the `weed/server` boundary even + though the publication owner is already the core + +Chosen implementation rule: + +1. rebind `PublishHealthy` to core `Publication.Healthy` when projection exists +2. update only the call sites that were really using `PublishHealthy` as a proxy + for readiness +3. do not broaden this slice into general failover/publication closure claims + +--- + +#### `16L` Delivery Note Rev 1 + +Date: 2026-04-04 +Scope: bounded `PublishHealthy` rebinding at the server boundary + +What changed: + +1. `weed/server/volume_server_block.go` + - rebound `ReadinessSnapshot.PublishHealthy` to core + `Publication.Healthy` on the core-present path + - `CoreProjectionMismatches` now includes `publish_healthy` +2. `weed/server/volume_server_block_test.go` + - updated focused readiness/debug proofs to assert the rebound publication + truth and added a proof that core healthy publication overrides stale + adapter-local `publishHealthy` +3. `weed/server/block_heartbeat_loop_test.go` + - changed a readiness-only collector proof to depend on `ReplicaEligible` + rather than publication health + +Proof / evidence: + +1. `go test ./weed/server -count=1 -timeout 120s -run "Test(BlockService_(ApplyAssignments_UpdatesCoreProjection(Replica|Primary)Path|ReadinessSnapshot_PrefersCoreProjectionPrimaryFields|ReadinessSnapshot_PrefersCorePublicationHealth|ReadinessSnapshot_PrefersCoreProjectionReplicaFields|DebugInfoForVolume_UsesCoreProjection(Primary|Replica)Path|CollectBlockVolumeHeartbeat_(Primary|Replica)UsesCoreReadinessGate|HeartbeatReplicaDegraded_UsesCoreMode)|BlockAssign_CollectorUsesAuthoritativeLifecycle)"` +2. result: `PASS` + +Conclusion: + +1. the server boundary no longer keeps `PublishHealthy` as a separate + adapter-local publication owner on the core-present path +2. this slice still does not claim broad failover/publication closure by itself + +--- + +#### `16M` Start Note Rev 1 + +Date: 2026-04-04 +Scope: bounded explicit `ReplicaReady` heartbeat truth on the heartbeat/master seam + +Why this slice exists: + +1. `weed/server` already has a bounded core-owned readiness view on the + core-present path +2. but `master_block_registry` still infers replica readiness from + `replica_data_addr` and `replica_ctrl_addr` presence +3. that keeps one avoidable failover/publication seam alive at the + heartbeat/master boundary because transport endpoint presence is only a proxy + for readiness truth + +Chosen implementation rule: + +1. widen the heartbeat wire additively with an explicit `replica_ready` field +2. emit the field from the same bounded readiness gate already used at the + server boundary on the core-present path +3. make master-side consume prefer explicit readiness and retain address + presence only as backward-compatible fallback +4. do not broaden this slice into promotion selection or broad failover closure + +--- + +#### `16M` Delivery Note Rev 1 + +Date: 2026-04-04 +Scope: bounded explicit `ReplicaReady` heartbeat truth on the heartbeat/master seam + +What changed: + +1. `weed/pb/master.proto` + - added additive optional `replica_ready` to `BlockVolumeInfoMessage` +2. `weed/pb/master_pb/master.pb.go` + - regenerated so heartbeat wire presence is represented as `*bool` +3. `weed/storage/blockvol/block_heartbeat.go` + - heartbeat wire struct now carries explicit `ReplicaReady` +4. `weed/storage/blockvol/block_heartbeat_proto.go` + - heartbeat conversion now writes and reads `ReplicaReady` +5. `weed/server/volume_server_block.go` + - heartbeat emission now exports explicit bounded `ReplicaReady` truth from + the current core-owned readiness gate +6. `weed/server/master_block_registry.go` + - registry consume now prefers explicit heartbeat readiness and falls back to + transport-address inference only when the field is absent +7. focused tests in `block_heartbeat_proto_test.go`, + `volume_server_block_test.go`, and `master_block_registry_test.go` + - now prove the explicit heartbeat truth and backward-compatible fallback + +Proof / evidence: + +1. `go test ./weed/storage/blockvol/ -count=1 -run "TestInfoMessage_Replica"` +2. `go test ./weed/server/ -count=1 -timeout 120s -run "Test(BlockService_CollectBlockVolumeHeartbeat_(Primary|Replica)UsesCoreReadinessGate|Registry_UpdateFullHeartbeat_ConsumesCoreInfluencedReplicaReady|Registry_UpdateFullHeartbeat_ReplicaReadyFallsBackToAddressesWhenFieldAbsent)"` +3. `go test ./weed/server/ -count=1 -timeout 120s -run "TestBlockService_ApplyAssignments_|TestP16B_|TestP4_"` +4. result: `PASS` + +Conclusion: + +1. the heartbeat/master seam no longer depends only on replica transport-address + presence as a proxy for readiness truth +2. backward compatibility is preserved because older heartbeats without the + explicit field still fall back to the previous address-based heuristic +3. this slice still does not claim broad failover or promotion closure by itself diff --git a/sw-block/.private/phase/phase-16.md b/sw-block/.private/phase/phase-16.md index 52fd6bc52..ed488e7bb 100644 --- a/sw-block/.private/phase/phase-16.md +++ b/sw-block/.private/phase/phase-16.md @@ -455,6 +455,102 @@ Evidence: 1. focused working-tree change after `5fd9ec0ed` +### `16L`: PublishHealthy Rebinding + +Goal: + +1. close one bounded publication seam by making `weed/server` + `PublishHealthy` surfaces reflect the core-owned publication truth rather than + an adapter-local convenience bit +2. keep the slice limited to publication-health rebinding at the current + server/debug/readiness boundary, not broad failover/publication closure + +Acceptance object: + +1. `ReadinessSnapshot.PublishHealthy` reflects core publication truth when the + core projection exists +2. mismatch/debug/readiness surfaces no longer intentionally exclude + `PublishHealthy` from the core-owned publication owner +3. call sites that really need readiness/eligibility rather than publication + health are updated to use the correct readiness field +4. this slice still does not yet claim broad failover/publication closure + +Current chosen path: + +1. rebind `PublishHealthy` from adapter-local state to core + `Publication.Healthy` on the core-present path +2. update boundary comments and focused tests to match the rebinding +3. keep adapter-local readiness booleans only for truly local readiness state + +Status: + +1. delivered + +Delivered result: + +1. `ReadinessSnapshot.PublishHealthy` now mirrors core + `Publication.Healthy` when the core projection exists +2. `CoreProjectionMismatches` no longer treats `PublishHealthy` as an excluded + publication seam +3. call sites that only needed readiness/eligibility now use readiness fields + rather than publication health as a proxy + +Evidence: + +1. focused working-tree change after `43dbebfa0` + +### `16M`: ReplicaReady Heartbeat Truth Rebinding + +Goal: + +1. close one bounded failover/publication seam by making replica heartbeat + consume carry an explicit `ReplicaReady` truth rather than forcing the master + registry to infer readiness from replica transport address presence +2. keep the slice limited to the current heartbeat wire and master-registry + consume path, not broad failover/promotion closure + +Acceptance object: + +1. `BlockVolumeInfoMessage` carries an explicit replica-ready bit on the + heartbeat wire +2. `weed/server` heartbeat emission sets that bit from the same core-owned + readiness truth already used at the server boundary on the core-present path +3. `master_block_registry` consumes explicit replica readiness from heartbeat + first and uses address presence only as a backward-compat fallback +4. focused proofs show master-side `ReplicaReady` and `VolumeMode` follow the + explicit heartbeat truth rather than a transport-address heuristic +5. this slice still does not yet claim broad failover/promotion closure + +Current chosen path: + +1. widen `master.proto` / heartbeat conversion with an additive + `replica_ready` field +2. emit that field from `CollectBlockVolumeHeartbeat` using the current bounded + core-owned readiness gate +3. update registry consume and focused tests without broadening into unrelated + promotion logic + +Status: + +1. delivered + +Delivered result: + +1. `BlockVolumeInfoMessage` now carries additive explicit `replica_ready` + heartbeat truth on the wire +2. `weed/server` heartbeat emission now exports explicit bounded + `ReplicaReady` truth from the same core-owned readiness gate already used at + the server boundary +3. `master_block_registry` now prefers explicit heartbeat `ReplicaReady` when + present and falls back to transport-address inference only for older + heartbeats without the field +4. focused proofs now show master-side `ReplicaReady` and `VolumeMode` follow + explicit heartbeat truth rather than transport-address presence alone + +Evidence: + +1. focused working-tree change after `16L` closeout + ## Current Checkpoint Review Target The current review target is the current widened bounded runtime checkpoint @@ -525,11 +621,18 @@ boundary: 12. `16K` delivered: - replica-scoped recovery invalidation no longer depends on a remaining volume-wide invalidation seam +13. `16L` delivered: + - `PublishHealthy` is rebound from adapter-local status to the core-owned + publication owner at the server boundary +14. `16M` delivered: + - replica heartbeat/master consume now carries explicit bounded + `ReplicaReady` truth with backward-compatible fallback for older + heartbeats After this checkpoint: 1. keep `legacy P4` only as a compatibility guard -2. continue closing broader recovery-loop gaps one bounded seam at a time after - replica-scoped invalidation +2. continue closing broader recovery-loop and publication seams one bounded step + at a time after `PublishHealthy` rebinding 3. do not yet claim full recovery-loop closure 4. do not broaden into launch claims diff --git a/weed/pb/master.proto b/weed/pb/master.proto index 22ecf5eea..6d566fabb 100644 --- a/weed/pb/master.proto +++ b/weed/pb/master.proto @@ -512,6 +512,7 @@ message BlockVolumeInfoMessage { string durability_mode = 16; string nvme_addr = 17; string nqn = 18; + optional bool replica_ready = 19; } message BlockVolumeShortInfoMessage { diff --git a/weed/pb/master_pb/master.pb.go b/weed/pb/master_pb/master.pb.go index 295e23fe5..bef388de4 100644 --- a/weed/pb/master_pb/master.pb.go +++ b/weed/pb/master_pb/master.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.36.11 // protoc v3.21.12 -// source: master.proto +// source: weed/pb/master.proto package master_pb @@ -62,7 +62,7 @@ type Heartbeat struct { func (x *Heartbeat) Reset() { *x = Heartbeat{} - mi := &file_master_proto_msgTypes[0] + mi := &file_weed_pb_master_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -74,7 +74,7 @@ func (x *Heartbeat) String() string { func (*Heartbeat) ProtoMessage() {} func (x *Heartbeat) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[0] + mi := &file_weed_pb_master_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87,7 +87,7 @@ func (x *Heartbeat) ProtoReflect() protoreflect.Message { // Deprecated: Use Heartbeat.ProtoReflect.Descriptor instead. func (*Heartbeat) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{0} + return file_weed_pb_master_proto_rawDescGZIP(), []int{0} } func (x *Heartbeat) GetIp() string { @@ -281,7 +281,7 @@ type HeartbeatResponse struct { func (x *HeartbeatResponse) Reset() { *x = HeartbeatResponse{} - mi := &file_master_proto_msgTypes[1] + mi := &file_weed_pb_master_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -293,7 +293,7 @@ func (x *HeartbeatResponse) String() string { func (*HeartbeatResponse) ProtoMessage() {} func (x *HeartbeatResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[1] + mi := &file_weed_pb_master_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -306,7 +306,7 @@ func (x *HeartbeatResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HeartbeatResponse.ProtoReflect.Descriptor instead. func (*HeartbeatResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{1} + return file_weed_pb_master_proto_rawDescGZIP(), []int{1} } func (x *HeartbeatResponse) GetVolumeSizeLimit() uint64 { @@ -389,7 +389,7 @@ type VolumeInformationMessage struct { func (x *VolumeInformationMessage) Reset() { *x = VolumeInformationMessage{} - mi := &file_master_proto_msgTypes[2] + mi := &file_weed_pb_master_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -401,7 +401,7 @@ func (x *VolumeInformationMessage) String() string { func (*VolumeInformationMessage) ProtoMessage() {} func (x *VolumeInformationMessage) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[2] + mi := &file_weed_pb_master_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -414,7 +414,7 @@ func (x *VolumeInformationMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeInformationMessage.ProtoReflect.Descriptor instead. func (*VolumeInformationMessage) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{2} + return file_weed_pb_master_proto_rawDescGZIP(), []int{2} } func (x *VolumeInformationMessage) GetId() uint32 { @@ -544,7 +544,7 @@ type VolumeShortInformationMessage struct { func (x *VolumeShortInformationMessage) Reset() { *x = VolumeShortInformationMessage{} - mi := &file_master_proto_msgTypes[3] + mi := &file_weed_pb_master_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -556,7 +556,7 @@ func (x *VolumeShortInformationMessage) String() string { func (*VolumeShortInformationMessage) ProtoMessage() {} func (x *VolumeShortInformationMessage) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[3] + mi := &file_weed_pb_master_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -569,7 +569,7 @@ func (x *VolumeShortInformationMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeShortInformationMessage.ProtoReflect.Descriptor instead. func (*VolumeShortInformationMessage) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{3} + return file_weed_pb_master_proto_rawDescGZIP(), []int{3} } func (x *VolumeShortInformationMessage) GetId() uint32 { @@ -636,7 +636,7 @@ type VolumeEcShardInformationMessage struct { func (x *VolumeEcShardInformationMessage) Reset() { *x = VolumeEcShardInformationMessage{} - mi := &file_master_proto_msgTypes[4] + mi := &file_weed_pb_master_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -648,7 +648,7 @@ func (x *VolumeEcShardInformationMessage) String() string { func (*VolumeEcShardInformationMessage) ProtoMessage() {} func (x *VolumeEcShardInformationMessage) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[4] + mi := &file_weed_pb_master_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -661,7 +661,7 @@ func (x *VolumeEcShardInformationMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeEcShardInformationMessage.ProtoReflect.Descriptor instead. func (*VolumeEcShardInformationMessage) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{4} + return file_weed_pb_master_proto_rawDescGZIP(), []int{4} } func (x *VolumeEcShardInformationMessage) GetId() uint32 { @@ -724,7 +724,7 @@ type StorageBackend struct { func (x *StorageBackend) Reset() { *x = StorageBackend{} - mi := &file_master_proto_msgTypes[5] + mi := &file_weed_pb_master_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -736,7 +736,7 @@ func (x *StorageBackend) String() string { func (*StorageBackend) ProtoMessage() {} func (x *StorageBackend) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[5] + mi := &file_weed_pb_master_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -749,7 +749,7 @@ func (x *StorageBackend) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageBackend.ProtoReflect.Descriptor instead. func (*StorageBackend) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{5} + return file_weed_pb_master_proto_rawDescGZIP(), []int{5} } func (x *StorageBackend) GetType() string { @@ -781,7 +781,7 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} - mi := &file_master_proto_msgTypes[6] + mi := &file_weed_pb_master_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -793,7 +793,7 @@ func (x *Empty) String() string { func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[6] + mi := &file_weed_pb_master_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -806,7 +806,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{6} + return file_weed_pb_master_proto_rawDescGZIP(), []int{6} } type SuperBlockExtra struct { @@ -818,7 +818,7 @@ type SuperBlockExtra struct { func (x *SuperBlockExtra) Reset() { *x = SuperBlockExtra{} - mi := &file_master_proto_msgTypes[7] + mi := &file_weed_pb_master_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -830,7 +830,7 @@ func (x *SuperBlockExtra) String() string { func (*SuperBlockExtra) ProtoMessage() {} func (x *SuperBlockExtra) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[7] + mi := &file_weed_pb_master_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -843,7 +843,7 @@ func (x *SuperBlockExtra) ProtoReflect() protoreflect.Message { // Deprecated: Use SuperBlockExtra.ProtoReflect.Descriptor instead. func (*SuperBlockExtra) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{7} + return file_weed_pb_master_proto_rawDescGZIP(), []int{7} } func (x *SuperBlockExtra) GetErasureCoding() *SuperBlockExtra_ErasureCoding { @@ -867,7 +867,7 @@ type KeepConnectedRequest struct { func (x *KeepConnectedRequest) Reset() { *x = KeepConnectedRequest{} - mi := &file_master_proto_msgTypes[8] + mi := &file_weed_pb_master_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -879,7 +879,7 @@ func (x *KeepConnectedRequest) String() string { func (*KeepConnectedRequest) ProtoMessage() {} func (x *KeepConnectedRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[8] + mi := &file_weed_pb_master_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -892,7 +892,7 @@ func (x *KeepConnectedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use KeepConnectedRequest.ProtoReflect.Descriptor instead. func (*KeepConnectedRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{8} + return file_weed_pb_master_proto_rawDescGZIP(), []int{8} } func (x *KeepConnectedRequest) GetClientType() string { @@ -954,7 +954,7 @@ type VolumeLocation struct { func (x *VolumeLocation) Reset() { *x = VolumeLocation{} - mi := &file_master_proto_msgTypes[9] + mi := &file_weed_pb_master_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -966,7 +966,7 @@ func (x *VolumeLocation) String() string { func (*VolumeLocation) ProtoMessage() {} func (x *VolumeLocation) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[9] + mi := &file_weed_pb_master_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -979,7 +979,7 @@ func (x *VolumeLocation) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeLocation.ProtoReflect.Descriptor instead. func (*VolumeLocation) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{9} + return file_weed_pb_master_proto_rawDescGZIP(), []int{9} } func (x *VolumeLocation) GetUrl() string { @@ -1058,7 +1058,7 @@ type ClusterNodeUpdate struct { func (x *ClusterNodeUpdate) Reset() { *x = ClusterNodeUpdate{} - mi := &file_master_proto_msgTypes[10] + mi := &file_weed_pb_master_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1070,7 +1070,7 @@ func (x *ClusterNodeUpdate) String() string { func (*ClusterNodeUpdate) ProtoMessage() {} func (x *ClusterNodeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[10] + mi := &file_weed_pb_master_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1083,7 +1083,7 @@ func (x *ClusterNodeUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterNodeUpdate.ProtoReflect.Descriptor instead. func (*ClusterNodeUpdate) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{10} + return file_weed_pb_master_proto_rawDescGZIP(), []int{10} } func (x *ClusterNodeUpdate) GetNodeType() string { @@ -1131,7 +1131,7 @@ type KeepConnectedResponse struct { func (x *KeepConnectedResponse) Reset() { *x = KeepConnectedResponse{} - mi := &file_master_proto_msgTypes[11] + mi := &file_weed_pb_master_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1143,7 +1143,7 @@ func (x *KeepConnectedResponse) String() string { func (*KeepConnectedResponse) ProtoMessage() {} func (x *KeepConnectedResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[11] + mi := &file_weed_pb_master_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1156,7 +1156,7 @@ func (x *KeepConnectedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use KeepConnectedResponse.ProtoReflect.Descriptor instead. func (*KeepConnectedResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{11} + return file_weed_pb_master_proto_rawDescGZIP(), []int{11} } func (x *KeepConnectedResponse) GetVolumeLocation() *VolumeLocation { @@ -1183,7 +1183,7 @@ type LookupVolumeRequest struct { func (x *LookupVolumeRequest) Reset() { *x = LookupVolumeRequest{} - mi := &file_master_proto_msgTypes[12] + mi := &file_weed_pb_master_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1195,7 +1195,7 @@ func (x *LookupVolumeRequest) String() string { func (*LookupVolumeRequest) ProtoMessage() {} func (x *LookupVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[12] + mi := &file_weed_pb_master_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1208,7 +1208,7 @@ func (x *LookupVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupVolumeRequest.ProtoReflect.Descriptor instead. func (*LookupVolumeRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{12} + return file_weed_pb_master_proto_rawDescGZIP(), []int{12} } func (x *LookupVolumeRequest) GetVolumeOrFileIds() []string { @@ -1234,7 +1234,7 @@ type LookupVolumeResponse struct { func (x *LookupVolumeResponse) Reset() { *x = LookupVolumeResponse{} - mi := &file_master_proto_msgTypes[13] + mi := &file_weed_pb_master_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1246,7 +1246,7 @@ func (x *LookupVolumeResponse) String() string { func (*LookupVolumeResponse) ProtoMessage() {} func (x *LookupVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[13] + mi := &file_weed_pb_master_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1259,7 +1259,7 @@ func (x *LookupVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupVolumeResponse.ProtoReflect.Descriptor instead. func (*LookupVolumeResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{13} + return file_weed_pb_master_proto_rawDescGZIP(), []int{13} } func (x *LookupVolumeResponse) GetVolumeIdLocations() []*LookupVolumeResponse_VolumeIdLocation { @@ -1281,7 +1281,7 @@ type Location struct { func (x *Location) Reset() { *x = Location{} - mi := &file_master_proto_msgTypes[14] + mi := &file_weed_pb_master_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1293,7 +1293,7 @@ func (x *Location) String() string { func (*Location) ProtoMessage() {} func (x *Location) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[14] + mi := &file_weed_pb_master_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1306,7 +1306,7 @@ func (x *Location) ProtoReflect() protoreflect.Message { // Deprecated: Use Location.ProtoReflect.Descriptor instead. func (*Location) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{14} + return file_weed_pb_master_proto_rawDescGZIP(), []int{14} } func (x *Location) GetUrl() string { @@ -1355,7 +1355,7 @@ type AssignRequest struct { func (x *AssignRequest) Reset() { *x = AssignRequest{} - mi := &file_master_proto_msgTypes[15] + mi := &file_weed_pb_master_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1367,7 +1367,7 @@ func (x *AssignRequest) String() string { func (*AssignRequest) ProtoMessage() {} func (x *AssignRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[15] + mi := &file_weed_pb_master_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1380,7 +1380,7 @@ func (x *AssignRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignRequest.ProtoReflect.Descriptor instead. func (*AssignRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{15} + return file_weed_pb_master_proto_rawDescGZIP(), []int{15} } func (x *AssignRequest) GetCount() uint64 { @@ -1470,7 +1470,7 @@ type VolumeGrowRequest struct { func (x *VolumeGrowRequest) Reset() { *x = VolumeGrowRequest{} - mi := &file_master_proto_msgTypes[16] + mi := &file_weed_pb_master_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1482,7 +1482,7 @@ func (x *VolumeGrowRequest) String() string { func (*VolumeGrowRequest) ProtoMessage() {} func (x *VolumeGrowRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[16] + mi := &file_weed_pb_master_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1495,7 +1495,7 @@ func (x *VolumeGrowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeGrowRequest.ProtoReflect.Descriptor instead. func (*VolumeGrowRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{16} + return file_weed_pb_master_proto_rawDescGZIP(), []int{16} } func (x *VolumeGrowRequest) GetWritableVolumeCount() uint32 { @@ -1575,7 +1575,7 @@ type AssignResponse struct { func (x *AssignResponse) Reset() { *x = AssignResponse{} - mi := &file_master_proto_msgTypes[17] + mi := &file_weed_pb_master_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1587,7 +1587,7 @@ func (x *AssignResponse) String() string { func (*AssignResponse) ProtoMessage() {} func (x *AssignResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[17] + mi := &file_weed_pb_master_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1600,7 +1600,7 @@ func (x *AssignResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignResponse.ProtoReflect.Descriptor instead. func (*AssignResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{17} + return file_weed_pb_master_proto_rawDescGZIP(), []int{17} } func (x *AssignResponse) GetFid() string { @@ -1657,7 +1657,7 @@ type StatisticsRequest struct { func (x *StatisticsRequest) Reset() { *x = StatisticsRequest{} - mi := &file_master_proto_msgTypes[18] + mi := &file_weed_pb_master_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1669,7 +1669,7 @@ func (x *StatisticsRequest) String() string { func (*StatisticsRequest) ProtoMessage() {} func (x *StatisticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[18] + mi := &file_weed_pb_master_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1682,7 +1682,7 @@ func (x *StatisticsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatisticsRequest.ProtoReflect.Descriptor instead. func (*StatisticsRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{18} + return file_weed_pb_master_proto_rawDescGZIP(), []int{18} } func (x *StatisticsRequest) GetReplication() string { @@ -1724,7 +1724,7 @@ type StatisticsResponse struct { func (x *StatisticsResponse) Reset() { *x = StatisticsResponse{} - mi := &file_master_proto_msgTypes[19] + mi := &file_weed_pb_master_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1736,7 +1736,7 @@ func (x *StatisticsResponse) String() string { func (*StatisticsResponse) ProtoMessage() {} func (x *StatisticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[19] + mi := &file_weed_pb_master_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1749,7 +1749,7 @@ func (x *StatisticsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StatisticsResponse.ProtoReflect.Descriptor instead. func (*StatisticsResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{19} + return file_weed_pb_master_proto_rawDescGZIP(), []int{19} } func (x *StatisticsResponse) GetTotalSize() uint64 { @@ -1773,9 +1773,7 @@ func (x *StatisticsResponse) GetFileCount() uint64 { return 0 } -// // collection related -// type Collection struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -1785,7 +1783,7 @@ type Collection struct { func (x *Collection) Reset() { *x = Collection{} - mi := &file_master_proto_msgTypes[20] + mi := &file_weed_pb_master_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1797,7 +1795,7 @@ func (x *Collection) String() string { func (*Collection) ProtoMessage() {} func (x *Collection) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[20] + mi := &file_weed_pb_master_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1810,7 +1808,7 @@ func (x *Collection) ProtoReflect() protoreflect.Message { // Deprecated: Use Collection.ProtoReflect.Descriptor instead. func (*Collection) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{20} + return file_weed_pb_master_proto_rawDescGZIP(), []int{20} } func (x *Collection) GetName() string { @@ -1830,7 +1828,7 @@ type CollectionListRequest struct { func (x *CollectionListRequest) Reset() { *x = CollectionListRequest{} - mi := &file_master_proto_msgTypes[21] + mi := &file_weed_pb_master_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1842,7 +1840,7 @@ func (x *CollectionListRequest) String() string { func (*CollectionListRequest) ProtoMessage() {} func (x *CollectionListRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[21] + mi := &file_weed_pb_master_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1855,7 +1853,7 @@ func (x *CollectionListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionListRequest.ProtoReflect.Descriptor instead. func (*CollectionListRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{21} + return file_weed_pb_master_proto_rawDescGZIP(), []int{21} } func (x *CollectionListRequest) GetIncludeNormalVolumes() bool { @@ -1881,7 +1879,7 @@ type CollectionListResponse struct { func (x *CollectionListResponse) Reset() { *x = CollectionListResponse{} - mi := &file_master_proto_msgTypes[22] + mi := &file_weed_pb_master_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1893,7 +1891,7 @@ func (x *CollectionListResponse) String() string { func (*CollectionListResponse) ProtoMessage() {} func (x *CollectionListResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[22] + mi := &file_weed_pb_master_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1906,7 +1904,7 @@ func (x *CollectionListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionListResponse.ProtoReflect.Descriptor instead. func (*CollectionListResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{22} + return file_weed_pb_master_proto_rawDescGZIP(), []int{22} } func (x *CollectionListResponse) GetCollections() []*Collection { @@ -1925,7 +1923,7 @@ type CollectionDeleteRequest struct { func (x *CollectionDeleteRequest) Reset() { *x = CollectionDeleteRequest{} - mi := &file_master_proto_msgTypes[23] + mi := &file_weed_pb_master_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1937,7 +1935,7 @@ func (x *CollectionDeleteRequest) String() string { func (*CollectionDeleteRequest) ProtoMessage() {} func (x *CollectionDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[23] + mi := &file_weed_pb_master_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1950,7 +1948,7 @@ func (x *CollectionDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionDeleteRequest.ProtoReflect.Descriptor instead. func (*CollectionDeleteRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{23} + return file_weed_pb_master_proto_rawDescGZIP(), []int{23} } func (x *CollectionDeleteRequest) GetName() string { @@ -1968,7 +1966,7 @@ type CollectionDeleteResponse struct { func (x *CollectionDeleteResponse) Reset() { *x = CollectionDeleteResponse{} - mi := &file_master_proto_msgTypes[24] + mi := &file_weed_pb_master_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1980,7 +1978,7 @@ func (x *CollectionDeleteResponse) String() string { func (*CollectionDeleteResponse) ProtoMessage() {} func (x *CollectionDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[24] + mi := &file_weed_pb_master_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1993,12 +1991,10 @@ func (x *CollectionDeleteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionDeleteResponse.ProtoReflect.Descriptor instead. func (*CollectionDeleteResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{24} + return file_weed_pb_master_proto_rawDescGZIP(), []int{24} } -// // volume related -// type DiskInfo struct { state protoimpl.MessageState `protogen:"open.v1"` Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` @@ -2016,7 +2012,7 @@ type DiskInfo struct { func (x *DiskInfo) Reset() { *x = DiskInfo{} - mi := &file_master_proto_msgTypes[25] + mi := &file_weed_pb_master_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2028,7 +2024,7 @@ func (x *DiskInfo) String() string { func (*DiskInfo) ProtoMessage() {} func (x *DiskInfo) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[25] + mi := &file_weed_pb_master_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2041,7 +2037,7 @@ func (x *DiskInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DiskInfo.ProtoReflect.Descriptor instead. func (*DiskInfo) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{25} + return file_weed_pb_master_proto_rawDescGZIP(), []int{25} } func (x *DiskInfo) GetType() string { @@ -2119,7 +2115,7 @@ type DataNodeInfo struct { func (x *DataNodeInfo) Reset() { *x = DataNodeInfo{} - mi := &file_master_proto_msgTypes[26] + mi := &file_weed_pb_master_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2131,7 +2127,7 @@ func (x *DataNodeInfo) String() string { func (*DataNodeInfo) ProtoMessage() {} func (x *DataNodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[26] + mi := &file_weed_pb_master_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2144,7 +2140,7 @@ func (x *DataNodeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DataNodeInfo.ProtoReflect.Descriptor instead. func (*DataNodeInfo) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{26} + return file_weed_pb_master_proto_rawDescGZIP(), []int{26} } func (x *DataNodeInfo) GetId() string { @@ -2186,7 +2182,7 @@ type RackInfo struct { func (x *RackInfo) Reset() { *x = RackInfo{} - mi := &file_master_proto_msgTypes[27] + mi := &file_weed_pb_master_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2198,7 +2194,7 @@ func (x *RackInfo) String() string { func (*RackInfo) ProtoMessage() {} func (x *RackInfo) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[27] + mi := &file_weed_pb_master_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +2207,7 @@ func (x *RackInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RackInfo.ProtoReflect.Descriptor instead. func (*RackInfo) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{27} + return file_weed_pb_master_proto_rawDescGZIP(), []int{27} } func (x *RackInfo) GetId() string { @@ -2246,7 +2242,7 @@ type DataCenterInfo struct { func (x *DataCenterInfo) Reset() { *x = DataCenterInfo{} - mi := &file_master_proto_msgTypes[28] + mi := &file_weed_pb_master_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2258,7 +2254,7 @@ func (x *DataCenterInfo) String() string { func (*DataCenterInfo) ProtoMessage() {} func (x *DataCenterInfo) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[28] + mi := &file_weed_pb_master_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2271,7 +2267,7 @@ func (x *DataCenterInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DataCenterInfo.ProtoReflect.Descriptor instead. func (*DataCenterInfo) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{28} + return file_weed_pb_master_proto_rawDescGZIP(), []int{28} } func (x *DataCenterInfo) GetId() string { @@ -2306,7 +2302,7 @@ type TopologyInfo struct { func (x *TopologyInfo) Reset() { *x = TopologyInfo{} - mi := &file_master_proto_msgTypes[29] + mi := &file_weed_pb_master_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2318,7 +2314,7 @@ func (x *TopologyInfo) String() string { func (*TopologyInfo) ProtoMessage() {} func (x *TopologyInfo) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[29] + mi := &file_weed_pb_master_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2331,7 +2327,7 @@ func (x *TopologyInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TopologyInfo.ProtoReflect.Descriptor instead. func (*TopologyInfo) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{29} + return file_weed_pb_master_proto_rawDescGZIP(), []int{29} } func (x *TopologyInfo) GetId() string { @@ -2363,7 +2359,7 @@ type VolumeListRequest struct { func (x *VolumeListRequest) Reset() { *x = VolumeListRequest{} - mi := &file_master_proto_msgTypes[30] + mi := &file_weed_pb_master_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2375,7 +2371,7 @@ func (x *VolumeListRequest) String() string { func (*VolumeListRequest) ProtoMessage() {} func (x *VolumeListRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[30] + mi := &file_weed_pb_master_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2388,7 +2384,7 @@ func (x *VolumeListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeListRequest.ProtoReflect.Descriptor instead. func (*VolumeListRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{30} + return file_weed_pb_master_proto_rawDescGZIP(), []int{30} } type VolumeListResponse struct { @@ -2401,7 +2397,7 @@ type VolumeListResponse struct { func (x *VolumeListResponse) Reset() { *x = VolumeListResponse{} - mi := &file_master_proto_msgTypes[31] + mi := &file_weed_pb_master_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2413,7 +2409,7 @@ func (x *VolumeListResponse) String() string { func (*VolumeListResponse) ProtoMessage() {} func (x *VolumeListResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[31] + mi := &file_weed_pb_master_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2426,7 +2422,7 @@ func (x *VolumeListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeListResponse.ProtoReflect.Descriptor instead. func (*VolumeListResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{31} + return file_weed_pb_master_proto_rawDescGZIP(), []int{31} } func (x *VolumeListResponse) GetTopologyInfo() *TopologyInfo { @@ -2452,7 +2448,7 @@ type LookupEcVolumeRequest struct { func (x *LookupEcVolumeRequest) Reset() { *x = LookupEcVolumeRequest{} - mi := &file_master_proto_msgTypes[32] + mi := &file_weed_pb_master_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2464,7 +2460,7 @@ func (x *LookupEcVolumeRequest) String() string { func (*LookupEcVolumeRequest) ProtoMessage() {} func (x *LookupEcVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[32] + mi := &file_weed_pb_master_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2477,7 +2473,7 @@ func (x *LookupEcVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupEcVolumeRequest.ProtoReflect.Descriptor instead. func (*LookupEcVolumeRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{32} + return file_weed_pb_master_proto_rawDescGZIP(), []int{32} } func (x *LookupEcVolumeRequest) GetVolumeId() uint32 { @@ -2497,7 +2493,7 @@ type LookupEcVolumeResponse struct { func (x *LookupEcVolumeResponse) Reset() { *x = LookupEcVolumeResponse{} - mi := &file_master_proto_msgTypes[33] + mi := &file_weed_pb_master_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2509,7 +2505,7 @@ func (x *LookupEcVolumeResponse) String() string { func (*LookupEcVolumeResponse) ProtoMessage() {} func (x *LookupEcVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[33] + mi := &file_weed_pb_master_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2522,7 +2518,7 @@ func (x *LookupEcVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupEcVolumeResponse.ProtoReflect.Descriptor instead. func (*LookupEcVolumeResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{33} + return file_weed_pb_master_proto_rawDescGZIP(), []int{33} } func (x *LookupEcVolumeResponse) GetVolumeId() uint32 { @@ -2550,7 +2546,7 @@ type VacuumVolumeRequest struct { func (x *VacuumVolumeRequest) Reset() { *x = VacuumVolumeRequest{} - mi := &file_master_proto_msgTypes[34] + mi := &file_weed_pb_master_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2562,7 +2558,7 @@ func (x *VacuumVolumeRequest) String() string { func (*VacuumVolumeRequest) ProtoMessage() {} func (x *VacuumVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[34] + mi := &file_weed_pb_master_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2575,7 +2571,7 @@ func (x *VacuumVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VacuumVolumeRequest.ProtoReflect.Descriptor instead. func (*VacuumVolumeRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{34} + return file_weed_pb_master_proto_rawDescGZIP(), []int{34} } func (x *VacuumVolumeRequest) GetGarbageThreshold() float32 { @@ -2607,7 +2603,7 @@ type VacuumVolumeResponse struct { func (x *VacuumVolumeResponse) Reset() { *x = VacuumVolumeResponse{} - mi := &file_master_proto_msgTypes[35] + mi := &file_weed_pb_master_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2619,7 +2615,7 @@ func (x *VacuumVolumeResponse) String() string { func (*VacuumVolumeResponse) ProtoMessage() {} func (x *VacuumVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[35] + mi := &file_weed_pb_master_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2632,7 +2628,7 @@ func (x *VacuumVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VacuumVolumeResponse.ProtoReflect.Descriptor instead. func (*VacuumVolumeResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{35} + return file_weed_pb_master_proto_rawDescGZIP(), []int{35} } type DisableVacuumRequest struct { @@ -2643,7 +2639,7 @@ type DisableVacuumRequest struct { func (x *DisableVacuumRequest) Reset() { *x = DisableVacuumRequest{} - mi := &file_master_proto_msgTypes[36] + mi := &file_weed_pb_master_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2655,7 +2651,7 @@ func (x *DisableVacuumRequest) String() string { func (*DisableVacuumRequest) ProtoMessage() {} func (x *DisableVacuumRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[36] + mi := &file_weed_pb_master_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2668,7 +2664,7 @@ func (x *DisableVacuumRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableVacuumRequest.ProtoReflect.Descriptor instead. func (*DisableVacuumRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{36} + return file_weed_pb_master_proto_rawDescGZIP(), []int{36} } type DisableVacuumResponse struct { @@ -2679,7 +2675,7 @@ type DisableVacuumResponse struct { func (x *DisableVacuumResponse) Reset() { *x = DisableVacuumResponse{} - mi := &file_master_proto_msgTypes[37] + mi := &file_weed_pb_master_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2691,7 +2687,7 @@ func (x *DisableVacuumResponse) String() string { func (*DisableVacuumResponse) ProtoMessage() {} func (x *DisableVacuumResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[37] + mi := &file_weed_pb_master_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2704,7 +2700,7 @@ func (x *DisableVacuumResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableVacuumResponse.ProtoReflect.Descriptor instead. func (*DisableVacuumResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{37} + return file_weed_pb_master_proto_rawDescGZIP(), []int{37} } type EnableVacuumRequest struct { @@ -2715,7 +2711,7 @@ type EnableVacuumRequest struct { func (x *EnableVacuumRequest) Reset() { *x = EnableVacuumRequest{} - mi := &file_master_proto_msgTypes[38] + mi := &file_weed_pb_master_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2727,7 +2723,7 @@ func (x *EnableVacuumRequest) String() string { func (*EnableVacuumRequest) ProtoMessage() {} func (x *EnableVacuumRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[38] + mi := &file_weed_pb_master_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2740,7 +2736,7 @@ func (x *EnableVacuumRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableVacuumRequest.ProtoReflect.Descriptor instead. func (*EnableVacuumRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{38} + return file_weed_pb_master_proto_rawDescGZIP(), []int{38} } type EnableVacuumResponse struct { @@ -2751,7 +2747,7 @@ type EnableVacuumResponse struct { func (x *EnableVacuumResponse) Reset() { *x = EnableVacuumResponse{} - mi := &file_master_proto_msgTypes[39] + mi := &file_weed_pb_master_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2763,7 +2759,7 @@ func (x *EnableVacuumResponse) String() string { func (*EnableVacuumResponse) ProtoMessage() {} func (x *EnableVacuumResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[39] + mi := &file_weed_pb_master_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2776,7 +2772,7 @@ func (x *EnableVacuumResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableVacuumResponse.ProtoReflect.Descriptor instead. func (*EnableVacuumResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{39} + return file_weed_pb_master_proto_rawDescGZIP(), []int{39} } type VolumeMarkReadonlyRequest struct { @@ -2796,7 +2792,7 @@ type VolumeMarkReadonlyRequest struct { func (x *VolumeMarkReadonlyRequest) Reset() { *x = VolumeMarkReadonlyRequest{} - mi := &file_master_proto_msgTypes[40] + mi := &file_weed_pb_master_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2808,7 +2804,7 @@ func (x *VolumeMarkReadonlyRequest) String() string { func (*VolumeMarkReadonlyRequest) ProtoMessage() {} func (x *VolumeMarkReadonlyRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[40] + mi := &file_weed_pb_master_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2821,7 +2817,7 @@ func (x *VolumeMarkReadonlyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeMarkReadonlyRequest.ProtoReflect.Descriptor instead. func (*VolumeMarkReadonlyRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{40} + return file_weed_pb_master_proto_rawDescGZIP(), []int{40} } func (x *VolumeMarkReadonlyRequest) GetIp() string { @@ -2895,7 +2891,7 @@ type VolumeMarkReadonlyResponse struct { func (x *VolumeMarkReadonlyResponse) Reset() { *x = VolumeMarkReadonlyResponse{} - mi := &file_master_proto_msgTypes[41] + mi := &file_weed_pb_master_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2907,7 +2903,7 @@ func (x *VolumeMarkReadonlyResponse) String() string { func (*VolumeMarkReadonlyResponse) ProtoMessage() {} func (x *VolumeMarkReadonlyResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[41] + mi := &file_weed_pb_master_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2920,7 +2916,7 @@ func (x *VolumeMarkReadonlyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeMarkReadonlyResponse.ProtoReflect.Descriptor instead. func (*VolumeMarkReadonlyResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{41} + return file_weed_pb_master_proto_rawDescGZIP(), []int{41} } type GetMasterConfigurationRequest struct { @@ -2931,7 +2927,7 @@ type GetMasterConfigurationRequest struct { func (x *GetMasterConfigurationRequest) Reset() { *x = GetMasterConfigurationRequest{} - mi := &file_master_proto_msgTypes[42] + mi := &file_weed_pb_master_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2943,7 +2939,7 @@ func (x *GetMasterConfigurationRequest) String() string { func (*GetMasterConfigurationRequest) ProtoMessage() {} func (x *GetMasterConfigurationRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[42] + mi := &file_weed_pb_master_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2956,7 +2952,7 @@ func (x *GetMasterConfigurationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMasterConfigurationRequest.ProtoReflect.Descriptor instead. func (*GetMasterConfigurationRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{42} + return file_weed_pb_master_proto_rawDescGZIP(), []int{42} } type GetMasterConfigurationResponse struct { @@ -2974,7 +2970,7 @@ type GetMasterConfigurationResponse struct { func (x *GetMasterConfigurationResponse) Reset() { *x = GetMasterConfigurationResponse{} - mi := &file_master_proto_msgTypes[43] + mi := &file_weed_pb_master_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2986,7 +2982,7 @@ func (x *GetMasterConfigurationResponse) String() string { func (*GetMasterConfigurationResponse) ProtoMessage() {} func (x *GetMasterConfigurationResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[43] + mi := &file_weed_pb_master_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2999,7 +2995,7 @@ func (x *GetMasterConfigurationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMasterConfigurationResponse.ProtoReflect.Descriptor instead. func (*GetMasterConfigurationResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{43} + return file_weed_pb_master_proto_rawDescGZIP(), []int{43} } func (x *GetMasterConfigurationResponse) GetMetricsAddress() string { @@ -3062,7 +3058,7 @@ type ListClusterNodesRequest struct { func (x *ListClusterNodesRequest) Reset() { *x = ListClusterNodesRequest{} - mi := &file_master_proto_msgTypes[44] + mi := &file_weed_pb_master_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3074,7 +3070,7 @@ func (x *ListClusterNodesRequest) String() string { func (*ListClusterNodesRequest) ProtoMessage() {} func (x *ListClusterNodesRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[44] + mi := &file_weed_pb_master_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3087,7 +3083,7 @@ func (x *ListClusterNodesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClusterNodesRequest.ProtoReflect.Descriptor instead. func (*ListClusterNodesRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{44} + return file_weed_pb_master_proto_rawDescGZIP(), []int{44} } func (x *ListClusterNodesRequest) GetClientType() string { @@ -3120,7 +3116,7 @@ type ListClusterNodesResponse struct { func (x *ListClusterNodesResponse) Reset() { *x = ListClusterNodesResponse{} - mi := &file_master_proto_msgTypes[45] + mi := &file_weed_pb_master_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3132,7 +3128,7 @@ func (x *ListClusterNodesResponse) String() string { func (*ListClusterNodesResponse) ProtoMessage() {} func (x *ListClusterNodesResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[45] + mi := &file_weed_pb_master_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3145,7 +3141,7 @@ func (x *ListClusterNodesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClusterNodesResponse.ProtoReflect.Descriptor instead. func (*ListClusterNodesResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{45} + return file_weed_pb_master_proto_rawDescGZIP(), []int{45} } func (x *ListClusterNodesResponse) GetClusterNodes() []*ListClusterNodesResponse_ClusterNode { @@ -3168,7 +3164,7 @@ type LeaseAdminTokenRequest struct { func (x *LeaseAdminTokenRequest) Reset() { *x = LeaseAdminTokenRequest{} - mi := &file_master_proto_msgTypes[46] + mi := &file_weed_pb_master_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3180,7 +3176,7 @@ func (x *LeaseAdminTokenRequest) String() string { func (*LeaseAdminTokenRequest) ProtoMessage() {} func (x *LeaseAdminTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[46] + mi := &file_weed_pb_master_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3193,7 +3189,7 @@ func (x *LeaseAdminTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaseAdminTokenRequest.ProtoReflect.Descriptor instead. func (*LeaseAdminTokenRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{46} + return file_weed_pb_master_proto_rawDescGZIP(), []int{46} } func (x *LeaseAdminTokenRequest) GetPreviousToken() int64 { @@ -3241,7 +3237,7 @@ type LeaseAdminTokenResponse struct { func (x *LeaseAdminTokenResponse) Reset() { *x = LeaseAdminTokenResponse{} - mi := &file_master_proto_msgTypes[47] + mi := &file_weed_pb_master_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3253,7 +3249,7 @@ func (x *LeaseAdminTokenResponse) String() string { func (*LeaseAdminTokenResponse) ProtoMessage() {} func (x *LeaseAdminTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[47] + mi := &file_weed_pb_master_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3266,7 +3262,7 @@ func (x *LeaseAdminTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaseAdminTokenResponse.ProtoReflect.Descriptor instead. func (*LeaseAdminTokenResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{47} + return file_weed_pb_master_proto_rawDescGZIP(), []int{47} } func (x *LeaseAdminTokenResponse) GetToken() int64 { @@ -3294,7 +3290,7 @@ type ReleaseAdminTokenRequest struct { func (x *ReleaseAdminTokenRequest) Reset() { *x = ReleaseAdminTokenRequest{} - mi := &file_master_proto_msgTypes[48] + mi := &file_weed_pb_master_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3306,7 +3302,7 @@ func (x *ReleaseAdminTokenRequest) String() string { func (*ReleaseAdminTokenRequest) ProtoMessage() {} func (x *ReleaseAdminTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[48] + mi := &file_weed_pb_master_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3319,7 +3315,7 @@ func (x *ReleaseAdminTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReleaseAdminTokenRequest.ProtoReflect.Descriptor instead. func (*ReleaseAdminTokenRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{48} + return file_weed_pb_master_proto_rawDescGZIP(), []int{48} } func (x *ReleaseAdminTokenRequest) GetPreviousToken() int64 { @@ -3351,7 +3347,7 @@ type ReleaseAdminTokenResponse struct { func (x *ReleaseAdminTokenResponse) Reset() { *x = ReleaseAdminTokenResponse{} - mi := &file_master_proto_msgTypes[49] + mi := &file_weed_pb_master_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3363,7 +3359,7 @@ func (x *ReleaseAdminTokenResponse) String() string { func (*ReleaseAdminTokenResponse) ProtoMessage() {} func (x *ReleaseAdminTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[49] + mi := &file_weed_pb_master_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3376,7 +3372,7 @@ func (x *ReleaseAdminTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReleaseAdminTokenResponse.ProtoReflect.Descriptor instead. func (*ReleaseAdminTokenResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{49} + return file_weed_pb_master_proto_rawDescGZIP(), []int{49} } type PingRequest struct { @@ -3389,7 +3385,7 @@ type PingRequest struct { func (x *PingRequest) Reset() { *x = PingRequest{} - mi := &file_master_proto_msgTypes[50] + mi := &file_weed_pb_master_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3401,7 +3397,7 @@ func (x *PingRequest) String() string { func (*PingRequest) ProtoMessage() {} func (x *PingRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[50] + mi := &file_weed_pb_master_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3414,7 +3410,7 @@ func (x *PingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. func (*PingRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{50} + return file_weed_pb_master_proto_rawDescGZIP(), []int{50} } func (x *PingRequest) GetTarget() string { @@ -3442,7 +3438,7 @@ type PingResponse struct { func (x *PingResponse) Reset() { *x = PingResponse{} - mi := &file_master_proto_msgTypes[51] + mi := &file_weed_pb_master_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3454,7 +3450,7 @@ func (x *PingResponse) String() string { func (*PingResponse) ProtoMessage() {} func (x *PingResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[51] + mi := &file_weed_pb_master_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3467,7 +3463,7 @@ func (x *PingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PingResponse.ProtoReflect.Descriptor instead. func (*PingResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{51} + return file_weed_pb_master_proto_rawDescGZIP(), []int{51} } func (x *PingResponse) GetStartTimeNs() int64 { @@ -3502,7 +3498,7 @@ type RaftAddServerRequest struct { func (x *RaftAddServerRequest) Reset() { *x = RaftAddServerRequest{} - mi := &file_master_proto_msgTypes[52] + mi := &file_weed_pb_master_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3514,7 +3510,7 @@ func (x *RaftAddServerRequest) String() string { func (*RaftAddServerRequest) ProtoMessage() {} func (x *RaftAddServerRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[52] + mi := &file_weed_pb_master_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3527,7 +3523,7 @@ func (x *RaftAddServerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftAddServerRequest.ProtoReflect.Descriptor instead. func (*RaftAddServerRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{52} + return file_weed_pb_master_proto_rawDescGZIP(), []int{52} } func (x *RaftAddServerRequest) GetId() string { @@ -3559,7 +3555,7 @@ type RaftAddServerResponse struct { func (x *RaftAddServerResponse) Reset() { *x = RaftAddServerResponse{} - mi := &file_master_proto_msgTypes[53] + mi := &file_weed_pb_master_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3571,7 +3567,7 @@ func (x *RaftAddServerResponse) String() string { func (*RaftAddServerResponse) ProtoMessage() {} func (x *RaftAddServerResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[53] + mi := &file_weed_pb_master_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3584,7 +3580,7 @@ func (x *RaftAddServerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftAddServerResponse.ProtoReflect.Descriptor instead. func (*RaftAddServerResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{53} + return file_weed_pb_master_proto_rawDescGZIP(), []int{53} } type RaftRemoveServerRequest struct { @@ -3597,7 +3593,7 @@ type RaftRemoveServerRequest struct { func (x *RaftRemoveServerRequest) Reset() { *x = RaftRemoveServerRequest{} - mi := &file_master_proto_msgTypes[54] + mi := &file_weed_pb_master_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3609,7 +3605,7 @@ func (x *RaftRemoveServerRequest) String() string { func (*RaftRemoveServerRequest) ProtoMessage() {} func (x *RaftRemoveServerRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[54] + mi := &file_weed_pb_master_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3622,7 +3618,7 @@ func (x *RaftRemoveServerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftRemoveServerRequest.ProtoReflect.Descriptor instead. func (*RaftRemoveServerRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{54} + return file_weed_pb_master_proto_rawDescGZIP(), []int{54} } func (x *RaftRemoveServerRequest) GetId() string { @@ -3647,7 +3643,7 @@ type RaftRemoveServerResponse struct { func (x *RaftRemoveServerResponse) Reset() { *x = RaftRemoveServerResponse{} - mi := &file_master_proto_msgTypes[55] + mi := &file_weed_pb_master_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3659,7 +3655,7 @@ func (x *RaftRemoveServerResponse) String() string { func (*RaftRemoveServerResponse) ProtoMessage() {} func (x *RaftRemoveServerResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[55] + mi := &file_weed_pb_master_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3672,7 +3668,7 @@ func (x *RaftRemoveServerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftRemoveServerResponse.ProtoReflect.Descriptor instead. func (*RaftRemoveServerResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{55} + return file_weed_pb_master_proto_rawDescGZIP(), []int{55} } type RaftListClusterServersRequest struct { @@ -3683,7 +3679,7 @@ type RaftListClusterServersRequest struct { func (x *RaftListClusterServersRequest) Reset() { *x = RaftListClusterServersRequest{} - mi := &file_master_proto_msgTypes[56] + mi := &file_weed_pb_master_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3695,7 +3691,7 @@ func (x *RaftListClusterServersRequest) String() string { func (*RaftListClusterServersRequest) ProtoMessage() {} func (x *RaftListClusterServersRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[56] + mi := &file_weed_pb_master_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3708,7 +3704,7 @@ func (x *RaftListClusterServersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftListClusterServersRequest.ProtoReflect.Descriptor instead. func (*RaftListClusterServersRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{56} + return file_weed_pb_master_proto_rawDescGZIP(), []int{56} } type RaftListClusterServersResponse struct { @@ -3720,7 +3716,7 @@ type RaftListClusterServersResponse struct { func (x *RaftListClusterServersResponse) Reset() { *x = RaftListClusterServersResponse{} - mi := &file_master_proto_msgTypes[57] + mi := &file_weed_pb_master_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3732,7 +3728,7 @@ func (x *RaftListClusterServersResponse) String() string { func (*RaftListClusterServersResponse) ProtoMessage() {} func (x *RaftListClusterServersResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[57] + mi := &file_weed_pb_master_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3745,7 +3741,7 @@ func (x *RaftListClusterServersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftListClusterServersResponse.ProtoReflect.Descriptor instead. func (*RaftListClusterServersResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{57} + return file_weed_pb_master_proto_rawDescGZIP(), []int{57} } func (x *RaftListClusterServersResponse) GetClusterServers() []*RaftListClusterServersResponse_ClusterServers { @@ -3765,7 +3761,7 @@ type RaftLeadershipTransferRequest struct { func (x *RaftLeadershipTransferRequest) Reset() { *x = RaftLeadershipTransferRequest{} - mi := &file_master_proto_msgTypes[58] + mi := &file_weed_pb_master_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3777,7 +3773,7 @@ func (x *RaftLeadershipTransferRequest) String() string { func (*RaftLeadershipTransferRequest) ProtoMessage() {} func (x *RaftLeadershipTransferRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[58] + mi := &file_weed_pb_master_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3790,7 +3786,7 @@ func (x *RaftLeadershipTransferRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftLeadershipTransferRequest.ProtoReflect.Descriptor instead. func (*RaftLeadershipTransferRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{58} + return file_weed_pb_master_proto_rawDescGZIP(), []int{58} } func (x *RaftLeadershipTransferRequest) GetTargetId() string { @@ -3817,7 +3813,7 @@ type RaftLeadershipTransferResponse struct { func (x *RaftLeadershipTransferResponse) Reset() { *x = RaftLeadershipTransferResponse{} - mi := &file_master_proto_msgTypes[59] + mi := &file_weed_pb_master_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3829,7 +3825,7 @@ func (x *RaftLeadershipTransferResponse) String() string { func (*RaftLeadershipTransferResponse) ProtoMessage() {} func (x *RaftLeadershipTransferResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[59] + mi := &file_weed_pb_master_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3842,7 +3838,7 @@ func (x *RaftLeadershipTransferResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RaftLeadershipTransferResponse.ProtoReflect.Descriptor instead. func (*RaftLeadershipTransferResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{59} + return file_weed_pb_master_proto_rawDescGZIP(), []int{59} } func (x *RaftLeadershipTransferResponse) GetPreviousLeader() string { @@ -3867,7 +3863,7 @@ type VolumeGrowResponse struct { func (x *VolumeGrowResponse) Reset() { *x = VolumeGrowResponse{} - mi := &file_master_proto_msgTypes[60] + mi := &file_weed_pb_master_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3879,7 +3875,7 @@ func (x *VolumeGrowResponse) String() string { func (*VolumeGrowResponse) ProtoMessage() {} func (x *VolumeGrowResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[60] + mi := &file_weed_pb_master_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3892,7 +3888,7 @@ func (x *VolumeGrowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeGrowResponse.ProtoReflect.Descriptor instead. func (*VolumeGrowResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{60} + return file_weed_pb_master_proto_rawDescGZIP(), []int{60} } type BlockVolumeInfoMessage struct { @@ -3915,13 +3911,14 @@ type BlockVolumeInfoMessage struct { DurabilityMode string `protobuf:"bytes,16,opt,name=durability_mode,json=durabilityMode,proto3" json:"durability_mode,omitempty"` NvmeAddr string `protobuf:"bytes,17,opt,name=nvme_addr,json=nvmeAddr,proto3" json:"nvme_addr,omitempty"` Nqn string `protobuf:"bytes,18,opt,name=nqn,proto3" json:"nqn,omitempty"` + ReplicaReady *bool `protobuf:"varint,19,opt,name=replica_ready,json=replicaReady,proto3,oneof" json:"replica_ready,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BlockVolumeInfoMessage) Reset() { *x = BlockVolumeInfoMessage{} - mi := &file_master_proto_msgTypes[61] + mi := &file_weed_pb_master_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3933,7 +3930,7 @@ func (x *BlockVolumeInfoMessage) String() string { func (*BlockVolumeInfoMessage) ProtoMessage() {} func (x *BlockVolumeInfoMessage) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[61] + mi := &file_weed_pb_master_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3946,7 +3943,7 @@ func (x *BlockVolumeInfoMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockVolumeInfoMessage.ProtoReflect.Descriptor instead. func (*BlockVolumeInfoMessage) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{61} + return file_weed_pb_master_proto_rawDescGZIP(), []int{61} } func (x *BlockVolumeInfoMessage) GetPath() string { @@ -4075,6 +4072,13 @@ func (x *BlockVolumeInfoMessage) GetNqn() string { return "" } +func (x *BlockVolumeInfoMessage) GetReplicaReady() bool { + if x != nil && x.ReplicaReady != nil { + return *x.ReplicaReady + } + return false +} + type BlockVolumeShortInfoMessage struct { state protoimpl.MessageState `protogen:"open.v1"` Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` @@ -4087,7 +4091,7 @@ type BlockVolumeShortInfoMessage struct { func (x *BlockVolumeShortInfoMessage) Reset() { *x = BlockVolumeShortInfoMessage{} - mi := &file_master_proto_msgTypes[62] + mi := &file_weed_pb_master_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4099,7 +4103,7 @@ func (x *BlockVolumeShortInfoMessage) String() string { func (*BlockVolumeShortInfoMessage) ProtoMessage() {} func (x *BlockVolumeShortInfoMessage) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[62] + mi := &file_weed_pb_master_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4112,7 +4116,7 @@ func (x *BlockVolumeShortInfoMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockVolumeShortInfoMessage.ProtoReflect.Descriptor instead. func (*BlockVolumeShortInfoMessage) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{62} + return file_weed_pb_master_proto_rawDescGZIP(), []int{62} } func (x *BlockVolumeShortInfoMessage) GetPath() string { @@ -4160,7 +4164,7 @@ type BlockVolumeAssignment struct { func (x *BlockVolumeAssignment) Reset() { *x = BlockVolumeAssignment{} - mi := &file_master_proto_msgTypes[63] + mi := &file_weed_pb_master_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4172,7 +4176,7 @@ func (x *BlockVolumeAssignment) String() string { func (*BlockVolumeAssignment) ProtoMessage() {} func (x *BlockVolumeAssignment) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[63] + mi := &file_weed_pb_master_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4185,7 +4189,7 @@ func (x *BlockVolumeAssignment) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockVolumeAssignment.ProtoReflect.Descriptor instead. func (*BlockVolumeAssignment) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{63} + return file_weed_pb_master_proto_rawDescGZIP(), []int{63} } func (x *BlockVolumeAssignment) GetPath() string { @@ -4262,7 +4266,7 @@ type ReplicaAddrMessage struct { func (x *ReplicaAddrMessage) Reset() { *x = ReplicaAddrMessage{} - mi := &file_master_proto_msgTypes[64] + mi := &file_weed_pb_master_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4274,7 +4278,7 @@ func (x *ReplicaAddrMessage) String() string { func (*ReplicaAddrMessage) ProtoMessage() {} func (x *ReplicaAddrMessage) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[64] + mi := &file_weed_pb_master_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4287,7 +4291,7 @@ func (x *ReplicaAddrMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplicaAddrMessage.ProtoReflect.Descriptor instead. func (*ReplicaAddrMessage) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{64} + return file_weed_pb_master_proto_rawDescGZIP(), []int{64} } func (x *ReplicaAddrMessage) GetDataAddr() string { @@ -4324,7 +4328,7 @@ type CreateBlockVolumeRequest struct { func (x *CreateBlockVolumeRequest) Reset() { *x = CreateBlockVolumeRequest{} - mi := &file_master_proto_msgTypes[65] + mi := &file_weed_pb_master_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4336,7 +4340,7 @@ func (x *CreateBlockVolumeRequest) String() string { func (*CreateBlockVolumeRequest) ProtoMessage() {} func (x *CreateBlockVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[65] + mi := &file_weed_pb_master_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4349,7 +4353,7 @@ func (x *CreateBlockVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockVolumeRequest.ProtoReflect.Descriptor instead. func (*CreateBlockVolumeRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{65} + return file_weed_pb_master_proto_rawDescGZIP(), []int{65} } func (x *CreateBlockVolumeRequest) GetName() string { @@ -4404,7 +4408,7 @@ type CreateBlockVolumeResponse struct { func (x *CreateBlockVolumeResponse) Reset() { *x = CreateBlockVolumeResponse{} - mi := &file_master_proto_msgTypes[66] + mi := &file_weed_pb_master_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4416,7 +4420,7 @@ func (x *CreateBlockVolumeResponse) String() string { func (*CreateBlockVolumeResponse) ProtoMessage() {} func (x *CreateBlockVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[66] + mi := &file_weed_pb_master_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4429,7 +4433,7 @@ func (x *CreateBlockVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockVolumeResponse.ProtoReflect.Descriptor instead. func (*CreateBlockVolumeResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{66} + return file_weed_pb_master_proto_rawDescGZIP(), []int{66} } func (x *CreateBlockVolumeResponse) GetVolumeId() string { @@ -4504,7 +4508,7 @@ type DeleteBlockVolumeRequest struct { func (x *DeleteBlockVolumeRequest) Reset() { *x = DeleteBlockVolumeRequest{} - mi := &file_master_proto_msgTypes[67] + mi := &file_weed_pb_master_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4516,7 +4520,7 @@ func (x *DeleteBlockVolumeRequest) String() string { func (*DeleteBlockVolumeRequest) ProtoMessage() {} func (x *DeleteBlockVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[67] + mi := &file_weed_pb_master_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4529,7 +4533,7 @@ func (x *DeleteBlockVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBlockVolumeRequest.ProtoReflect.Descriptor instead. func (*DeleteBlockVolumeRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{67} + return file_weed_pb_master_proto_rawDescGZIP(), []int{67} } func (x *DeleteBlockVolumeRequest) GetName() string { @@ -4547,7 +4551,7 @@ type DeleteBlockVolumeResponse struct { func (x *DeleteBlockVolumeResponse) Reset() { *x = DeleteBlockVolumeResponse{} - mi := &file_master_proto_msgTypes[68] + mi := &file_weed_pb_master_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4559,7 +4563,7 @@ func (x *DeleteBlockVolumeResponse) String() string { func (*DeleteBlockVolumeResponse) ProtoMessage() {} func (x *DeleteBlockVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[68] + mi := &file_weed_pb_master_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4572,7 +4576,7 @@ func (x *DeleteBlockVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBlockVolumeResponse.ProtoReflect.Descriptor instead. func (*DeleteBlockVolumeResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{68} + return file_weed_pb_master_proto_rawDescGZIP(), []int{68} } type LookupBlockVolumeRequest struct { @@ -4584,7 +4588,7 @@ type LookupBlockVolumeRequest struct { func (x *LookupBlockVolumeRequest) Reset() { *x = LookupBlockVolumeRequest{} - mi := &file_master_proto_msgTypes[69] + mi := &file_weed_pb_master_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4596,7 +4600,7 @@ func (x *LookupBlockVolumeRequest) String() string { func (*LookupBlockVolumeRequest) ProtoMessage() {} func (x *LookupBlockVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[69] + mi := &file_weed_pb_master_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4609,7 +4613,7 @@ func (x *LookupBlockVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupBlockVolumeRequest.ProtoReflect.Descriptor instead. func (*LookupBlockVolumeRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{69} + return file_weed_pb_master_proto_rawDescGZIP(), []int{69} } func (x *LookupBlockVolumeRequest) GetName() string { @@ -4637,7 +4641,7 @@ type LookupBlockVolumeResponse struct { func (x *LookupBlockVolumeResponse) Reset() { *x = LookupBlockVolumeResponse{} - mi := &file_master_proto_msgTypes[70] + mi := &file_weed_pb_master_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4649,7 +4653,7 @@ func (x *LookupBlockVolumeResponse) String() string { func (*LookupBlockVolumeResponse) ProtoMessage() {} func (x *LookupBlockVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[70] + mi := &file_weed_pb_master_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4662,7 +4666,7 @@ func (x *LookupBlockVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupBlockVolumeResponse.ProtoReflect.Descriptor instead. func (*LookupBlockVolumeResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{70} + return file_weed_pb_master_proto_rawDescGZIP(), []int{70} } func (x *LookupBlockVolumeResponse) GetVolumeServer() string { @@ -4745,7 +4749,7 @@ type CreateBlockSnapshotRequest struct { func (x *CreateBlockSnapshotRequest) Reset() { *x = CreateBlockSnapshotRequest{} - mi := &file_master_proto_msgTypes[71] + mi := &file_weed_pb_master_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4757,7 +4761,7 @@ func (x *CreateBlockSnapshotRequest) String() string { func (*CreateBlockSnapshotRequest) ProtoMessage() {} func (x *CreateBlockSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[71] + mi := &file_weed_pb_master_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4770,7 +4774,7 @@ func (x *CreateBlockSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockSnapshotRequest.ProtoReflect.Descriptor instead. func (*CreateBlockSnapshotRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{71} + return file_weed_pb_master_proto_rawDescGZIP(), []int{71} } func (x *CreateBlockSnapshotRequest) GetVolumeName() string { @@ -4798,7 +4802,7 @@ type CreateBlockSnapshotResponse struct { func (x *CreateBlockSnapshotResponse) Reset() { *x = CreateBlockSnapshotResponse{} - mi := &file_master_proto_msgTypes[72] + mi := &file_weed_pb_master_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4810,7 +4814,7 @@ func (x *CreateBlockSnapshotResponse) String() string { func (*CreateBlockSnapshotResponse) ProtoMessage() {} func (x *CreateBlockSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[72] + mi := &file_weed_pb_master_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4823,7 +4827,7 @@ func (x *CreateBlockSnapshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockSnapshotResponse.ProtoReflect.Descriptor instead. func (*CreateBlockSnapshotResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{72} + return file_weed_pb_master_proto_rawDescGZIP(), []int{72} } func (x *CreateBlockSnapshotResponse) GetSnapshotId() uint32 { @@ -4857,7 +4861,7 @@ type DeleteBlockSnapshotRequest struct { func (x *DeleteBlockSnapshotRequest) Reset() { *x = DeleteBlockSnapshotRequest{} - mi := &file_master_proto_msgTypes[73] + mi := &file_weed_pb_master_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4869,7 +4873,7 @@ func (x *DeleteBlockSnapshotRequest) String() string { func (*DeleteBlockSnapshotRequest) ProtoMessage() {} func (x *DeleteBlockSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[73] + mi := &file_weed_pb_master_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4882,7 +4886,7 @@ func (x *DeleteBlockSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBlockSnapshotRequest.ProtoReflect.Descriptor instead. func (*DeleteBlockSnapshotRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{73} + return file_weed_pb_master_proto_rawDescGZIP(), []int{73} } func (x *DeleteBlockSnapshotRequest) GetVolumeName() string { @@ -4907,7 +4911,7 @@ type DeleteBlockSnapshotResponse struct { func (x *DeleteBlockSnapshotResponse) Reset() { *x = DeleteBlockSnapshotResponse{} - mi := &file_master_proto_msgTypes[74] + mi := &file_weed_pb_master_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4919,7 +4923,7 @@ func (x *DeleteBlockSnapshotResponse) String() string { func (*DeleteBlockSnapshotResponse) ProtoMessage() {} func (x *DeleteBlockSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[74] + mi := &file_weed_pb_master_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4932,7 +4936,7 @@ func (x *DeleteBlockSnapshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBlockSnapshotResponse.ProtoReflect.Descriptor instead. func (*DeleteBlockSnapshotResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{74} + return file_weed_pb_master_proto_rawDescGZIP(), []int{74} } type ListBlockSnapshotsRequest struct { @@ -4944,7 +4948,7 @@ type ListBlockSnapshotsRequest struct { func (x *ListBlockSnapshotsRequest) Reset() { *x = ListBlockSnapshotsRequest{} - mi := &file_master_proto_msgTypes[75] + mi := &file_weed_pb_master_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4956,7 +4960,7 @@ func (x *ListBlockSnapshotsRequest) String() string { func (*ListBlockSnapshotsRequest) ProtoMessage() {} func (x *ListBlockSnapshotsRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[75] + mi := &file_weed_pb_master_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4969,7 +4973,7 @@ func (x *ListBlockSnapshotsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBlockSnapshotsRequest.ProtoReflect.Descriptor instead. func (*ListBlockSnapshotsRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{75} + return file_weed_pb_master_proto_rawDescGZIP(), []int{75} } func (x *ListBlockSnapshotsRequest) GetVolumeName() string { @@ -4988,7 +4992,7 @@ type ListBlockSnapshotsResponse struct { func (x *ListBlockSnapshotsResponse) Reset() { *x = ListBlockSnapshotsResponse{} - mi := &file_master_proto_msgTypes[76] + mi := &file_weed_pb_master_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5000,7 +5004,7 @@ func (x *ListBlockSnapshotsResponse) String() string { func (*ListBlockSnapshotsResponse) ProtoMessage() {} func (x *ListBlockSnapshotsResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[76] + mi := &file_weed_pb_master_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5013,7 +5017,7 @@ func (x *ListBlockSnapshotsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBlockSnapshotsResponse.ProtoReflect.Descriptor instead. func (*ListBlockSnapshotsResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{76} + return file_weed_pb_master_proto_rawDescGZIP(), []int{76} } func (x *ListBlockSnapshotsResponse) GetSnapshots() []*BlockSnapshotInfo { @@ -5034,7 +5038,7 @@ type BlockSnapshotInfo struct { func (x *BlockSnapshotInfo) Reset() { *x = BlockSnapshotInfo{} - mi := &file_master_proto_msgTypes[77] + mi := &file_weed_pb_master_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5046,7 +5050,7 @@ func (x *BlockSnapshotInfo) String() string { func (*BlockSnapshotInfo) ProtoMessage() {} func (x *BlockSnapshotInfo) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[77] + mi := &file_weed_pb_master_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5059,7 +5063,7 @@ func (x *BlockSnapshotInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockSnapshotInfo.ProtoReflect.Descriptor instead. func (*BlockSnapshotInfo) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{77} + return file_weed_pb_master_proto_rawDescGZIP(), []int{77} } func (x *BlockSnapshotInfo) GetSnapshotId() uint32 { @@ -5093,7 +5097,7 @@ type RestoreBlockSnapshotRequest struct { func (x *RestoreBlockSnapshotRequest) Reset() { *x = RestoreBlockSnapshotRequest{} - mi := &file_master_proto_msgTypes[78] + mi := &file_weed_pb_master_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5105,7 +5109,7 @@ func (x *RestoreBlockSnapshotRequest) String() string { func (*RestoreBlockSnapshotRequest) ProtoMessage() {} func (x *RestoreBlockSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[78] + mi := &file_weed_pb_master_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5118,7 +5122,7 @@ func (x *RestoreBlockSnapshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreBlockSnapshotRequest.ProtoReflect.Descriptor instead. func (*RestoreBlockSnapshotRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{78} + return file_weed_pb_master_proto_rawDescGZIP(), []int{78} } func (x *RestoreBlockSnapshotRequest) GetVolumeName() string { @@ -5143,7 +5147,7 @@ type RestoreBlockSnapshotResponse struct { func (x *RestoreBlockSnapshotResponse) Reset() { *x = RestoreBlockSnapshotResponse{} - mi := &file_master_proto_msgTypes[79] + mi := &file_weed_pb_master_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5155,7 +5159,7 @@ func (x *RestoreBlockSnapshotResponse) String() string { func (*RestoreBlockSnapshotResponse) ProtoMessage() {} func (x *RestoreBlockSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[79] + mi := &file_weed_pb_master_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5168,7 +5172,7 @@ func (x *RestoreBlockSnapshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreBlockSnapshotResponse.ProtoReflect.Descriptor instead. func (*RestoreBlockSnapshotResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{79} + return file_weed_pb_master_proto_rawDescGZIP(), []int{79} } type ExpandBlockVolumeRequest struct { @@ -5181,7 +5185,7 @@ type ExpandBlockVolumeRequest struct { func (x *ExpandBlockVolumeRequest) Reset() { *x = ExpandBlockVolumeRequest{} - mi := &file_master_proto_msgTypes[80] + mi := &file_weed_pb_master_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5193,7 +5197,7 @@ func (x *ExpandBlockVolumeRequest) String() string { func (*ExpandBlockVolumeRequest) ProtoMessage() {} func (x *ExpandBlockVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[80] + mi := &file_weed_pb_master_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5206,7 +5210,7 @@ func (x *ExpandBlockVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpandBlockVolumeRequest.ProtoReflect.Descriptor instead. func (*ExpandBlockVolumeRequest) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{80} + return file_weed_pb_master_proto_rawDescGZIP(), []int{80} } func (x *ExpandBlockVolumeRequest) GetName() string { @@ -5232,7 +5236,7 @@ type ExpandBlockVolumeResponse struct { func (x *ExpandBlockVolumeResponse) Reset() { *x = ExpandBlockVolumeResponse{} - mi := &file_master_proto_msgTypes[81] + mi := &file_weed_pb_master_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5244,7 +5248,7 @@ func (x *ExpandBlockVolumeResponse) String() string { func (*ExpandBlockVolumeResponse) ProtoMessage() {} func (x *ExpandBlockVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[81] + mi := &file_weed_pb_master_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5257,7 +5261,7 @@ func (x *ExpandBlockVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpandBlockVolumeResponse.ProtoReflect.Descriptor instead. func (*ExpandBlockVolumeResponse) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{81} + return file_weed_pb_master_proto_rawDescGZIP(), []int{81} } func (x *ExpandBlockVolumeResponse) GetCapacityBytes() uint64 { @@ -5278,7 +5282,7 @@ type SuperBlockExtra_ErasureCoding struct { func (x *SuperBlockExtra_ErasureCoding) Reset() { *x = SuperBlockExtra_ErasureCoding{} - mi := &file_master_proto_msgTypes[84] + mi := &file_weed_pb_master_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5290,7 +5294,7 @@ func (x *SuperBlockExtra_ErasureCoding) String() string { func (*SuperBlockExtra_ErasureCoding) ProtoMessage() {} func (x *SuperBlockExtra_ErasureCoding) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[84] + mi := &file_weed_pb_master_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5303,7 +5307,7 @@ func (x *SuperBlockExtra_ErasureCoding) ProtoReflect() protoreflect.Message { // Deprecated: Use SuperBlockExtra_ErasureCoding.ProtoReflect.Descriptor instead. func (*SuperBlockExtra_ErasureCoding) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{7, 0} + return file_weed_pb_master_proto_rawDescGZIP(), []int{7, 0} } func (x *SuperBlockExtra_ErasureCoding) GetData() uint32 { @@ -5339,7 +5343,7 @@ type LookupVolumeResponse_VolumeIdLocation struct { func (x *LookupVolumeResponse_VolumeIdLocation) Reset() { *x = LookupVolumeResponse_VolumeIdLocation{} - mi := &file_master_proto_msgTypes[85] + mi := &file_weed_pb_master_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5351,7 +5355,7 @@ func (x *LookupVolumeResponse_VolumeIdLocation) String() string { func (*LookupVolumeResponse_VolumeIdLocation) ProtoMessage() {} func (x *LookupVolumeResponse_VolumeIdLocation) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[85] + mi := &file_weed_pb_master_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5364,7 +5368,7 @@ func (x *LookupVolumeResponse_VolumeIdLocation) ProtoReflect() protoreflect.Mess // Deprecated: Use LookupVolumeResponse_VolumeIdLocation.ProtoReflect.Descriptor instead. func (*LookupVolumeResponse_VolumeIdLocation) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{13, 0} + return file_weed_pb_master_proto_rawDescGZIP(), []int{13, 0} } func (x *LookupVolumeResponse_VolumeIdLocation) GetVolumeOrFileId() string { @@ -5405,7 +5409,7 @@ type LookupEcVolumeResponse_EcShardIdLocation struct { func (x *LookupEcVolumeResponse_EcShardIdLocation) Reset() { *x = LookupEcVolumeResponse_EcShardIdLocation{} - mi := &file_master_proto_msgTypes[90] + mi := &file_weed_pb_master_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5417,7 +5421,7 @@ func (x *LookupEcVolumeResponse_EcShardIdLocation) String() string { func (*LookupEcVolumeResponse_EcShardIdLocation) ProtoMessage() {} func (x *LookupEcVolumeResponse_EcShardIdLocation) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[90] + mi := &file_weed_pb_master_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5430,7 +5434,7 @@ func (x *LookupEcVolumeResponse_EcShardIdLocation) ProtoReflect() protoreflect.M // Deprecated: Use LookupEcVolumeResponse_EcShardIdLocation.ProtoReflect.Descriptor instead. func (*LookupEcVolumeResponse_EcShardIdLocation) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{33, 0} + return file_weed_pb_master_proto_rawDescGZIP(), []int{33, 0} } func (x *LookupEcVolumeResponse_EcShardIdLocation) GetShardId() uint32 { @@ -5460,7 +5464,7 @@ type ListClusterNodesResponse_ClusterNode struct { func (x *ListClusterNodesResponse_ClusterNode) Reset() { *x = ListClusterNodesResponse_ClusterNode{} - mi := &file_master_proto_msgTypes[91] + mi := &file_weed_pb_master_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5472,7 +5476,7 @@ func (x *ListClusterNodesResponse_ClusterNode) String() string { func (*ListClusterNodesResponse_ClusterNode) ProtoMessage() {} func (x *ListClusterNodesResponse_ClusterNode) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[91] + mi := &file_weed_pb_master_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5485,7 +5489,7 @@ func (x *ListClusterNodesResponse_ClusterNode) ProtoReflect() protoreflect.Messa // Deprecated: Use ListClusterNodesResponse_ClusterNode.ProtoReflect.Descriptor instead. func (*ListClusterNodesResponse_ClusterNode) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{45, 0} + return file_weed_pb_master_proto_rawDescGZIP(), []int{45, 0} } func (x *ListClusterNodesResponse_ClusterNode) GetAddress() string { @@ -5535,7 +5539,7 @@ type RaftListClusterServersResponse_ClusterServers struct { func (x *RaftListClusterServersResponse_ClusterServers) Reset() { *x = RaftListClusterServersResponse_ClusterServers{} - mi := &file_master_proto_msgTypes[92] + mi := &file_weed_pb_master_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5547,7 +5551,7 @@ func (x *RaftListClusterServersResponse_ClusterServers) String() string { func (*RaftListClusterServersResponse_ClusterServers) ProtoMessage() {} func (x *RaftListClusterServersResponse_ClusterServers) ProtoReflect() protoreflect.Message { - mi := &file_master_proto_msgTypes[92] + mi := &file_weed_pb_master_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5560,7 +5564,7 @@ func (x *RaftListClusterServersResponse_ClusterServers) ProtoReflect() protorefl // Deprecated: Use RaftListClusterServersResponse_ClusterServers.ProtoReflect.Descriptor instead. func (*RaftListClusterServersResponse_ClusterServers) Descriptor() ([]byte, []int) { - return file_master_proto_rawDescGZIP(), []int{57, 0} + return file_weed_pb_master_proto_rawDescGZIP(), []int{57, 0} } func (x *RaftListClusterServersResponse_ClusterServers) GetId() string { @@ -5591,11 +5595,11 @@ func (x *RaftListClusterServersResponse_ClusterServers) GetIsLeader() bool { return false } -var File_master_proto protoreflect.FileDescriptor +var File_weed_pb_master_proto protoreflect.FileDescriptor -const file_master_proto_rawDesc = "" + +const file_weed_pb_master_proto_rawDesc = "" + "\n" + - "\fmaster.proto\x12\tmaster_pb\x1a\x13volume_server.proto\"\xe5\n" + + "\x14weed/pb/master.proto\x12\tmaster_pb\x1a\x13volume_server.proto\"\xe5\n" + "\n" + "\tHeartbeat\x12\x0e\n" + "\x02ip\x18\x01 \x01(\tR\x02ip\x12\x12\n" + @@ -5963,7 +5967,7 @@ const file_master_proto_rawDesc = "" + "\x0fprevious_leader\x18\x01 \x01(\tR\x0epreviousLeader\x12\x1d\n" + "\n" + "new_leader\x18\x02 \x01(\tR\tnewLeader\"\x14\n" + - "\x12VolumeGrowResponse\"\xe2\x04\n" + + "\x12VolumeGrowResponse\"\x9e\x05\n" + "\x16BlockVolumeInfoMessage\x12\x12\n" + "\x04path\x18\x01 \x01(\tR\x04path\x12\x1f\n" + "\vvolume_size\x18\x02 \x01(\x04R\n" + @@ -5986,7 +5990,9 @@ const file_master_proto_rawDesc = "" + "\x10replica_degraded\x18\x0f \x01(\bR\x0freplicaDegraded\x12'\n" + "\x0fdurability_mode\x18\x10 \x01(\tR\x0edurabilityMode\x12\x1b\n" + "\tnvme_addr\x18\x11 \x01(\tR\bnvmeAddr\x12\x10\n" + - "\x03nqn\x18\x12 \x01(\tR\x03nqn\"\x8e\x01\n" + + "\x03nqn\x18\x12 \x01(\tR\x03nqn\x12(\n" + + "\rreplica_ready\x18\x13 \x01(\bH\x00R\freplicaReady\x88\x01\x01B\x10\n" + + "\x0e_replica_ready\"\x8e\x01\n" + "\x1bBlockVolumeShortInfoMessage\x12\x12\n" + "\x04path\x18\x01 \x01(\tR\x04path\x12\x1f\n" + "\vvolume_size\x18\x02 \x01(\x04R\n" + @@ -6123,19 +6129,19 @@ const file_master_proto_rawDesc = "" + "\x11ExpandBlockVolume\x12#.master_pb.ExpandBlockVolumeRequest\x1a$.master_pb.ExpandBlockVolumeResponse\"\x00B2Z0github.com/seaweedfs/seaweedfs/weed/pb/master_pbb\x06proto3" var ( - file_master_proto_rawDescOnce sync.Once - file_master_proto_rawDescData []byte + file_weed_pb_master_proto_rawDescOnce sync.Once + file_weed_pb_master_proto_rawDescData []byte ) -func file_master_proto_rawDescGZIP() []byte { - file_master_proto_rawDescOnce.Do(func() { - file_master_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_master_proto_rawDesc), len(file_master_proto_rawDesc))) +func file_weed_pb_master_proto_rawDescGZIP() []byte { + file_weed_pb_master_proto_rawDescOnce.Do(func() { + file_weed_pb_master_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_weed_pb_master_proto_rawDesc), len(file_weed_pb_master_proto_rawDesc))) }) - return file_master_proto_rawDescData + return file_weed_pb_master_proto_rawDescData } -var file_master_proto_msgTypes = make([]protoimpl.MessageInfo, 93) -var file_master_proto_goTypes = []any{ +var file_weed_pb_master_proto_msgTypes = make([]protoimpl.MessageInfo, 93) +var file_weed_pb_master_proto_goTypes = []any{ (*Heartbeat)(nil), // 0: master_pb.Heartbeat (*HeartbeatResponse)(nil), // 1: master_pb.HeartbeatResponse (*VolumeInformationMessage)(nil), // 2: master_pb.VolumeInformationMessage @@ -6231,7 +6237,7 @@ var file_master_proto_goTypes = []any{ (*RaftListClusterServersResponse_ClusterServers)(nil), // 92: master_pb.RaftListClusterServersResponse.ClusterServers (*volume_server_pb.VolumeServerState)(nil), // 93: volume_server_pb.VolumeServerState } -var file_master_proto_depIdxs = []int32{ +var file_weed_pb_master_proto_depIdxs = []int32{ 2, // 0: master_pb.Heartbeat.volumes:type_name -> master_pb.VolumeInformationMessage 3, // 1: master_pb.Heartbeat.new_volumes:type_name -> master_pb.VolumeShortInformationMessage 3, // 2: master_pb.Heartbeat.deleted_volumes:type_name -> master_pb.VolumeShortInformationMessage @@ -6346,26 +6352,27 @@ var file_master_proto_depIdxs = []int32{ 0, // [0:43] is the sub-list for field type_name } -func init() { file_master_proto_init() } -func file_master_proto_init() { - if File_master_proto != nil { +func init() { file_weed_pb_master_proto_init() } +func file_weed_pb_master_proto_init() { + if File_weed_pb_master_proto != nil { return } + file_weed_pb_master_proto_msgTypes[61].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_master_proto_rawDesc), len(file_master_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_weed_pb_master_proto_rawDesc), len(file_weed_pb_master_proto_rawDesc)), NumEnums: 0, NumMessages: 93, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_master_proto_goTypes, - DependencyIndexes: file_master_proto_depIdxs, - MessageInfos: file_master_proto_msgTypes, + GoTypes: file_weed_pb_master_proto_goTypes, + DependencyIndexes: file_weed_pb_master_proto_depIdxs, + MessageInfos: file_weed_pb_master_proto_msgTypes, }.Build() - File_master_proto = out.File - file_master_proto_goTypes = nil - file_master_proto_depIdxs = nil + File_weed_pb_master_proto = out.File + file_weed_pb_master_proto_goTypes = nil + file_weed_pb_master_proto_depIdxs = nil } diff --git a/weed/pb/master_pb/master_grpc.pb.go b/weed/pb/master_pb/master_grpc.pb.go index 500e87fc7..6d70f5c63 100644 --- a/weed/pb/master_pb/master_grpc.pb.go +++ b/weed/pb/master_pb/master_grpc.pb.go @@ -2,7 +2,7 @@ // versions: // - protoc-gen-go-grpc v1.6.1 // - protoc v3.21.12 -// source: master.proto +// source: weed/pb/master.proto package master_pb @@ -1278,5 +1278,5 @@ var Seaweed_ServiceDesc = grpc.ServiceDesc{ ClientStreams: true, }, }, - Metadata: "master.proto", + Metadata: "weed/pb/master.proto", } diff --git a/weed/server/master_block_registry.go b/weed/server/master_block_registry.go index 3b26755ed..344166730 100644 --- a/weed/server/master_block_registry.go +++ b/weed/server/master_block_registry.go @@ -714,6 +714,9 @@ func replicaReadyObservedFromHeartbeat(info *master_pb.BlockVolumeInfoMessage) b if info == nil { return false } + if info.ReplicaReady != nil { + return info.GetReplicaReady() + } return info.ReplicaDataAddr != "" && info.ReplicaCtrlAddr != "" } @@ -1271,10 +1274,10 @@ type PromotionPreflightResult struct { // evaluatePromotionLocked evaluates promotion candidates for a volume. // Caller must hold r.mu (read or write). Returns a preflight result without // mutating the registry. The four gates: -// 1. Heartbeat freshness (within 2×LeaseTTL) -// 2. WAL LSN recency (within promotionLSNTolerance of primary) -// 3. Role must be RoleReplica (not RoleRebuilding) -// 4. Server must be in blockServers (alive) — fixes B-12 +// 1. Heartbeat freshness (within 2×LeaseTTL) +// 2. WAL LSN recency (within promotionLSNTolerance of primary) +// 3. Role must be RoleReplica (not RoleRebuilding) +// 4. Server must be in blockServers (alive) — fixes B-12 func (r *BlockVolumeRegistry) evaluatePromotionLocked(entry *BlockVolumeEntry) PromotionPreflightResult { result := PromotionPreflightResult{ VolumeName: entry.Name, diff --git a/weed/server/master_block_registry_test.go b/weed/server/master_block_registry_test.go index 4ba9fc962..3c98062a2 100644 --- a/weed/server/master_block_registry_test.go +++ b/weed/server/master_block_registry_test.go @@ -2103,10 +2103,18 @@ func TestRegistry_UpdateFullHeartbeat_ConsumesCoreInfluencedReplicaReady(t *test if hb.ReplicaDataAddr == "" || hb.ReplicaCtrlAddr == "" { t.Fatalf("expected core-influenced replica addresses on heartbeat, hb=%+v", hb) } + if !hb.ReplicaReady { + t.Fatalf("expected explicit replica_ready truth on heartbeat, hb=%+v", hb) + } if hb.ReplicaDegraded { t.Fatalf("did not expect degraded heartbeat on ready path, hb=%+v", hb) } + // Prove master-side readiness now follows the explicit heartbeat truth even + // when transport addresses are absent on the consume path. + hb.ReplicaDataAddr = "" + hb.ReplicaCtrlAddr = "" + r := NewBlockVolumeRegistry() if err := r.Register(&BlockVolumeEntry{ Name: "vol-master-ready", @@ -2139,3 +2147,35 @@ func TestRegistry_UpdateFullHeartbeat_ConsumesCoreInfluencedReplicaReady(t *test t.Fatalf("expected publish_healthy after ready consume, got %q", entry.VolumeMode) } } + +func TestRegistry_UpdateFullHeartbeat_ReplicaReadyFallsBackToAddressesWhenFieldAbsent(t *testing.T) { + r := NewBlockVolumeRegistry() + if err := r.Register(&BlockVolumeEntry{ + Name: "vol-master-ready-fallback", + VolumeServer: "primary-server:8080", + Path: "/blocks/vol-master-ready-fallback-primary.blk", + Status: StatusActive, + Role: blockvol.RoleToWire(blockvol.RolePrimary), + ReplicaFactor: 2, + Replicas: []ReplicaInfo{{ + Server: "replica-server:8080", + Path: "/blocks/vol-master-ready-fallback.blk", + }}, + }); err != nil { + t.Fatalf("register: %v", err) + } + + r.UpdateFullHeartbeat("replica-server:8080", []*master_pb.BlockVolumeInfoMessage{{ + Path: "/blocks/vol-master-ready-fallback.blk", + ReplicaDataAddr: "10.0.0.2:4260", + ReplicaCtrlAddr: "10.0.0.2:4261", + }}, "") + + entry, _ := r.Lookup("vol-master-ready-fallback") + if !entry.Replicas[0].Ready { + t.Fatalf("expected backward-compatible ready fallback from addresses, entry=%+v", entry) + } + if !entry.ReplicaReady { + t.Fatalf("expected aggregate replica ready from fallback consume, entry=%+v", entry) + } +} diff --git a/weed/server/volume_server_block.go b/weed/server/volume_server_block.go index 072c0c658..76236697e 100644 --- a/weed/server/volume_server_block.go +++ b/weed/server/volume_server_block.go @@ -38,9 +38,9 @@ type volReplState struct { // not by blockvol's local storage mechanics. // // Important: -// PublishHealthy here is still an adapter-local publication bit used by current -// `weed/server` surfaces. It is NOT the semantic owner for Phase 14 core -// publication health; that owner is `engine.PublicationView`. +// PublishHealthy here is the server-boundary mirror of the core-owned +// publication health when a core projection exists. Adapter-local fallback +// remains only for paths where the core is absent. type BlockReadinessSnapshot struct { RoleApplied bool ReceiverReady bool @@ -140,8 +140,7 @@ func (bs *BlockService) ExecutedCoreCommands(path string) []string { } // CoreProjectionMismatches reports fields that should already agree on the -// narrow Phase 15A path but do not. It intentionally excludes adapter-local -// `PublishHealthy`, which is not yet rebound to the core publication owner. +// current bounded core-present path but do not. func (bs *BlockService) CoreProjectionMismatches(path string) []string { proj, ok := bs.CoreProjection(path) if !ok { @@ -161,6 +160,9 @@ func (bs *BlockService) CoreProjectionMismatches(path string) []string { if readiness.ShipperConnected != proj.Readiness.ShipperConnected { mismatches = append(mismatches, "shipper_connected") } + if readiness.PublishHealthy != proj.Publication.Healthy { + mismatches = append(mismatches, "publish_healthy") + } return mismatches } @@ -963,6 +965,7 @@ func (bs *BlockService) CollectBlockVolumeHeartbeat() []blockvol.BlockVolumeInfo for i := range msgs { if s, ok := bs.replStates[msgs[i].Path]; ok { msgs[i].ReplicaDataAddr, msgs[i].ReplicaCtrlAddr = bs.heartbeatReplicaAddrs(msgs[i].Path, s) + msgs[i].ReplicaReady = bs.heartbeatReplicaReady(msgs[i].Path, s) } msgs[i].ReplicaDegraded = bs.heartbeatReplicaDegraded(msgs[i].Path, msgs[i].ReplicaDegraded) // NVMe publication: report nvme_addr and nqn if NVMe target is running. @@ -1004,6 +1007,20 @@ func (bs *BlockService) heartbeatReplicaAddrs(path string, state *volReplState) return "", "" } +// heartbeatReplicaReady returns the explicit replica-readiness truth that should +// be exposed on the current heartbeat surface. On the core-present path it +// prefers the core-owned readiness projection; older paths fall back to the +// adapter-local publish gate for compatibility. +func (bs *BlockService) heartbeatReplicaReady(path string, state *volReplState) bool { + if state == nil { + return false + } + if proj, ok := bs.CoreProjection(path); ok { + return proj.Readiness.ReplicaReady + } + return state.publishHealthy +} + // heartbeatReplicaDegraded returns the bounded degraded bit for the current // heartbeat surface. On the Phase 15 live path it prefers the core mode when // present, then falls back to the runtime-local status bit. @@ -1118,10 +1135,10 @@ func (bs *BlockService) markReceiverReady(path, dataAddr, ctrlAddr string) { state.allReplicas = nil } -// ReadinessSnapshot reports the service-owned assignment/readiness closure for -// one volume. On the Phase 15 live path it prefers the explicit core projection -// for the aligned readiness subset, while `PublishHealthy` remains adapter-local -// until publication ownership is fully rebound. +// ReadinessSnapshot reports the current server-boundary readiness/publication +// closure for one volume. On the core-present path it prefers the explicit core +// projection for aligned readiness plus publication health, while retaining +// adapter-local fallback only when the core is absent. func (bs *BlockService) ReadinessSnapshot(path string) BlockReadinessSnapshot { snap := BlockReadinessSnapshot{} bs.replMu.RLock() @@ -1141,6 +1158,7 @@ func (bs *BlockService) ReadinessSnapshot(path string) BlockReadinessSnapshot { snap.ShipperConfigured = proj.Readiness.ShipperConfigured snap.ShipperConnected = proj.Readiness.ShipperConnected snap.ReplicaEligible = proj.Readiness.ReplicaReady + snap.PublishHealthy = proj.Publication.Healthy } return snap } @@ -1154,6 +1172,7 @@ func (bs *BlockService) ReadinessSnapshot(path string) BlockReadinessSnapshot { snap.ShipperConfigured = proj.Readiness.ShipperConfigured snap.ShipperConnected = proj.Readiness.ShipperConnected snap.ReplicaEligible = proj.Readiness.ReplicaReady + snap.PublishHealthy = proj.Publication.Healthy } return snap } diff --git a/weed/server/volume_server_block_test.go b/weed/server/volume_server_block_test.go index e084e7329..11f9ca626 100644 --- a/weed/server/volume_server_block_test.go +++ b/weed/server/volume_server_block_test.go @@ -937,8 +937,8 @@ func TestBlockService_DebugInfoForVolume_UsesCoreProjectionPrimaryPath(t *testin } readiness := bs.ReadinessSnapshot(path) - if !readiness.PublishHealthy { - t.Fatalf("expected adapter-local readiness to still report publish healthy, got %+v", readiness) + if readiness.PublishHealthy { + t.Fatalf("readiness snapshot must follow core publication truth on primary path without durable boundary, got %+v", readiness) } vol, ok := bs.blockStore.GetBlockVolume(path) @@ -1064,6 +1064,9 @@ func TestBlockService_CollectBlockVolumeHeartbeat_PrimaryUsesCoreReadinessGate(t if msg.ReplicaCtrlAddr != "10.0.0.2:4261" { t.Fatalf("ReplicaCtrlAddr=%q", msg.ReplicaCtrlAddr) } + if msg.ReplicaReady { + t.Fatalf("primary heartbeat must not claim replica-ready truth, msg=%+v", msg) + } } func TestBlockService_CollectBlockVolumeHeartbeat_ReplicaUsesCoreReadinessGate(t *testing.T) { @@ -1117,6 +1120,9 @@ func TestBlockService_CollectBlockVolumeHeartbeat_ReplicaUsesCoreReadinessGate(t if msg.ReplicaCtrlAddr != expectedCtrl { t.Fatalf("ReplicaCtrlAddr=%q expected=%q", msg.ReplicaCtrlAddr, expectedCtrl) } + if !msg.ReplicaReady { + t.Fatalf("replica heartbeat should carry explicit replica-ready truth, msg=%+v", msg) + } } func TestBlockService_ReadinessSnapshot_PrefersCoreProjectionPrimaryFields(t *testing.T) { @@ -1157,7 +1163,47 @@ func TestBlockService_ReadinessSnapshot_PrefersCoreProjectionPrimaryFields(t *te t.Fatalf("expected snapshot shipper_configured from core projection, got %+v", snap) } if snap.PublishHealthy { - t.Fatalf("publish_healthy should remain adapter-local on readiness snapshot, got %+v", snap) + t.Fatalf("publish_healthy should follow core publication truth on primary path without durable boundary, got %+v", snap) + } +} + +func TestBlockService_ReadinessSnapshot_PrefersCorePublicationHealth(t *testing.T) { + bs := newTestBlockServiceDirect(t) + path := createTestVolDirect(t, bs, "vol-readiness-publish-healthy") + + errs := bs.ApplyAssignments([]blockvol.BlockVolumeAssignment{ + { + Path: path, + Epoch: 1, + Role: blockvol.RoleToWire(blockvol.RolePrimary), + LeaseTtlMs: 30000, + ReplicaServerID: "vs-2", + ReplicaDataAddr: "10.0.0.2:4260", + ReplicaCtrlAddr: "10.0.0.2:4261", + }, + }) + if len(errs) != 1 || errs[0] != nil { + t.Fatalf("apply assignment errs=%v", errs) + } + + bs.applyCoreEvent(engine.ShipperConnectedObserved{ID: path}) + bs.applyCoreEvent(engine.BarrierAccepted{ID: path, FlushedLSN: 12}) + + bs.replMu.Lock() + state := bs.replStates[path] + if state == nil { + bs.replMu.Unlock() + t.Fatal("missing repl state") + } + state.publishHealthy = false + bs.replMu.Unlock() + + snap := bs.ReadinessSnapshot(path) + if !snap.PublishHealthy { + t.Fatalf("publish_healthy should follow core publication truth once healthy, got %+v", snap) + } + if mismatches := bs.CoreProjectionMismatches(path); len(mismatches) != 0 { + t.Fatalf("readiness/core mismatches=%v", mismatches) } } @@ -1198,7 +1244,7 @@ func TestBlockService_ReadinessSnapshot_PrefersCoreProjectionReplicaFields(t *te t.Fatalf("expected snapshot replica_eligible from core projection, got %+v", snap) } if snap.PublishHealthy { - t.Fatalf("publish_healthy should remain adapter-local on readiness snapshot, got %+v", snap) + t.Fatalf("publish_healthy should follow core publication truth on replica path, got %+v", snap) } } diff --git a/weed/storage/blockvol/block_heartbeat.go b/weed/storage/blockvol/block_heartbeat.go index 2e1862897..87ea4e9b5 100644 --- a/weed/storage/blockvol/block_heartbeat.go +++ b/weed/storage/blockvol/block_heartbeat.go @@ -8,22 +8,23 @@ import ( // BlockVolumeInfoMessage is the heartbeat status for one block volume. // Mirrors the proto message that will be generated from master.proto. type BlockVolumeInfoMessage struct { - Path string // volume file path (unique ID on this server) - VolumeSize uint64 // logical size in bytes - BlockSize uint32 // block size in bytes - Epoch uint64 // current fencing epoch - Role uint32 // blockvol.Role as uint32 for wire compat - WalHeadLsn uint64 // WAL head LSN - CheckpointLsn uint64 // last flushed LSN - HasLease bool // whether volume holds a valid lease - DiskType string // e.g., "ssd", "hdd" - ReplicaDataAddr string // receiver data listen addr (VS reports in heartbeat) - ReplicaCtrlAddr string // receiver ctrl listen addr - HealthScore float64 // CP8-2: 0.0-1.0 - ScrubErrors int64 // CP8-2: lifetime scrub error count - LastScrubTime int64 // CP8-2: unix seconds - ReplicaDegraded bool // CP8-2: true if any replica shipper degraded - DurabilityMode string // CP8-3-1: "best_effort", "sync_all", "sync_quorum" + Path string // volume file path (unique ID on this server) + VolumeSize uint64 // logical size in bytes + BlockSize uint32 // block size in bytes + Epoch uint64 // current fencing epoch + Role uint32 // blockvol.Role as uint32 for wire compat + WalHeadLsn uint64 // WAL head LSN + CheckpointLsn uint64 // last flushed LSN + HasLease bool // whether volume holds a valid lease + DiskType string // e.g., "ssd", "hdd" + ReplicaDataAddr string // receiver data listen addr (VS reports in heartbeat) + ReplicaCtrlAddr string // receiver ctrl listen addr + ReplicaReady bool // explicit replica readiness truth on the heartbeat seam + HealthScore float64 // CP8-2: 0.0-1.0 + ScrubErrors int64 // CP8-2: lifetime scrub error count + LastScrubTime int64 // CP8-2: unix seconds + ReplicaDegraded bool // CP8-2: true if any replica shipper degraded + DurabilityMode string // CP8-3-1: "best_effort", "sync_all", "sync_quorum" NvmeAddr string // NVMe/TCP target address (ip:port), empty if NVMe disabled NQN string // NVMe subsystem NQN, empty if NVMe disabled ReplicaShipperStates []ReplicaShipperStatus // CP13-7: per-replica state from primary's shipper group @@ -60,18 +61,18 @@ func ToBlockVolumeInfoMessage(path, diskType string, vol *BlockVol) BlockVolumeI status := vol.Status() hs := vol.HealthStats() return BlockVolumeInfoMessage{ - Path: path, - VolumeSize: info.VolumeSize, - BlockSize: info.BlockSize, - Epoch: status.Epoch, - Role: RoleToWire(status.Role), - WalHeadLsn: status.WALHeadLSN, - CheckpointLsn: status.CheckpointLSN, - HasLease: status.HasLease, - DiskType: diskType, - HealthScore: status.HealthScore, - ScrubErrors: hs.ScrubErrors, - LastScrubTime: hs.LastScrubTime, + Path: path, + VolumeSize: info.VolumeSize, + BlockSize: info.BlockSize, + Epoch: status.Epoch, + Role: RoleToWire(status.Role), + WalHeadLsn: status.WALHeadLSN, + CheckpointLsn: status.CheckpointLSN, + HasLease: status.HasLease, + DiskType: diskType, + HealthScore: status.HealthScore, + ScrubErrors: hs.ScrubErrors, + LastScrubTime: hs.LastScrubTime, ReplicaDegraded: status.ReplicaDegraded, DurabilityMode: vol.DurabilityMode().String(), ReplicaShipperStates: vol.ReplicaShipperStates(), diff --git a/weed/storage/blockvol/block_heartbeat_proto.go b/weed/storage/blockvol/block_heartbeat_proto.go index 3cbac72f1..aa4a4ddd0 100644 --- a/weed/storage/blockvol/block_heartbeat_proto.go +++ b/weed/storage/blockvol/block_heartbeat_proto.go @@ -18,6 +18,7 @@ func InfoMessageToProto(m BlockVolumeInfoMessage) *master_pb.BlockVolumeInfoMess DiskType: m.DiskType, ReplicaDataAddr: m.ReplicaDataAddr, ReplicaCtrlAddr: m.ReplicaCtrlAddr, + ReplicaReady: &m.ReplicaReady, HealthScore: m.HealthScore, ScrubErrors: m.ScrubErrors, LastScrubTime: m.LastScrubTime, @@ -45,6 +46,7 @@ func InfoMessageFromProto(p *master_pb.BlockVolumeInfoMessage) BlockVolumeInfoMe DiskType: p.DiskType, ReplicaDataAddr: p.ReplicaDataAddr, ReplicaCtrlAddr: p.ReplicaCtrlAddr, + ReplicaReady: p.GetReplicaReady(), HealthScore: p.HealthScore, ScrubErrors: p.ScrubErrors, LastScrubTime: p.LastScrubTime, @@ -166,4 +168,3 @@ func AssignmentsFromProto(protos []*master_pb.BlockVolumeAssignment) []BlockVolu } return out } - diff --git a/weed/storage/blockvol/block_heartbeat_proto_test.go b/weed/storage/blockvol/block_heartbeat_proto_test.go index 3a020c231..2b02dd46a 100644 --- a/weed/storage/blockvol/block_heartbeat_proto_test.go +++ b/weed/storage/blockvol/block_heartbeat_proto_test.go @@ -205,12 +205,12 @@ func TestNilProtoConversions(t *testing.T) { func TestInfoMessage_HealthScoreRoundTrip(t *testing.T) { orig := BlockVolumeInfoMessage{ - Path: "/data/vol.blk", - VolumeSize: 1 << 30, - BlockSize: 4096, - Epoch: 5, - HealthScore: 0.85, - ScrubErrors: 3, + Path: "/data/vol.blk", + VolumeSize: 1 << 30, + BlockSize: 4096, + Epoch: 5, + HealthScore: 0.85, + ScrubErrors: 3, LastScrubTime: 1709000000, } pb := InfoMessageToProto(orig) @@ -247,6 +247,26 @@ func TestInfoMessage_ReplicaDegradedRoundTrip(t *testing.T) { } } +func TestInfoMessage_ReplicaReadyRoundTrip(t *testing.T) { + orig := BlockVolumeInfoMessage{ + Path: "/data/vol.blk", + Epoch: 1, + ReplicaReady: true, + } + pb := InfoMessageToProto(orig) + back := InfoMessageFromProto(pb) + if !back.ReplicaReady { + t.Fatal("ReplicaReady should be true after round-trip") + } + + orig.ReplicaReady = false + pb = InfoMessageToProto(orig) + back = InfoMessageFromProto(pb) + if back.ReplicaReady { + t.Fatal("ReplicaReady should be false after round-trip") + } +} + func TestAssignment_MultiReplicaRoundTrip(t *testing.T) { orig := BlockVolumeAssignment{ Path: "/data/vol.blk",