Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
authorSami Hiltunen <shiltunen@gitlab.com>2021-07-13 17:12:36 +0300
committerToon Claes <toon@gitlab.com>2021-07-16 10:35:33 +0300
commit0c48ca9e3f368f03d0d78de0a31540d2fe248242 (patch)
treeca8a22c6b2d630dd1cc8d7ae3d1109f5e5aad026 /proto
parent85e5c81acf378523617d6b6fc85c9d4c0d61f235 (diff)
Remove `praefect reconcile` subcommand
This commit removes the `praefect reconcile` sub-command and all code associated with it. With the automatic reonciler in place since GitLab 13.4, there hasn't been really reasons to use the manual one anymore. Using the manual reconciler may even be counter productive as: 1. It always uses one of the storages as the reference storage and replicates from it to the target storage any repositories that differ between the storages. This is not ideal as it could be that only some of the repositories are up to date on the reference and some on the other storage. Praefect checks the generations before applying replication jobs to protect agains this but this does result in unneeded replication jobs. 2. The manual reconciler crawls the disks, which takes a long time in practice to schedule all the jobs. 3. The manual reconciler doesn't take into account variable replication factor and replicates any missing repositories to the other storage. This may result in repositories exceeding their replication factors. 4. The manual reconciler doesn't consider already scheduled jobs in the queue but schedules duplicate ones. As the manual reconciler always tries to mirror whole storages, it doesn't play well together at all with variable replication factor and repository specific primaries. Due to this, there's a check in place that prevents it from running with repository-specific primaries enabled. Repository-specific primaries are always enabled since GitLab 14.0, so the command is currently unusable. Deprecation message was already added to the documentation in prior releases so we can remove it. Changelog: removal
Diffstat (limited to 'proto')
-rw-r--r--proto/go/gitalypb/praefect.pb.go352
-rw-r--r--proto/go/gitalypb/praefect_grpc.pb.go74
-rw-r--r--proto/praefect.proto32
3 files changed, 61 insertions, 397 deletions
diff --git a/proto/go/gitalypb/praefect.pb.go b/proto/go/gitalypb/praefect.pb.go
index 3049f8b73..9fdc2d146 100644
--- a/proto/go/gitalypb/praefect.pb.go
+++ b/proto/go/gitalypb/praefect.pb.go
@@ -444,175 +444,6 @@ func (x *RepositoryReplicasResponse) GetReplicas() []*RepositoryReplicasResponse
return nil
}
-type ConsistencyCheckRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- VirtualStorage string `protobuf:"bytes,1,opt,name=virtual_storage,json=virtualStorage,proto3" json:"virtual_storage,omitempty"`
- // The target storage is the storage you wish to check for inconsistencies
- // against a reference storage (typically the current primary).
- TargetStorage string `protobuf:"bytes,2,opt,name=target_storage,json=targetStorage,proto3" json:"target_storage,omitempty"`
- // Optionally provide a reference storage to compare the target storage
- // against. If a reference storage is omitted, the current primary will be
- // used.
- ReferenceStorage string `protobuf:"bytes,3,opt,name=reference_storage,json=referenceStorage,proto3" json:"reference_storage,omitempty"`
- // Be default, reconcilliation is enabled. Disabling reconcilliation will
- // make the request side-effect free.
- DisableReconcilliation bool `protobuf:"varint,4,opt,name=disable_reconcilliation,json=disableReconcilliation,proto3" json:"disable_reconcilliation,omitempty"`
-}
-
-func (x *ConsistencyCheckRequest) Reset() {
- *x = ConsistencyCheckRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_praefect_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ConsistencyCheckRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConsistencyCheckRequest) ProtoMessage() {}
-
-func (x *ConsistencyCheckRequest) ProtoReflect() protoreflect.Message {
- mi := &file_praefect_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConsistencyCheckRequest.ProtoReflect.Descriptor instead.
-func (*ConsistencyCheckRequest) Descriptor() ([]byte, []int) {
- return file_praefect_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *ConsistencyCheckRequest) GetVirtualStorage() string {
- if x != nil {
- return x.VirtualStorage
- }
- return ""
-}
-
-func (x *ConsistencyCheckRequest) GetTargetStorage() string {
- if x != nil {
- return x.TargetStorage
- }
- return ""
-}
-
-func (x *ConsistencyCheckRequest) GetReferenceStorage() string {
- if x != nil {
- return x.ReferenceStorage
- }
- return ""
-}
-
-func (x *ConsistencyCheckRequest) GetDisableReconcilliation() bool {
- if x != nil {
- return x.DisableReconcilliation
- }
- return false
-}
-
-type ConsistencyCheckResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- RepoRelativePath string `protobuf:"bytes,1,opt,name=repo_relative_path,json=repoRelativePath,proto3" json:"repo_relative_path,omitempty"`
- TargetChecksum string `protobuf:"bytes,2,opt,name=target_checksum,json=targetChecksum,proto3" json:"target_checksum,omitempty"`
- ReferenceChecksum string `protobuf:"bytes,3,opt,name=reference_checksum,json=referenceChecksum,proto3" json:"reference_checksum,omitempty"`
- // If resync was enabled, then each inconsistency will schedule a replication
- // job. A replication ID is returned to track the corresponding job.
- ReplJobId uint64 `protobuf:"varint,4,opt,name=repl_job_id,json=replJobId,proto3" json:"repl_job_id,omitempty"`
- // If the reference storage was not specified, reply with the reference used
- ReferenceStorage string `protobuf:"bytes,5,opt,name=reference_storage,json=referenceStorage,proto3" json:"reference_storage,omitempty"`
- // The list of errors that appeared during the operation execution for the current repository.
- Errors []string `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors,omitempty"`
-}
-
-func (x *ConsistencyCheckResponse) Reset() {
- *x = ConsistencyCheckResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_praefect_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ConsistencyCheckResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConsistencyCheckResponse) ProtoMessage() {}
-
-func (x *ConsistencyCheckResponse) ProtoReflect() protoreflect.Message {
- mi := &file_praefect_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConsistencyCheckResponse.ProtoReflect.Descriptor instead.
-func (*ConsistencyCheckResponse) Descriptor() ([]byte, []int) {
- return file_praefect_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *ConsistencyCheckResponse) GetRepoRelativePath() string {
- if x != nil {
- return x.RepoRelativePath
- }
- return ""
-}
-
-func (x *ConsistencyCheckResponse) GetTargetChecksum() string {
- if x != nil {
- return x.TargetChecksum
- }
- return ""
-}
-
-func (x *ConsistencyCheckResponse) GetReferenceChecksum() string {
- if x != nil {
- return x.ReferenceChecksum
- }
- return ""
-}
-
-func (x *ConsistencyCheckResponse) GetReplJobId() uint64 {
- if x != nil {
- return x.ReplJobId
- }
- return 0
-}
-
-func (x *ConsistencyCheckResponse) GetReferenceStorage() string {
- if x != nil {
- return x.ReferenceStorage
- }
- return ""
-}
-
-func (x *ConsistencyCheckResponse) GetErrors() []string {
- if x != nil {
- return x.Errors
- }
- return nil
-}
-
type DatalossCheckResponse_Repository struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -631,7 +462,7 @@ type DatalossCheckResponse_Repository struct {
func (x *DatalossCheckResponse_Repository) Reset() {
*x = DatalossCheckResponse_Repository{}
if protoimpl.UnsafeEnabled {
- mi := &file_praefect_proto_msgTypes[10]
+ mi := &file_praefect_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -644,7 +475,7 @@ func (x *DatalossCheckResponse_Repository) String() string {
func (*DatalossCheckResponse_Repository) ProtoMessage() {}
func (x *DatalossCheckResponse_Repository) ProtoReflect() protoreflect.Message {
- mi := &file_praefect_proto_msgTypes[10]
+ mi := &file_praefect_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -708,7 +539,7 @@ type DatalossCheckResponse_Repository_Storage struct {
func (x *DatalossCheckResponse_Repository_Storage) Reset() {
*x = DatalossCheckResponse_Repository_Storage{}
if protoimpl.UnsafeEnabled {
- mi := &file_praefect_proto_msgTypes[11]
+ mi := &file_praefect_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -721,7 +552,7 @@ func (x *DatalossCheckResponse_Repository_Storage) String() string {
func (*DatalossCheckResponse_Repository_Storage) ProtoMessage() {}
func (x *DatalossCheckResponse_Repository_Storage) ProtoReflect() protoreflect.Message {
- mi := &file_praefect_proto_msgTypes[11]
+ mi := &file_praefect_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -784,7 +615,7 @@ type RepositoryReplicasResponse_RepositoryDetails struct {
func (x *RepositoryReplicasResponse_RepositoryDetails) Reset() {
*x = RepositoryReplicasResponse_RepositoryDetails{}
if protoimpl.UnsafeEnabled {
- mi := &file_praefect_proto_msgTypes[12]
+ mi := &file_praefect_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -797,7 +628,7 @@ func (x *RepositoryReplicasResponse_RepositoryDetails) String() string {
func (*RepositoryReplicasResponse_RepositoryDetails) ProtoMessage() {}
func (x *RepositoryReplicasResponse_RepositoryDetails) ProtoReflect() protoreflect.Message {
- mi := &file_praefect_proto_msgTypes[12]
+ mi := &file_praefect_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -918,72 +749,37 @@ var file_praefect_proto_rawDesc = []byte{
0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73,
0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72,
0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0xcf, 0x01,
- 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x68, 0x65,
- 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x69, 0x72,
- 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6f,
- 0x72, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67,
- 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53,
- 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
- 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
- 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
- 0x85, 0x02, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43,
- 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x61,
- 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x52, 0x65,
- 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b,
- 0x73, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x11, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73,
- 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x69,
- 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x4a, 0x6f, 0x62,
- 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f,
- 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12,
- 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x32, 0xee, 0x03, 0x0a, 0x13, 0x50, 0x72, 0x61, 0x65,
- 0x66, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
- 0x5b, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52,
- 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c,
- 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x10,
- 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b,
- 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73,
- 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69,
- 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x4c, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73,
- 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e,
- 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x61,
- 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x26,
- 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e,
- 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65,
- 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x61, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79,
- 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
- 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67,
- 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x1a, 0x04, 0xf0, 0x97, 0x28, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c,
- 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72,
- 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x32, 0x95, 0x03,
+ 0x0a, 0x13, 0x50, 0x72, 0x61, 0x65, 0x66, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74,
+ 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x69,
+ 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52,
+ 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
+ 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f,
+ 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68,
+ 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x61, 0x74,
+ 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6c,
+ 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x6a, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61,
+ 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x67, 0x69,
+ 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
+ 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74,
+ 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f,
+ 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14,
+ 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61,
+ 0x63, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65,
+ 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74,
+ 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61,
+ 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a,
+ 0x04, 0xf0, 0x97, 0x28, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67,
+ 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
+ 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
}
var (
@@ -998,7 +794,7 @@ func file_praefect_proto_rawDescGZIP() []byte {
return file_praefect_proto_rawDescData
}
-var file_praefect_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
+var file_praefect_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_praefect_proto_goTypes = []interface{}{
(*SetReplicationFactorRequest)(nil), // 0: gitaly.SetReplicationFactorRequest
(*SetReplicationFactorResponse)(nil), // 1: gitaly.SetReplicationFactorResponse
@@ -1008,32 +804,28 @@ var file_praefect_proto_goTypes = []interface{}{
(*DatalossCheckResponse)(nil), // 5: gitaly.DatalossCheckResponse
(*RepositoryReplicasRequest)(nil), // 6: gitaly.RepositoryReplicasRequest
(*RepositoryReplicasResponse)(nil), // 7: gitaly.RepositoryReplicasResponse
- (*ConsistencyCheckRequest)(nil), // 8: gitaly.ConsistencyCheckRequest
- (*ConsistencyCheckResponse)(nil), // 9: gitaly.ConsistencyCheckResponse
- (*DatalossCheckResponse_Repository)(nil), // 10: gitaly.DatalossCheckResponse.Repository
- (*DatalossCheckResponse_Repository_Storage)(nil), // 11: gitaly.DatalossCheckResponse.Repository.Storage
- (*RepositoryReplicasResponse_RepositoryDetails)(nil), // 12: gitaly.RepositoryReplicasResponse.RepositoryDetails
- (*Repository)(nil), // 13: gitaly.Repository
+ (*DatalossCheckResponse_Repository)(nil), // 8: gitaly.DatalossCheckResponse.Repository
+ (*DatalossCheckResponse_Repository_Storage)(nil), // 9: gitaly.DatalossCheckResponse.Repository.Storage
+ (*RepositoryReplicasResponse_RepositoryDetails)(nil), // 10: gitaly.RepositoryReplicasResponse.RepositoryDetails
+ (*Repository)(nil), // 11: gitaly.Repository
}
var file_praefect_proto_depIdxs = []int32{
- 10, // 0: gitaly.DatalossCheckResponse.repositories:type_name -> gitaly.DatalossCheckResponse.Repository
- 13, // 1: gitaly.RepositoryReplicasRequest.repository:type_name -> gitaly.Repository
- 12, // 2: gitaly.RepositoryReplicasResponse.primary:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails
- 12, // 3: gitaly.RepositoryReplicasResponse.replicas:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails
- 11, // 4: gitaly.DatalossCheckResponse.Repository.storages:type_name -> gitaly.DatalossCheckResponse.Repository.Storage
- 13, // 5: gitaly.RepositoryReplicasResponse.RepositoryDetails.repository:type_name -> gitaly.Repository
+ 8, // 0: gitaly.DatalossCheckResponse.repositories:type_name -> gitaly.DatalossCheckResponse.Repository
+ 11, // 1: gitaly.RepositoryReplicasRequest.repository:type_name -> gitaly.Repository
+ 10, // 2: gitaly.RepositoryReplicasResponse.primary:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails
+ 10, // 3: gitaly.RepositoryReplicasResponse.replicas:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails
+ 9, // 4: gitaly.DatalossCheckResponse.Repository.storages:type_name -> gitaly.DatalossCheckResponse.Repository.Storage
+ 11, // 5: gitaly.RepositoryReplicasResponse.RepositoryDetails.repository:type_name -> gitaly.Repository
6, // 6: gitaly.PraefectInfoService.RepositoryReplicas:input_type -> gitaly.RepositoryReplicasRequest
- 8, // 7: gitaly.PraefectInfoService.ConsistencyCheck:input_type -> gitaly.ConsistencyCheckRequest
- 4, // 8: gitaly.PraefectInfoService.DatalossCheck:input_type -> gitaly.DatalossCheckRequest
- 2, // 9: gitaly.PraefectInfoService.SetAuthoritativeStorage:input_type -> gitaly.SetAuthoritativeStorageRequest
- 0, // 10: gitaly.PraefectInfoService.SetReplicationFactor:input_type -> gitaly.SetReplicationFactorRequest
- 7, // 11: gitaly.PraefectInfoService.RepositoryReplicas:output_type -> gitaly.RepositoryReplicasResponse
- 9, // 12: gitaly.PraefectInfoService.ConsistencyCheck:output_type -> gitaly.ConsistencyCheckResponse
- 5, // 13: gitaly.PraefectInfoService.DatalossCheck:output_type -> gitaly.DatalossCheckResponse
- 3, // 14: gitaly.PraefectInfoService.SetAuthoritativeStorage:output_type -> gitaly.SetAuthoritativeStorageResponse
- 1, // 15: gitaly.PraefectInfoService.SetReplicationFactor:output_type -> gitaly.SetReplicationFactorResponse
- 11, // [11:16] is the sub-list for method output_type
- 6, // [6:11] is the sub-list for method input_type
+ 4, // 7: gitaly.PraefectInfoService.DatalossCheck:input_type -> gitaly.DatalossCheckRequest
+ 2, // 8: gitaly.PraefectInfoService.SetAuthoritativeStorage:input_type -> gitaly.SetAuthoritativeStorageRequest
+ 0, // 9: gitaly.PraefectInfoService.SetReplicationFactor:input_type -> gitaly.SetReplicationFactorRequest
+ 7, // 10: gitaly.PraefectInfoService.RepositoryReplicas:output_type -> gitaly.RepositoryReplicasResponse
+ 5, // 11: gitaly.PraefectInfoService.DatalossCheck:output_type -> gitaly.DatalossCheckResponse
+ 3, // 12: gitaly.PraefectInfoService.SetAuthoritativeStorage:output_type -> gitaly.SetAuthoritativeStorageResponse
+ 1, // 13: gitaly.PraefectInfoService.SetReplicationFactor:output_type -> gitaly.SetReplicationFactorResponse
+ 10, // [10:14] is the sub-list for method output_type
+ 6, // [6:10] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
@@ -1144,30 +936,6 @@ func file_praefect_proto_init() {
}
}
file_praefect_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConsistencyCheckRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_praefect_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConsistencyCheckResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_praefect_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DatalossCheckResponse_Repository); i {
case 0:
return &v.state
@@ -1179,7 +947,7 @@ func file_praefect_proto_init() {
return nil
}
}
- file_praefect_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ file_praefect_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DatalossCheckResponse_Repository_Storage); i {
case 0:
return &v.state
@@ -1191,7 +959,7 @@ func file_praefect_proto_init() {
return nil
}
}
- file_praefect_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ file_praefect_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RepositoryReplicasResponse_RepositoryDetails); i {
case 0:
return &v.state
@@ -1210,7 +978,7 @@ func file_praefect_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_praefect_proto_rawDesc,
NumEnums: 0,
- NumMessages: 13,
+ NumMessages: 11,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/proto/go/gitalypb/praefect_grpc.pb.go b/proto/go/gitalypb/praefect_grpc.pb.go
index 5abdde92d..b09fcd6ae 100644
--- a/proto/go/gitalypb/praefect_grpc.pb.go
+++ b/proto/go/gitalypb/praefect_grpc.pb.go
@@ -19,11 +19,6 @@ const _ = grpc.SupportPackageIsVersion7
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type PraefectInfoServiceClient interface {
RepositoryReplicas(ctx context.Context, in *RepositoryReplicasRequest, opts ...grpc.CallOption) (*RepositoryReplicasResponse, error)
- // ConsistencyCheck will perform a consistency check on the requested
- // virtual storage backend. A stream of repository statuses will be sent
- // back indicating which repos are consistent with the primary and which ones
- // need repair.
- ConsistencyCheck(ctx context.Context, in *ConsistencyCheckRequest, opts ...grpc.CallOption) (PraefectInfoService_ConsistencyCheckClient, error)
// DatalossCheck checks for unavailable repositories.
DatalossCheck(ctx context.Context, in *DatalossCheckRequest, opts ...grpc.CallOption) (*DatalossCheckResponse, error)
// SetAuthoritativeStorage sets the authoritative storage for a repository on a given virtual storage.
@@ -58,38 +53,6 @@ func (c *praefectInfoServiceClient) RepositoryReplicas(ctx context.Context, in *
return out, nil
}
-func (c *praefectInfoServiceClient) ConsistencyCheck(ctx context.Context, in *ConsistencyCheckRequest, opts ...grpc.CallOption) (PraefectInfoService_ConsistencyCheckClient, error) {
- stream, err := c.cc.NewStream(ctx, &PraefectInfoService_ServiceDesc.Streams[0], "/gitaly.PraefectInfoService/ConsistencyCheck", opts...)
- if err != nil {
- return nil, err
- }
- x := &praefectInfoServiceConsistencyCheckClient{stream}
- if err := x.ClientStream.SendMsg(in); err != nil {
- return nil, err
- }
- if err := x.ClientStream.CloseSend(); err != nil {
- return nil, err
- }
- return x, nil
-}
-
-type PraefectInfoService_ConsistencyCheckClient interface {
- Recv() (*ConsistencyCheckResponse, error)
- grpc.ClientStream
-}
-
-type praefectInfoServiceConsistencyCheckClient struct {
- grpc.ClientStream
-}
-
-func (x *praefectInfoServiceConsistencyCheckClient) Recv() (*ConsistencyCheckResponse, error) {
- m := new(ConsistencyCheckResponse)
- if err := x.ClientStream.RecvMsg(m); err != nil {
- return nil, err
- }
- return m, nil
-}
-
func (c *praefectInfoServiceClient) DatalossCheck(ctx context.Context, in *DatalossCheckRequest, opts ...grpc.CallOption) (*DatalossCheckResponse, error) {
out := new(DatalossCheckResponse)
err := c.cc.Invoke(ctx, "/gitaly.PraefectInfoService/DatalossCheck", in, out, opts...)
@@ -122,11 +85,6 @@ func (c *praefectInfoServiceClient) SetReplicationFactor(ctx context.Context, in
// for forward compatibility
type PraefectInfoServiceServer interface {
RepositoryReplicas(context.Context, *RepositoryReplicasRequest) (*RepositoryReplicasResponse, error)
- // ConsistencyCheck will perform a consistency check on the requested
- // virtual storage backend. A stream of repository statuses will be sent
- // back indicating which repos are consistent with the primary and which ones
- // need repair.
- ConsistencyCheck(*ConsistencyCheckRequest, PraefectInfoService_ConsistencyCheckServer) error
// DatalossCheck checks for unavailable repositories.
DatalossCheck(context.Context, *DatalossCheckRequest) (*DatalossCheckResponse, error)
// SetAuthoritativeStorage sets the authoritative storage for a repository on a given virtual storage.
@@ -152,9 +110,6 @@ type UnimplementedPraefectInfoServiceServer struct {
func (UnimplementedPraefectInfoServiceServer) RepositoryReplicas(context.Context, *RepositoryReplicasRequest) (*RepositoryReplicasResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RepositoryReplicas not implemented")
}
-func (UnimplementedPraefectInfoServiceServer) ConsistencyCheck(*ConsistencyCheckRequest, PraefectInfoService_ConsistencyCheckServer) error {
- return status.Errorf(codes.Unimplemented, "method ConsistencyCheck not implemented")
-}
func (UnimplementedPraefectInfoServiceServer) DatalossCheck(context.Context, *DatalossCheckRequest) (*DatalossCheckResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DatalossCheck not implemented")
}
@@ -195,27 +150,6 @@ func _PraefectInfoService_RepositoryReplicas_Handler(srv interface{}, ctx contex
return interceptor(ctx, in, info, handler)
}
-func _PraefectInfoService_ConsistencyCheck_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(ConsistencyCheckRequest)
- if err := stream.RecvMsg(m); err != nil {
- return err
- }
- return srv.(PraefectInfoServiceServer).ConsistencyCheck(m, &praefectInfoServiceConsistencyCheckServer{stream})
-}
-
-type PraefectInfoService_ConsistencyCheckServer interface {
- Send(*ConsistencyCheckResponse) error
- grpc.ServerStream
-}
-
-type praefectInfoServiceConsistencyCheckServer struct {
- grpc.ServerStream
-}
-
-func (x *praefectInfoServiceConsistencyCheckServer) Send(m *ConsistencyCheckResponse) error {
- return x.ServerStream.SendMsg(m)
-}
-
func _PraefectInfoService_DatalossCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DatalossCheckRequest)
if err := dec(in); err != nil {
@@ -294,12 +228,6 @@ var PraefectInfoService_ServiceDesc = grpc.ServiceDesc{
Handler: _PraefectInfoService_SetReplicationFactor_Handler,
},
},
- Streams: []grpc.StreamDesc{
- {
- StreamName: "ConsistencyCheck",
- Handler: _PraefectInfoService_ConsistencyCheck_Handler,
- ServerStreams: true,
- },
- },
+ Streams: []grpc.StreamDesc{},
Metadata: "praefect.proto",
}
diff --git a/proto/praefect.proto b/proto/praefect.proto
index 71198a687..d89d2c3e0 100644
--- a/proto/praefect.proto
+++ b/proto/praefect.proto
@@ -11,11 +11,6 @@ service PraefectInfoService {
option (intercepted) = true;
rpc RepositoryReplicas(RepositoryReplicasRequest) returns (RepositoryReplicasResponse);
- // ConsistencyCheck will perform a consistency check on the requested
- // virtual storage backend. A stream of repository statuses will be sent
- // back indicating which repos are consistent with the primary and which ones
- // need repair.
- rpc ConsistencyCheck(ConsistencyCheckRequest) returns (stream ConsistencyCheckResponse);
// DatalossCheck checks for unavailable repositories.
rpc DatalossCheck(DatalossCheckRequest) returns (DatalossCheckResponse);
@@ -110,30 +105,3 @@ message RepositoryReplicasResponse{
RepositoryDetails primary = 1;
repeated RepositoryDetails replicas = 2;
}
-
-message ConsistencyCheckRequest {
- string virtual_storage = 1;
- // The target storage is the storage you wish to check for inconsistencies
- // against a reference storage (typically the current primary).
- string target_storage = 2;
- // Optionally provide a reference storage to compare the target storage
- // against. If a reference storage is omitted, the current primary will be
- // used.
- string reference_storage = 3;
- // Be default, reconcilliation is enabled. Disabling reconcilliation will
- // make the request side-effect free.
- bool disable_reconcilliation = 4;
-}
-
-message ConsistencyCheckResponse {
- string repo_relative_path = 1;
- string target_checksum = 2;
- string reference_checksum = 3;
- // If resync was enabled, then each inconsistency will schedule a replication
- // job. A replication ID is returned to track the corresponding job.
- uint64 repl_job_id = 4;
- // If the reference storage was not specified, reply with the reference used
- string reference_storage = 5;
- // The list of errors that appeared during the operation execution for the current repository.
- repeated string errors = 6;
-}