feat(heal): aggregate replacement recovery status (#5916)

Add a replacement recovery peer RPC so Admin v4 can distinguish definitive cluster proofs from unsupported, unavailable, or conflicting peer state without extending the existing background heal v3/v1 status protocol.

Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-08-10 13:03:27 +08:00
committed by GitHub
parent a8c15e90ec
commit 785ee719e7
9 changed files with 639 additions and 43 deletions
+9
View File
@@ -851,6 +851,14 @@ message BackgroundHealStatusResponse {
optional string error_info = 3;
}
message ReplacementRecoveryStatusRequest {}
message ReplacementRecoveryStatusResponse {
bool success = 1;
bytes recovery_status = 2;
optional string error_info = 3;
}
message HealControlRequest {
uint32 version = 1;
string topology_fingerprint = 2;
@@ -1084,6 +1092,7 @@ service NodeService {
rpc SignalService(SignalServiceRequest) returns (SignalServiceResponse) {}; // auth-policy: body-bound
rpc ScannerActivity(ScannerActivityRequest) returns (ScannerActivityResponse) {}; // auth-policy: body-bound
rpc BackgroundHealStatus(BackgroundHealStatusRequest) returns (BackgroundHealStatusResponse) {}; // auth-policy: read-only
rpc ReplacementRecoveryStatus(ReplacementRecoveryStatusRequest) returns (ReplacementRecoveryStatusResponse) {}; // auth-policy: read-only
rpc GetMetacacheListing(GetMetacacheListingRequest) returns (GetMetacacheListingResponse) {}; // auth-policy: unimplemented
rpc UpdateMetacacheListing(UpdateMetacacheListingRequest) returns (UpdateMetacacheListingResponse) {}; // auth-policy: unimplemented
rpc ReloadPoolMeta(ReloadPoolMetaRequest) returns (ReloadPoolMetaResponse) {}; // auth-policy: body-bound