aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/vespa/storageapi/mbusprot/protobuf/maintenance.proto
blob: 74b2646463a314d520753c6dd16066d9947d56ab (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
syntax = "proto3";

option cc_enable_arenas = true;

package storage.mbusprot.protobuf;

import "common.proto";

message DeleteBucketRequest {
    Bucket     bucket               = 1;
    BucketInfo expected_bucket_info = 2;
}

message DeleteBucketResponse {
    BucketInfo bucket_info        = 1;
    BucketId   remapped_bucket_id = 2;
}

message CreateBucketRequest {
    Bucket bucket           = 1;
    bool   create_as_active = 2;
}

message CreateBucketResponse {
    BucketInfo bucket_info        = 1;
    BucketId   remapped_bucket_id = 2;
}

message MergeNode {
    uint32 index = 1;
    bool   source_only = 2;
}

message MergeBucketRequest {
    Bucket             bucket                = 1;
    uint32             cluster_state_version = 2;
    uint64             max_timestamp         = 3;
    repeated MergeNode nodes                 = 4;
    repeated uint32    node_chain            = 5;
    bool               unordered_forwarding  = 6;
}

message MergeBucketResponse {
    BucketId remapped_bucket_id = 1;
}

message MetaDiffEntry {
    uint64   timestamp     = 1;
    GlobalId gid           = 2;
    uint32   header_size   = 3;
    uint32   body_size     = 4;
    uint32   flags         = 5;
    uint32   presence_mask = 6;
}

message GetBucketDiffRequest {
    Bucket                 bucket        = 1;
    uint64                 max_timestamp = 2;
    repeated MergeNode     nodes         = 3;
    repeated MetaDiffEntry diff          = 4;
}

message GetBucketDiffResponse {
    BucketId remapped_bucket_id = 1;
    repeated MetaDiffEntry diff = 2;
}

message ApplyDiffEntry {
    MetaDiffEntry entry_meta = 1;
    bytes document_id = 2;
    bytes header_blob = 3;
    bytes body_blob = 4;
}

message ApplyBucketDiffRequest {
    Bucket             bucket = 1;
    repeated MergeNode nodes  = 2;
    uint32 max_buffer_size = 3;
    repeated ApplyDiffEntry entries = 4;
}

message ApplyBucketDiffResponse {
    BucketId remapped_bucket_id = 1;
    repeated ApplyDiffEntry entries = 4;
}

message ExplicitBucketSet {
    // `Bucket` is not needed, as the space is inferred from the owning message.
    repeated BucketId bucket_ids = 2;
}

message AllBuckets {
    uint32 distributor_index = 1;
    bytes cluster_state = 2;
    bytes distribution_hash = 3;
}

message RequestBucketInfoRequest {
    BucketSpace bucket_space = 1;
    oneof request_for {
        ExplicitBucketSet explicit_bucket_set = 2;
        AllBuckets        all_buckets         = 3;
    }
}

message BucketAndBucketInfo {
    fixed64 raw_bucket_id = 1;
    BucketInfo bucket_info = 2;
}

message SupportedNodeFeatures {
    bool unordered_merge_chaining               = 1;
    bool two_phase_remove_location              = 2;
    bool no_implicit_indexing_of_active_buckets = 3;
    bool document_condition_probe               = 4;
}

message RequestBucketInfoResponse {
    repeated BucketAndBucketInfo bucket_infos = 1;
    // Only present for full bucket info fetches (not for explicit buckets)
    SupportedNodeFeatures supported_node_features = 2;
}

message NotifyBucketChangeRequest {
    Bucket     bucket      = 1;
    BucketInfo bucket_info = 2;
}

message NotifyBucketChangeResponse {
    // Currently empty
}

message SplitBucketRequest {
    Bucket bucket         = 1;
    uint32 min_split_bits = 2;
    uint32 max_split_bits = 3;
    uint32 min_byte_size  = 4;
    uint32 min_doc_count  = 5;
}

message SplitBucketResponse {
    BucketId remapped_bucket_id = 1;
    repeated BucketAndBucketInfo split_info = 2;
}

message JoinBucketsRequest {
    Bucket bucket = 1;
    repeated BucketId source_buckets = 2;
    uint32 min_join_bits = 3;
}

message JoinBucketsResponse {
    BucketInfo bucket_info        = 1;
    BucketId   remapped_bucket_id = 2;
}

message SetBucketStateRequest {
    enum BucketState {
        Inactive = 0;
        Active = 1;
    }

    Bucket bucket = 1;
    BucketState state = 2;
}

message SetBucketStateResponse {
    BucketId remapped_bucket_id = 1;
}