From cf11645a5d969e09ccdf2841c4e78ffa7d4e28db Mon Sep 17 00:00:00 2001 From: Nathan VanBenschoten Date: Thu, 2 Apr 2020 22:20:24 -0400 Subject: [PATCH] kv: batch ranged intent resolution Fixes #46752. Resolves the recent perf regression on TPC-C. This commit follows in the footsteps of #34803 and introduces batching for ranged intent resolution, where previously only point intent resolution was batched. As we found in #46752, this is more important than it has been in the past, because implicit SELECT FOR UPDATE acquires a ranged lock on each row that it updates instead of a single-key lock. The change addresses this by adding a third request batcher to IntentResolver. ResolveIntent requests and ResolveIntentRange requests are batched separately, which is necessary for the use of MaxSpanRequestKeys to work properly (in fact, to be accepted by DistSender at all). To accommodate the ranged nature of ResolveIntentRange request, the notion of pagination is introduced into RequestBatcher. A MaxKeysPerBatchReq option is added to the configuration of a RequestBatcher, which corresponds to the MaxSpanRequestKeys value set on each BatchRequest header. The RequestBatcher is then taught about request pagination and how to work with partial responses. See the previous commit for clarification about the semantics at play here. Release justification: important fix to avoid a performance regression when implicit SELECT FOR UPDATE is enabled. --- pkg/internal/client/requestbatcher/batcher.go | 78 +++++- .../client/requestbatcher/batcher_test.go | 184 ++++++++++--- .../intentresolver/intent_resolver.go | 83 +++--- .../intentresolver/intent_resolver_test.go | 62 ++--- pkg/roachpb/api.pb.go | 256 +++++++++--------- pkg/roachpb/api.proto | 2 +- 6 files changed, 408 insertions(+), 257 deletions(-) diff --git a/pkg/internal/client/requestbatcher/batcher.go b/pkg/internal/client/requestbatcher/batcher.go index c4183dcc1cea..1d5622a77c06 100644 --- a/pkg/internal/client/requestbatcher/batcher.go +++ b/pkg/internal/client/requestbatcher/batcher.go @@ -32,6 +32,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/kv" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/util/contextutil" + "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/cockroach/pkg/util/stop" "github.com/cockroachdb/cockroach/pkg/util/timeutil" ) @@ -109,6 +110,13 @@ type Config struct { // If MaxMsgsPerBatch <= 0 then no limit is enforced. MaxMsgsPerBatch int + // MaxKeysPerBatchReq is the maximum number of keys that each batch is + // allowed to touch during one of its requests. If the limit is exceeded, + // the batch is paginated over a series of individual requests. This limit + // corresponds to the MaxSpanRequestKeys assigned to the Header of each + // request. If MaxKeysPerBatchReq <= 0 then no limit is enforced. + MaxKeysPerBatchReq int + // MaxWait is the maximum amount of time a message should wait in a batch // before being sent. If MaxWait is <= 0 then no wait timeout is enforced. // It is inadvisable to disable both MaxIdle and MaxWait. @@ -264,7 +272,7 @@ func (b *RequestBatcher) sendBatch(ctx context.Context, ba *batch) { var br *roachpb.BatchResponse send := func(ctx context.Context) error { var pErr *roachpb.Error - if br, pErr = b.cfg.Sender.Send(ctx, ba.batchRequest()); pErr != nil { + if br, pErr = b.cfg.Sender.Send(ctx, ba.batchRequest(&b.cfg)); pErr != nil { return pErr.GoError() } return nil @@ -276,16 +284,61 @@ func (b *RequestBatcher) sendBatch(ctx context.Context, ba *batch) { ctx, b.sendBatchOpName, timeutil.Until(ba.sendDeadline), actualSend) } } - err := send(ctx) - for i, r := range ba.reqs { - res := Response{} - if br != nil && i < len(br.Responses) { - res.Resp = br.Responses[i].GetInner() - } - if err != nil { - res.Err = err + // Send requests in a loop to support pagination, which may be necessary + // if MaxKeysPerBatchReq is set. If so, partial responses with resume + // spans may be returned for requests, indicating that the limit was hit + // before they could complete and that they should be resumed over the + // specified key span. Requests in the batch are neither guaranteed to + // be ordered nor guaranteed to be non-overlapping, so we can make no + // assumptions about the requests that will result in full responses + // (with no resume spans) vs. partial responses vs. empty responses (see + // the comment on roachpb.Header.MaxSpanRequestKeys). + // + // To accommodate this, we keep track of all partial responses from + // previous iterations. After receiving a batch of responses during an + // iteration, the responses are each combined with the previous response + // for their corresponding requests. From there, responses that have no + // resume spans are removed. Responses that have resume spans are + // updated appropriately and sent again in the next iteration. The loop + // proceeds until all requests have been run to completion. + var prevResps []roachpb.Response + for len(ba.reqs) > 0 { + err := send(ctx) + nextReqs, nextPrevResps := ba.reqs[:0], prevResps[:0] + for i, r := range ba.reqs { + var res Response + if br != nil { + resp := br.Responses[i].GetInner() + if prevResps != nil { + prevResp := prevResps[i] + if cErr := roachpb.CombineResponses(prevResp, resp); cErr != nil { + log.Fatal(ctx, cErr) + } + resp = prevResp + } + if resume := resp.Header().ResumeSpan; resume != nil { + // Add a trimmed request to the next batch. + h := r.req.Header() + h.SetSpan(*resume) + r.req = r.req.ShallowCopy() + r.req.SetHeader(h) + nextReqs = append(nextReqs, r) + // Strip resume span from previous response and record. + prevH := resp.Header() + prevH.ResumeSpan = nil + prevResp := resp + prevResp.SetHeader(prevH) + nextPrevResps = append(nextPrevResps, prevResp) + continue + } + res.Resp = resp + } + if err != nil { + res.Err = err + } + b.sendResponse(r, res) } - b.sendResponse(r, res) + ba.reqs, prevResps = nextReqs, nextPrevResps } }) } @@ -462,7 +515,7 @@ func (b *batch) rangeID() roachpb.RangeID { return b.reqs[0].rangeID } -func (b *batch) batchRequest() roachpb.BatchRequest { +func (b *batch) batchRequest(cfg *Config) roachpb.BatchRequest { req := roachpb.BatchRequest{ // Preallocate the Requests slice. Requests: make([]roachpb.RequestUnion, 0, len(b.reqs)), @@ -470,6 +523,9 @@ func (b *batch) batchRequest() roachpb.BatchRequest { for _, r := range b.reqs { req.Add(r.req) } + if cfg.MaxKeysPerBatchReq > 0 { + req.MaxSpanRequestKeys = int64(cfg.MaxKeysPerBatchReq) + } return req } diff --git a/pkg/internal/client/requestbatcher/batcher_test.go b/pkg/internal/client/requestbatcher/batcher_test.go index d9a54590ed0e..3262f1eae447 100644 --- a/pkg/internal/client/requestbatcher/batcher_test.go +++ b/pkg/internal/client/requestbatcher/batcher_test.go @@ -29,6 +29,8 @@ import ( ) type batchResp struct { + // TODO(ajwerner): we never actually test that this result is what we expect + // it to be. We should add a test that does so. br *roachpb.BatchResponse pe *roachpb.Error } @@ -58,6 +60,22 @@ func (c chanSender) Send( } } +type senderGroup struct { + b *RequestBatcher + g errgroup.Group +} + +func (g *senderGroup) Send(rangeID roachpb.RangeID, request roachpb.Request) { + g.g.Go(func() error { + _, err := g.b.Send(context.Background(), rangeID, request) + return err + }) +} + +func (g *senderGroup) Wait() error { + return g.g.Wait() +} + func TestBatcherSendOnSizeWithReset(t *testing.T) { // This test ensures that when a single batch ends up sending due to size // constrains its timer is successfully canceled and does not lead to a @@ -84,15 +102,9 @@ func TestBatcherSendOnSizeWithReset(t *testing.T) { Sender: sc, Stopper: stopper, }) - var g errgroup.Group - sendRequest := func(rangeID roachpb.RangeID, request roachpb.Request) { - g.Go(func() error { - _, err := b.Send(context.Background(), rangeID, request) - return err - }) - } - sendRequest(1, &roachpb.GetRequest{}) - sendRequest(1, &roachpb.GetRequest{}) + g := senderGroup{b: b} + g.Send(1, &roachpb.GetRequest{}) + g.Send(1, &roachpb.GetRequest{}) s := <-sc s.respChan <- batchResp{} // See the comment above wait. In rare cases the batch will be sent before the @@ -212,22 +224,16 @@ func TestBatcherSend(t *testing.T) { Sender: sc, Stopper: stopper, }) - var g errgroup.Group - sendRequest := func(rangeID roachpb.RangeID, request roachpb.Request) { - g.Go(func() error { - _, err := b.Send(context.Background(), rangeID, request) - return err - }) - } // Send 3 requests to range 2 and 2 to range 1. // The 3rd range 2 request will trigger immediate sending due to the // MaxMsgsPerBatch configuration. The range 1 batch will be sent after the // MaxWait timeout expires. - sendRequest(1, &roachpb.GetRequest{}) - sendRequest(2, &roachpb.GetRequest{}) - sendRequest(1, &roachpb.GetRequest{}) - sendRequest(2, &roachpb.GetRequest{}) - sendRequest(2, &roachpb.GetRequest{}) + g := senderGroup{b: b} + g.Send(1, &roachpb.GetRequest{}) + g.Send(2, &roachpb.GetRequest{}) + g.Send(1, &roachpb.GetRequest{}) + g.Send(2, &roachpb.GetRequest{}) + g.Send(2, &roachpb.GetRequest{}) // Wait for the range 2 request and ensure it contains 3 requests. s := <-sc assert.Len(t, s.ba.Requests, 3) @@ -305,7 +311,7 @@ func TestPanicWithNilStopper(t *testing.T) { New(Config{Sender: make(chanSender)}) } -// TestBatchTimeout verfies the the RequestBatcher uses the context with the +// TestBatchTimeout verifies the the RequestBatcher uses the context with the // deadline from the latest call to send. func TestBatchTimeout(t *testing.T) { defer leaktest.AfterTest(t)() @@ -405,24 +411,17 @@ func TestIdleAndMaxTimeoutDisabled(t *testing.T) { Sender: sc, Stopper: stopper, }) - var g errgroup.Group - sendRequest := func(rangeID roachpb.RangeID, request roachpb.Request) { - g.Go(func() error { - _, err := b.Send(context.Background(), rangeID, request) - return err - }) - } - // Send 3 requests to range 2 and 2 to range 1. - // The 3rd range 2 request will trigger immediate sending due to the - // MaxMsgsPerBatch configuration. The range 1 batch will be sent after the - // MaxWait timeout expires. - sendRequest(1, &roachpb.GetRequest{}) + // Send 2 requests to range 1. Even with an arbitrarily large delay between + // the requests, they should only be sent when the MaxMsgsPerBatch limit is + // reached, because no MaxWait timeout is configured. + g := senderGroup{b: b} + g.Send(1, &roachpb.GetRequest{}) select { case <-sc: t.Fatalf("RequestBatcher should not sent based on time") case <-time.After(10 * time.Millisecond): } - sendRequest(1, &roachpb.GetRequest{}) + g.Send(1, &roachpb.GetRequest{}) s := <-sc assert.Len(t, s.ba.Requests, 2) s.respChan <- batchResp{} @@ -432,6 +431,121 @@ func TestIdleAndMaxTimeoutDisabled(t *testing.T) { } } +// TestMaxKeysPerBatchReq exercises the RequestBatcher when it is configured to +// assign each request a MaxSpanRequestKeys limit. When such a limit is used, +// the RequestBatcher may receive partial responses to the requests that it +// issues, so it needs to be prepared to paginate requests and combine partial +// responses. +func TestMaxKeysPerBatchReq(t *testing.T) { + defer leaktest.AfterTest(t)() + stopper := stop.NewStopper() + defer stopper.Stop(context.Background()) + sc := make(chanSender) + b := New(Config{ + MaxMsgsPerBatch: 3, + MaxKeysPerBatchReq: 5, + Sender: sc, + Stopper: stopper, + }) + // Send 3 ResolveIntentRange requests. The requests are limited so + // pagination will be required. The following sequence of partial + // results will be returned: + // send([{d-g}, {a-d}, {b, m}]) -> + // scans from [a, c) before hitting limit + // returns [{d-g}, {c-d}, {c-m}] + // send([{d-g}, {c-d}, {c-m}]) -> + // scans from [c, e) before hitting limit + // returns [{e-g}, {}, {e-m}] + // send([{e-g}, {e-m}]) -> + // scans from [e, h) before hitting limit + // returns [{}, {h-m}] + // send([{h-m}]) -> + // scans from [h, m) without hitting limit + // returns [{}] + type span [2]string // [key, endKey] + type spanMap map[span]span + var nilResumeSpan span + makeReq := func(sp span) *roachpb.ResolveIntentRangeRequest { + var req roachpb.ResolveIntentRangeRequest + req.Key = roachpb.Key(sp[0]) + req.EndKey = roachpb.Key(sp[1]) + return &req + } + makeResp := func(ba *roachpb.BatchRequest, resumeSpans spanMap) *roachpb.BatchResponse { + br := ba.CreateReply() + for i, ru := range ba.Requests { + req := ru.GetResolveIntentRange() + reqSp := span{string(req.Key), string(req.EndKey)} + resumeSp, ok := resumeSpans[reqSp] + if !ok { + t.Fatalf("unexpected request: %+v", req) + } + if resumeSp == nilResumeSpan { + continue + } + resp := br.Responses[i].GetResolveIntentRange() + resp.ResumeSpan = &roachpb.Span{ + Key: roachpb.Key(resumeSp[0]), EndKey: roachpb.Key(resumeSp[1]), + } + resp.ResumeReason = roachpb.RESUME_KEY_LIMIT + } + return br + } + g := senderGroup{b: b} + g.Send(1, makeReq(span{"d", "g"})) + g.Send(1, makeReq(span{"a", "d"})) + g.Send(1, makeReq(span{"b", "m"})) + // send([{d-g}, {a-d}, {b, m}]) -> + // scans from [a, c) before hitting limit + // returns [{d-g}, {c-d}, {c-m}] + s := <-sc + assert.Equal(t, int64(5), s.ba.MaxSpanRequestKeys) + assert.Len(t, s.ba.Requests, 3) + br := makeResp(&s.ba, spanMap{ + {"d", "g"}: {"d", "g"}, + {"a", "d"}: {"c", "d"}, + {"b", "m"}: {"c", "m"}, + }) + s.respChan <- batchResp{br: br} + // send([{d-g}, {c-d}, {c-m}]) -> + // scans from [c, e) before hitting limit + // returns [{e-g}, {}, {e-m}] + s = <-sc + assert.Equal(t, int64(5), s.ba.MaxSpanRequestKeys) + assert.Len(t, s.ba.Requests, 3) + br = makeResp(&s.ba, spanMap{ + {"d", "g"}: {"e", "g"}, + {"c", "d"}: nilResumeSpan, + {"c", "m"}: {"e", "m"}, + }) + s.respChan <- batchResp{br: br} + // send([{e-g}, {e-m}]) -> + // scans from [e, h) before hitting limit + // returns [{}, {h-m}] + s = <-sc + assert.Equal(t, int64(5), s.ba.MaxSpanRequestKeys) + assert.Len(t, s.ba.Requests, 2) + br = makeResp(&s.ba, spanMap{ + {"e", "g"}: nilResumeSpan, + {"e", "m"}: {"h", "m"}, + }) + s.respChan <- batchResp{br: br} + // send([{h-m}]) -> + // scans from [h, m) without hitting limit + // returns [{}] + s = <-sc + assert.Equal(t, int64(5), s.ba.MaxSpanRequestKeys) + assert.Len(t, s.ba.Requests, 1) + br = makeResp(&s.ba, spanMap{ + {"h", "m"}: nilResumeSpan, + }) + s.respChan <- batchResp{br: br} + // Make sure everything gets a response. + if err := g.Wait(); err != nil { + t.Fatalf("expected no errors, got %v", err) + } +} + func TestPanicWithNilSender(t *testing.T) { defer leaktest.AfterTest(t)() defer func() { diff --git a/pkg/kv/kvserver/intentresolver/intent_resolver.go b/pkg/kv/kvserver/intentresolver/intent_resolver.go index 4038bcf001f4..75e64dd36530 100644 --- a/pkg/kv/kvserver/intentresolver/intent_resolver.go +++ b/pkg/kv/kvserver/intentresolver/intent_resolver.go @@ -121,8 +121,9 @@ type IntentResolver struct { rdc kvbase.RangeDescriptorCache - gcBatcher *requestbatcher.RequestBatcher - irBatcher *requestbatcher.RequestBatcher + gcBatcher *requestbatcher.RequestBatcher + irBatcher *requestbatcher.RequestBatcher + irRangeBatcher *requestbatcher.RequestBatcher mu struct { syncutil.Mutex @@ -211,6 +212,18 @@ func New(c Config) *IntentResolver { Stopper: c.Stopper, Sender: c.DB.NonTransactionalSender(), }) + ir.irRangeBatcher = requestbatcher.New(requestbatcher.Config{ + Name: "intent_resolver_ir_range_batcher", + MaxMsgsPerBatch: intentResolutionBatchSize, + // NOTE: Allow each request sent in a batch to touch up to twice as + // many keys as messages in the batch to avoid pagination if only a + // few ResolveIntentRange requests touch multiple intents. + MaxKeysPerBatchReq: 2 * intentResolverBatchSize, + MaxWait: c.MaxIntentResolutionBatchWait, + MaxIdle: c.MaxIntentResolutionBatchIdle, + Stopper: c.Stopper, + Sender: c.DB.NonTransactionalSender(), + }) return ir } @@ -787,44 +800,37 @@ func (ir *IntentResolver) ResolveIntents( log.Eventf(ctx, "resolving intents") ctx, cancel := context.WithCancel(ctx) defer cancel() - type resolveReq struct { - rangeID roachpb.RangeID - req roachpb.Request - } - var resolveReqs []resolveReq - var resolveRangeReqs []roachpb.Request + + respChan := make(chan requestbatcher.Response, len(intents)) for _, intent := range intents { + rangeID := ir.lookupRangeID(ctx, intent.Key) + var req roachpb.Request + var batcher *requestbatcher.RequestBatcher if len(intent.EndKey) == 0 { - resolveReqs = append(resolveReqs, - resolveReq{ - rangeID: ir.lookupRangeID(ctx, intent.Key), - req: &roachpb.ResolveIntentRequest{ - RequestHeader: roachpb.RequestHeaderFromSpan(intent.Span), - IntentTxn: intent.Txn, - Status: intent.Status, - Poison: opts.Poison, - IgnoredSeqNums: intent.IgnoredSeqNums, - }, - }) + req = &roachpb.ResolveIntentRequest{ + RequestHeader: roachpb.RequestHeaderFromSpan(intent.Span), + IntentTxn: intent.Txn, + Status: intent.Status, + Poison: opts.Poison, + IgnoredSeqNums: intent.IgnoredSeqNums, + } + batcher = ir.irBatcher } else { - resolveRangeReqs = append(resolveRangeReqs, &roachpb.ResolveIntentRangeRequest{ + req = &roachpb.ResolveIntentRangeRequest{ RequestHeader: roachpb.RequestHeaderFromSpan(intent.Span), IntentTxn: intent.Txn, Status: intent.Status, Poison: opts.Poison, MinTimestamp: opts.MinTimestamp, IgnoredSeqNums: intent.IgnoredSeqNums, - }) + } + batcher = ir.irRangeBatcher } - } - - respChan := make(chan requestbatcher.Response, len(resolveReqs)) - for _, req := range resolveReqs { - if err := ir.irBatcher.SendWithChan(ctx, respChan, req.rangeID, req.req); err != nil { + if err := batcher.SendWithChan(ctx, respChan, rangeID, req); err != nil { return roachpb.NewError(err) } } - for seen := 0; seen < len(resolveReqs); seen++ { + for seen := 0; seen < len(intents); seen++ { select { case resp := <-respChan: if resp.Err != nil { @@ -835,29 +841,6 @@ func (ir *IntentResolver) ResolveIntents( return roachpb.NewError(ctx.Err()) } } - - // Resolve spans differently. We don't know how many intents will be - // swept up with each request, so we limit the spanning resolve - // requests to a maximum number of keys and resume as necessary. - for _, req := range resolveRangeReqs { - for { - b := &kv.Batch{} - b.Header.MaxSpanRequestKeys = intentResolverBatchSize - b.AddRawRequest(req) - if err := ir.db.Run(ctx, b); err != nil { - return b.MustPErr() - } - // Check response to see if it must be resumed. - resp := b.RawResponse().Responses[0].GetInner().(*roachpb.ResolveIntentRangeResponse) - if resp.ResumeSpan == nil { - break - } - reqCopy := *(req.(*roachpb.ResolveIntentRangeRequest)) - reqCopy.SetSpan(*resp.ResumeSpan) - req = &reqCopy - } - } - return nil } diff --git a/pkg/kv/kvserver/intentresolver/intent_resolver_test.go b/pkg/kv/kvserver/intentresolver/intent_resolver_test.go index ab6023e08818..1665b8476e21 100644 --- a/pkg/kv/kvserver/intentresolver/intent_resolver_test.go +++ b/pkg/kv/kvserver/intentresolver/intent_resolver_test.go @@ -341,7 +341,7 @@ func TestCleanupIntentsAsync(t *testing.T) { } // TestCleanupMultipleIntentsAsync verifies that CleanupIntentsAsync sends the -// expected requests when multiple IntentsWithArg are provided to it. +// expected requests when multiple intents are provided to it. func TestCleanupMultipleIntentsAsync(t *testing.T) { defer leaktest.AfterTest(t)() ctx := context.Background() @@ -520,7 +520,7 @@ func TestCleanupTxnIntentsAsync(t *testing.T) { type testCase struct { intents []result.EndTxnIntents before func(*testCase, *IntentResolver) func() - sendFuncs []sendFunc + sendFuncs *sendFuncs } testEndTxnIntents := []result.EndTxnIntents{ { @@ -531,6 +531,9 @@ func TestCleanupTxnIntentsAsync(t *testing.T) { }, LockSpans: []roachpb.Span{ {Key: roachpb.Key("a")}, + {Key: roachpb.Key("b")}, + {Key: roachpb.Key("c"), EndKey: roachpb.Key("d")}, + {Key: roachpb.Key("e"), EndKey: roachpb.Key("f")}, }, }, }, @@ -539,7 +542,7 @@ func TestCleanupTxnIntentsAsync(t *testing.T) { cases := []testCase{ { intents: testEndTxnIntents, - sendFuncs: []sendFunc{}, + sendFuncs: newSendFuncs(t), before: func(tc *testCase, ir *IntentResolver) func() { _, f := ir.lockInFlightTxnCleanup(context.Background(), tc.intents[0].Txn.ID) return f @@ -547,10 +550,14 @@ func TestCleanupTxnIntentsAsync(t *testing.T) { }, { intents: testEndTxnIntents, - sendFuncs: []sendFunc{ - resolveIntentsSendFunc(t), - gcSendFunc(t), - }, + sendFuncs: func() *sendFuncs { + s := newSendFuncs(t) + s.pushFrontLocked( + resolveIntentsSendFuncs(s, 4, 2), + gcSendFunc(t), + ) + return s + }(), }, } @@ -562,23 +569,19 @@ func TestCleanupTxnIntentsAsync(t *testing.T) { Stopper: stopper, Clock: clock, } - var sendFuncCalled int64 - numSendFuncs := int64(len(c.sendFuncs)) - sf := newSendFuncs(t, counterSendFuncs(&sendFuncCalled, c.sendFuncs)...) - ir := newIntentResolverWithSendFuncs(cfg, sf) + ir := newIntentResolverWithSendFuncs(cfg, c.sendFuncs) if c.before != nil { defer c.before(&c, ir)() } err := ir.CleanupTxnIntentsAsync(context.Background(), 1, c.intents, false) testutils.SucceedsSoon(t, func() error { - if called := atomic.LoadInt64(&sendFuncCalled); called < numSendFuncs { - return fmt.Errorf("still waiting for %d calls", numSendFuncs-called) + if left := c.sendFuncs.len(); left != 0 { + return fmt.Errorf("still waiting for %d calls", left) } return nil }) stopper.Stop(context.Background()) assert.Nil(t, err) - assert.Equal(t, sf.len(), 0) }) } } @@ -598,6 +601,7 @@ func TestCleanupMultipleTxnIntentsAsync(t *testing.T) { LockSpans: []roachpb.Span{ {Key: roachpb.Key("a")}, {Key: roachpb.Key("b")}, + {Key: roachpb.Key("c"), EndKey: roachpb.Key("d")}, }, }, }, @@ -605,8 +609,9 @@ func TestCleanupMultipleTxnIntentsAsync(t *testing.T) { Txn: &roachpb.Transaction{ TxnMeta: txn2.TxnMeta, LockSpans: []roachpb.Span{ - {Key: roachpb.Key("c")}, - {Key: roachpb.Key("d")}, + {Key: roachpb.Key("e")}, + {Key: roachpb.Key("f")}, + {Key: roachpb.Key("g"), EndKey: roachpb.Key("h")}, }, }, }, @@ -632,6 +637,13 @@ func TestCleanupMultipleTxnIntentsAsync(t *testing.T) { reqs.resolved = append(reqs.resolved, string(ru.GetResolveIntent().Key)) reqs.Unlock() return resolveIntentsSendFunc(t)(ba) + case roachpb.ResolveIntentRange: + reqs.Lock() + req := ru.GetResolveIntentRange() + reqs.resolved = append(reqs.resolved, + fmt.Sprintf("%s-%s", string(req.Key), string(req.EndKey))) + reqs.Unlock() + return resolveIntentsSendFunc(t)(ba) case roachpb.GC: reqs.Lock() reqs.gced = append(reqs.gced, string(ru.GetGc().Key)) @@ -641,7 +653,7 @@ func TestCleanupMultipleTxnIntentsAsync(t *testing.T) { return nil, roachpb.NewErrorf("unexpected") } } - sf := newSendFuncs(t, repeat(resolveOrGCFunc, 6)...) + sf := newSendFuncs(t, repeat(resolveOrGCFunc, 8)...) stopper := stop.NewStopper() cfg := Config{ @@ -664,24 +676,10 @@ func TestCleanupMultipleTxnIntentsAsync(t *testing.T) { // All four intents should be resolved and both txn records should be GCed. sort.Strings(reqs.resolved) sort.Strings(reqs.gced) - assert.Equal(t, []string{"a", "b", "c", "d"}, reqs.resolved) + assert.Equal(t, []string{"a", "b", "c-d", "e", "f", "g-h"}, reqs.resolved) assert.Equal(t, []string{"a", "c"}, reqs.gced) } -func counterSendFuncs(counter *int64, funcs []sendFunc) []sendFunc { - for i, f := range funcs { - funcs[i] = counterSendFunc(counter, f) - } - return funcs -} - -func counterSendFunc(counter *int64, f sendFunc) sendFunc { - return func(ba roachpb.BatchRequest) (*roachpb.BatchResponse, *roachpb.Error) { - defer atomic.AddInt64(counter, 1) - return f(ba) - } -} - // TestCleanupIntents verifies that CleanupIntents sends the expected requests // and returns the appropriate errors. func TestCleanupIntents(t *testing.T) { diff --git a/pkg/roachpb/api.pb.go b/pkg/roachpb/api.pb.go index eca99b0316a7..c833540631e8 100644 --- a/pkg/roachpb/api.pb.go +++ b/pkg/roachpb/api.pb.go @@ -72,7 +72,7 @@ func (x ReadConsistencyType) String() string { return proto.EnumName(ReadConsistencyType_name, int32(x)) } func (ReadConsistencyType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{0} + return fileDescriptor_api_a9d9e49af26caba8, []int{0} } // ScanFormat is an enumeration of the available response formats for MVCCScan @@ -100,7 +100,7 @@ func (x ScanFormat) String() string { return proto.EnumName(ScanFormat_name, int32(x)) } func (ScanFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{1} + return fileDescriptor_api_a9d9e49af26caba8, []int{1} } type ChecksumMode int32 @@ -147,7 +147,7 @@ func (x ChecksumMode) String() string { return proto.EnumName(ChecksumMode_name, int32(x)) } func (ChecksumMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{2} + return fileDescriptor_api_a9d9e49af26caba8, []int{2} } // PushTxnType determines what action to take when pushing a transaction. @@ -178,7 +178,7 @@ func (x PushTxnType) String() string { return proto.EnumName(PushTxnType_name, int32(x)) } func (PushTxnType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{3} + return fileDescriptor_api_a9d9e49af26caba8, []int{3} } type ExternalStorageProvider int32 @@ -216,7 +216,7 @@ func (x ExternalStorageProvider) String() string { return proto.EnumName(ExternalStorageProvider_name, int32(x)) } func (ExternalStorageProvider) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{4} + return fileDescriptor_api_a9d9e49af26caba8, []int{4} } type MVCCFilter int32 @@ -239,7 +239,7 @@ func (x MVCCFilter) String() string { return proto.EnumName(MVCCFilter_name, int32(x)) } func (MVCCFilter) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{5} + return fileDescriptor_api_a9d9e49af26caba8, []int{5} } type ResponseHeader_ResumeReason int32 @@ -265,7 +265,7 @@ func (x ResponseHeader_ResumeReason) String() string { return proto.EnumName(ResponseHeader_ResumeReason_name, int32(x)) } func (ResponseHeader_ResumeReason) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{2, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{2, 0} } type CheckConsistencyResponse_Status int32 @@ -307,7 +307,7 @@ func (x CheckConsistencyResponse_Status) String() string { return proto.EnumName(CheckConsistencyResponse_Status_name, int32(x)) } func (CheckConsistencyResponse_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{26, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{26, 0} } // RangeInfo describes a range which executed a request. It contains @@ -321,7 +321,7 @@ func (m *RangeInfo) Reset() { *m = RangeInfo{} } func (m *RangeInfo) String() string { return proto.CompactTextString(m) } func (*RangeInfo) ProtoMessage() {} func (*RangeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{0} + return fileDescriptor_api_a9d9e49af26caba8, []int{0} } func (m *RangeInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -364,7 +364,7 @@ func (m *RequestHeader) Reset() { *m = RequestHeader{} } func (m *RequestHeader) String() string { return proto.CompactTextString(m) } func (*RequestHeader) ProtoMessage() {} func (*RequestHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{1} + return fileDescriptor_api_a9d9e49af26caba8, []int{1} } func (m *RequestHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -431,7 +431,7 @@ func (m *ResponseHeader) Reset() { *m = ResponseHeader{} } func (m *ResponseHeader) String() string { return proto.CompactTextString(m) } func (*ResponseHeader) ProtoMessage() {} func (*ResponseHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{2} + return fileDescriptor_api_a9d9e49af26caba8, []int{2} } func (m *ResponseHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -465,7 +465,7 @@ func (m *GetRequest) Reset() { *m = GetRequest{} } func (m *GetRequest) String() string { return proto.CompactTextString(m) } func (*GetRequest) ProtoMessage() {} func (*GetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{3} + return fileDescriptor_api_a9d9e49af26caba8, []int{3} } func (m *GetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -503,7 +503,7 @@ func (m *GetResponse) Reset() { *m = GetResponse{} } func (m *GetResponse) String() string { return proto.CompactTextString(m) } func (*GetResponse) ProtoMessage() {} func (*GetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{4} + return fileDescriptor_api_a9d9e49af26caba8, []int{4} } func (m *GetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -546,7 +546,7 @@ func (m *PutRequest) Reset() { *m = PutRequest{} } func (m *PutRequest) String() string { return proto.CompactTextString(m) } func (*PutRequest) ProtoMessage() {} func (*PutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{5} + return fileDescriptor_api_a9d9e49af26caba8, []int{5} } func (m *PutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -580,7 +580,7 @@ func (m *PutResponse) Reset() { *m = PutResponse{} } func (m *PutResponse) String() string { return proto.CompactTextString(m) } func (*PutResponse) ProtoMessage() {} func (*PutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{6} + return fileDescriptor_api_a9d9e49af26caba8, []int{6} } func (m *PutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -634,7 +634,7 @@ func (m *ConditionalPutRequest) Reset() { *m = ConditionalPutRequest{} } func (m *ConditionalPutRequest) String() string { return proto.CompactTextString(m) } func (*ConditionalPutRequest) ProtoMessage() {} func (*ConditionalPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{7} + return fileDescriptor_api_a9d9e49af26caba8, []int{7} } func (m *ConditionalPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -669,7 +669,7 @@ func (m *ConditionalPutResponse) Reset() { *m = ConditionalPutResponse{} func (m *ConditionalPutResponse) String() string { return proto.CompactTextString(m) } func (*ConditionalPutResponse) ProtoMessage() {} func (*ConditionalPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{8} + return fileDescriptor_api_a9d9e49af26caba8, []int{8} } func (m *ConditionalPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -715,7 +715,7 @@ func (m *InitPutRequest) Reset() { *m = InitPutRequest{} } func (m *InitPutRequest) String() string { return proto.CompactTextString(m) } func (*InitPutRequest) ProtoMessage() {} func (*InitPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{9} + return fileDescriptor_api_a9d9e49af26caba8, []int{9} } func (m *InitPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -749,7 +749,7 @@ func (m *InitPutResponse) Reset() { *m = InitPutResponse{} } func (m *InitPutResponse) String() string { return proto.CompactTextString(m) } func (*InitPutResponse) ProtoMessage() {} func (*InitPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{10} + return fileDescriptor_api_a9d9e49af26caba8, []int{10} } func (m *InitPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -789,7 +789,7 @@ func (m *IncrementRequest) Reset() { *m = IncrementRequest{} } func (m *IncrementRequest) String() string { return proto.CompactTextString(m) } func (*IncrementRequest) ProtoMessage() {} func (*IncrementRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{11} + return fileDescriptor_api_a9d9e49af26caba8, []int{11} } func (m *IncrementRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -826,7 +826,7 @@ func (m *IncrementResponse) Reset() { *m = IncrementResponse{} } func (m *IncrementResponse) String() string { return proto.CompactTextString(m) } func (*IncrementResponse) ProtoMessage() {} func (*IncrementResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{12} + return fileDescriptor_api_a9d9e49af26caba8, []int{12} } func (m *IncrementResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -860,7 +860,7 @@ func (m *DeleteRequest) Reset() { *m = DeleteRequest{} } func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRequest) ProtoMessage() {} func (*DeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{13} + return fileDescriptor_api_a9d9e49af26caba8, []int{13} } func (m *DeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -894,7 +894,7 @@ func (m *DeleteResponse) Reset() { *m = DeleteResponse{} } func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } func (*DeleteResponse) ProtoMessage() {} func (*DeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{14} + return fileDescriptor_api_a9d9e49af26caba8, []int{14} } func (m *DeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -946,7 +946,7 @@ func (m *DeleteRangeRequest) Reset() { *m = DeleteRangeRequest{} } func (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRangeRequest) ProtoMessage() {} func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{15} + return fileDescriptor_api_a9d9e49af26caba8, []int{15} } func (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -983,7 +983,7 @@ func (m *DeleteRangeResponse) Reset() { *m = DeleteRangeResponse{} } func (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteRangeResponse) ProtoMessage() {} func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{16} + return fileDescriptor_api_a9d9e49af26caba8, []int{16} } func (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1030,7 +1030,7 @@ func (m *ClearRangeRequest) Reset() { *m = ClearRangeRequest{} } func (m *ClearRangeRequest) String() string { return proto.CompactTextString(m) } func (*ClearRangeRequest) ProtoMessage() {} func (*ClearRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{17} + return fileDescriptor_api_a9d9e49af26caba8, []int{17} } func (m *ClearRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1064,7 +1064,7 @@ func (m *ClearRangeResponse) Reset() { *m = ClearRangeResponse{} } func (m *ClearRangeResponse) String() string { return proto.CompactTextString(m) } func (*ClearRangeResponse) ProtoMessage() {} func (*ClearRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{18} + return fileDescriptor_api_a9d9e49af26caba8, []int{18} } func (m *ClearRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1105,7 +1105,7 @@ func (m *RevertRangeRequest) Reset() { *m = RevertRangeRequest{} } func (m *RevertRangeRequest) String() string { return proto.CompactTextString(m) } func (*RevertRangeRequest) ProtoMessage() {} func (*RevertRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{19} + return fileDescriptor_api_a9d9e49af26caba8, []int{19} } func (m *RevertRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1139,7 +1139,7 @@ func (m *RevertRangeResponse) Reset() { *m = RevertRangeResponse{} } func (m *RevertRangeResponse) String() string { return proto.CompactTextString(m) } func (*RevertRangeResponse) ProtoMessage() {} func (*RevertRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{20} + return fileDescriptor_api_a9d9e49af26caba8, []int{20} } func (m *RevertRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1190,7 +1190,7 @@ func (m *ScanRequest) Reset() { *m = ScanRequest{} } func (m *ScanRequest) String() string { return proto.CompactTextString(m) } func (*ScanRequest) ProtoMessage() {} func (*ScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{21} + return fileDescriptor_api_a9d9e49af26caba8, []int{21} } func (m *ScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1237,7 +1237,7 @@ func (m *ScanResponse) Reset() { *m = ScanResponse{} } func (m *ScanResponse) String() string { return proto.CompactTextString(m) } func (*ScanResponse) ProtoMessage() {} func (*ScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{22} + return fileDescriptor_api_a9d9e49af26caba8, []int{22} } func (m *ScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1288,7 +1288,7 @@ func (m *ReverseScanRequest) Reset() { *m = ReverseScanRequest{} } func (m *ReverseScanRequest) String() string { return proto.CompactTextString(m) } func (*ReverseScanRequest) ProtoMessage() {} func (*ReverseScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{23} + return fileDescriptor_api_a9d9e49af26caba8, []int{23} } func (m *ReverseScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1335,7 +1335,7 @@ func (m *ReverseScanResponse) Reset() { *m = ReverseScanResponse{} } func (m *ReverseScanResponse) String() string { return proto.CompactTextString(m) } func (*ReverseScanResponse) ProtoMessage() {} func (*ReverseScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{24} + return fileDescriptor_api_a9d9e49af26caba8, []int{24} } func (m *ReverseScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1388,7 +1388,7 @@ func (m *CheckConsistencyRequest) Reset() { *m = CheckConsistencyRequest func (m *CheckConsistencyRequest) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyRequest) ProtoMessage() {} func (*CheckConsistencyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{25} + return fileDescriptor_api_a9d9e49af26caba8, []int{25} } func (m *CheckConsistencyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1425,7 +1425,7 @@ func (m *CheckConsistencyResponse) Reset() { *m = CheckConsistencyRespon func (m *CheckConsistencyResponse) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyResponse) ProtoMessage() {} func (*CheckConsistencyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{26} + return fileDescriptor_api_a9d9e49af26caba8, []int{26} } func (m *CheckConsistencyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1469,7 +1469,7 @@ func (m *CheckConsistencyResponse_Result) Reset() { *m = CheckConsistenc func (m *CheckConsistencyResponse_Result) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyResponse_Result) ProtoMessage() {} func (*CheckConsistencyResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{26, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{26, 0} } func (m *CheckConsistencyResponse_Result) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1517,7 +1517,7 @@ func (m *RecomputeStatsRequest) Reset() { *m = RecomputeStatsRequest{} } func (m *RecomputeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsRequest) ProtoMessage() {} func (*RecomputeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{27} + return fileDescriptor_api_a9d9e49af26caba8, []int{27} } func (m *RecomputeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1553,7 +1553,7 @@ func (m *RecomputeStatsResponse) Reset() { *m = RecomputeStatsResponse{} func (m *RecomputeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsResponse) ProtoMessage() {} func (*RecomputeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{28} + return fileDescriptor_api_a9d9e49af26caba8, []int{28} } func (m *RecomputeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1650,7 +1650,7 @@ func (m *EndTxnRequest) Reset() { *m = EndTxnRequest{} } func (m *EndTxnRequest) String() string { return proto.CompactTextString(m) } func (*EndTxnRequest) ProtoMessage() {} func (*EndTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{29} + return fileDescriptor_api_a9d9e49af26caba8, []int{29} } func (m *EndTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1696,7 +1696,7 @@ func (m *EndTxnResponse) Reset() { *m = EndTxnResponse{} } func (m *EndTxnResponse) String() string { return proto.CompactTextString(m) } func (*EndTxnResponse) ProtoMessage() {} func (*EndTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{30} + return fileDescriptor_api_a9d9e49af26caba8, []int{30} } func (m *EndTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1757,7 +1757,7 @@ func (m *AdminSplitRequest) Reset() { *m = AdminSplitRequest{} } func (m *AdminSplitRequest) String() string { return proto.CompactTextString(m) } func (*AdminSplitRequest) ProtoMessage() {} func (*AdminSplitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{31} + return fileDescriptor_api_a9d9e49af26caba8, []int{31} } func (m *AdminSplitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1792,7 +1792,7 @@ func (m *AdminSplitResponse) Reset() { *m = AdminSplitResponse{} } func (m *AdminSplitResponse) String() string { return proto.CompactTextString(m) } func (*AdminSplitResponse) ProtoMessage() {} func (*AdminSplitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{32} + return fileDescriptor_api_a9d9e49af26caba8, []int{32} } func (m *AdminSplitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1831,7 +1831,7 @@ func (m *AdminUnsplitRequest) Reset() { *m = AdminUnsplitRequest{} } func (m *AdminUnsplitRequest) String() string { return proto.CompactTextString(m) } func (*AdminUnsplitRequest) ProtoMessage() {} func (*AdminUnsplitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{33} + return fileDescriptor_api_a9d9e49af26caba8, []int{33} } func (m *AdminUnsplitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1866,7 +1866,7 @@ func (m *AdminUnsplitResponse) Reset() { *m = AdminUnsplitResponse{} } func (m *AdminUnsplitResponse) String() string { return proto.CompactTextString(m) } func (*AdminUnsplitResponse) ProtoMessage() {} func (*AdminUnsplitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{34} + return fileDescriptor_api_a9d9e49af26caba8, []int{34} } func (m *AdminUnsplitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1909,7 +1909,7 @@ func (m *AdminMergeRequest) Reset() { *m = AdminMergeRequest{} } func (m *AdminMergeRequest) String() string { return proto.CompactTextString(m) } func (*AdminMergeRequest) ProtoMessage() {} func (*AdminMergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{35} + return fileDescriptor_api_a9d9e49af26caba8, []int{35} } func (m *AdminMergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1944,7 +1944,7 @@ func (m *AdminMergeResponse) Reset() { *m = AdminMergeResponse{} } func (m *AdminMergeResponse) String() string { return proto.CompactTextString(m) } func (*AdminMergeResponse) ProtoMessage() {} func (*AdminMergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{36} + return fileDescriptor_api_a9d9e49af26caba8, []int{36} } func (m *AdminMergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1982,7 +1982,7 @@ func (m *AdminTransferLeaseRequest) Reset() { *m = AdminTransferLeaseReq func (m *AdminTransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseRequest) ProtoMessage() {} func (*AdminTransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{37} + return fileDescriptor_api_a9d9e49af26caba8, []int{37} } func (m *AdminTransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2015,7 +2015,7 @@ func (m *AdminTransferLeaseResponse) Reset() { *m = AdminTransferLeaseRe func (m *AdminTransferLeaseResponse) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseResponse) ProtoMessage() {} func (*AdminTransferLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{38} + return fileDescriptor_api_a9d9e49af26caba8, []int{38} } func (m *AdminTransferLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2050,7 +2050,7 @@ func (m *ReplicationChange) Reset() { *m = ReplicationChange{} } func (m *ReplicationChange) String() string { return proto.CompactTextString(m) } func (*ReplicationChange) ProtoMessage() {} func (*ReplicationChange) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{39} + return fileDescriptor_api_a9d9e49af26caba8, []int{39} } func (m *ReplicationChange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2108,7 +2108,7 @@ func (m *AdminChangeReplicasRequest) Reset() { *m = AdminChangeReplicasR func (m *AdminChangeReplicasRequest) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasRequest) ProtoMessage() {} func (*AdminChangeReplicasRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{40} + return fileDescriptor_api_a9d9e49af26caba8, []int{40} } func (m *AdminChangeReplicasRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2143,7 +2143,7 @@ func (m *AdminChangeReplicasResponse) Reset() { *m = AdminChangeReplicas func (m *AdminChangeReplicasResponse) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasResponse) ProtoMessage() {} func (*AdminChangeReplicasResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{41} + return fileDescriptor_api_a9d9e49af26caba8, []int{41} } func (m *AdminChangeReplicasResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2180,7 +2180,7 @@ func (m *AdminRelocateRangeRequest) Reset() { *m = AdminRelocateRangeReq func (m *AdminRelocateRangeRequest) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeRequest) ProtoMessage() {} func (*AdminRelocateRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{42} + return fileDescriptor_api_a9d9e49af26caba8, []int{42} } func (m *AdminRelocateRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2213,7 +2213,7 @@ func (m *AdminRelocateRangeResponse) Reset() { *m = AdminRelocateRangeRe func (m *AdminRelocateRangeResponse) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeResponse) ProtoMessage() {} func (*AdminRelocateRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{43} + return fileDescriptor_api_a9d9e49af26caba8, []int{43} } func (m *AdminRelocateRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2252,7 +2252,7 @@ func (m *HeartbeatTxnRequest) Reset() { *m = HeartbeatTxnRequest{} } func (m *HeartbeatTxnRequest) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnRequest) ProtoMessage() {} func (*HeartbeatTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{44} + return fileDescriptor_api_a9d9e49af26caba8, []int{44} } func (m *HeartbeatTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2289,7 +2289,7 @@ func (m *HeartbeatTxnResponse) Reset() { *m = HeartbeatTxnResponse{} } func (m *HeartbeatTxnResponse) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnResponse) ProtoMessage() {} func (*HeartbeatTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{45} + return fileDescriptor_api_a9d9e49af26caba8, []int{45} } func (m *HeartbeatTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2327,7 +2327,7 @@ func (m *GCRequest) Reset() { *m = GCRequest{} } func (m *GCRequest) String() string { return proto.CompactTextString(m) } func (*GCRequest) ProtoMessage() {} func (*GCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{46} + return fileDescriptor_api_a9d9e49af26caba8, []int{46} } func (m *GCRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2361,7 +2361,7 @@ func (m *GCRequest_GCKey) Reset() { *m = GCRequest_GCKey{} } func (m *GCRequest_GCKey) String() string { return proto.CompactTextString(m) } func (*GCRequest_GCKey) ProtoMessage() {} func (*GCRequest_GCKey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{46, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{46, 0} } func (m *GCRequest_GCKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2395,7 +2395,7 @@ func (m *GCResponse) Reset() { *m = GCResponse{} } func (m *GCResponse) String() string { return proto.CompactTextString(m) } func (*GCResponse) ProtoMessage() {} func (*GCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{47} + return fileDescriptor_api_a9d9e49af26caba8, []int{47} } func (m *GCResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2464,7 @@ func (m *PushTxnRequest) Reset() { *m = PushTxnRequest{} } func (m *PushTxnRequest) String() string { return proto.CompactTextString(m) } func (*PushTxnRequest) ProtoMessage() {} func (*PushTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{48} + return fileDescriptor_api_a9d9e49af26caba8, []int{48} } func (m *PushTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2507,7 +2507,7 @@ func (m *PushTxnResponse) Reset() { *m = PushTxnResponse{} } func (m *PushTxnResponse) String() string { return proto.CompactTextString(m) } func (*PushTxnResponse) ProtoMessage() {} func (*PushTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{49} + return fileDescriptor_api_a9d9e49af26caba8, []int{49} } func (m *PushTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2554,7 +2554,7 @@ func (m *RecoverTxnRequest) Reset() { *m = RecoverTxnRequest{} } func (m *RecoverTxnRequest) String() string { return proto.CompactTextString(m) } func (*RecoverTxnRequest) ProtoMessage() {} func (*RecoverTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{50} + return fileDescriptor_api_a9d9e49af26caba8, []int{50} } func (m *RecoverTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2590,7 +2590,7 @@ func (m *RecoverTxnResponse) Reset() { *m = RecoverTxnResponse{} } func (m *RecoverTxnResponse) String() string { return proto.CompactTextString(m) } func (*RecoverTxnResponse) ProtoMessage() {} func (*RecoverTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{51} + return fileDescriptor_api_a9d9e49af26caba8, []int{51} } func (m *RecoverTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2634,7 +2634,7 @@ func (m *QueryTxnRequest) Reset() { *m = QueryTxnRequest{} } func (m *QueryTxnRequest) String() string { return proto.CompactTextString(m) } func (*QueryTxnRequest) ProtoMessage() {} func (*QueryTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{52} + return fileDescriptor_api_a9d9e49af26caba8, []int{52} } func (m *QueryTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2673,7 +2673,7 @@ func (m *QueryTxnResponse) Reset() { *m = QueryTxnResponse{} } func (m *QueryTxnResponse) String() string { return proto.CompactTextString(m) } func (*QueryTxnResponse) ProtoMessage() {} func (*QueryTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{53} + return fileDescriptor_api_a9d9e49af26caba8, []int{53} } func (m *QueryTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2733,7 +2733,7 @@ func (m *QueryIntentRequest) Reset() { *m = QueryIntentRequest{} } func (m *QueryIntentRequest) String() string { return proto.CompactTextString(m) } func (*QueryIntentRequest) ProtoMessage() {} func (*QueryIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{54} + return fileDescriptor_api_a9d9e49af26caba8, []int{54} } func (m *QueryIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2769,7 +2769,7 @@ func (m *QueryIntentResponse) Reset() { *m = QueryIntentResponse{} } func (m *QueryIntentResponse) String() string { return proto.CompactTextString(m) } func (*QueryIntentResponse) ProtoMessage() {} func (*QueryIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{55} + return fileDescriptor_api_a9d9e49af26caba8, []int{55} } func (m *QueryIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2815,7 +2815,7 @@ func (m *ResolveIntentRequest) Reset() { *m = ResolveIntentRequest{} } func (m *ResolveIntentRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRequest) ProtoMessage() {} func (*ResolveIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{56} + return fileDescriptor_api_a9d9e49af26caba8, []int{56} } func (m *ResolveIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2850,7 +2850,7 @@ func (m *ResolveIntentResponse) Reset() { *m = ResolveIntentResponse{} } func (m *ResolveIntentResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentResponse) ProtoMessage() {} func (*ResolveIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{57} + return fileDescriptor_api_a9d9e49af26caba8, []int{57} } func (m *ResolveIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2900,7 +2900,7 @@ func (m *ResolveIntentRangeRequest) Reset() { *m = ResolveIntentRangeReq func (m *ResolveIntentRangeRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeRequest) ProtoMessage() {} func (*ResolveIntentRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{58} + return fileDescriptor_api_a9d9e49af26caba8, []int{58} } func (m *ResolveIntentRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2935,7 +2935,7 @@ func (m *ResolveIntentRangeResponse) Reset() { *m = ResolveIntentRangeRe func (m *ResolveIntentRangeResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeResponse) ProtoMessage() {} func (*ResolveIntentRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{59} + return fileDescriptor_api_a9d9e49af26caba8, []int{59} } func (m *ResolveIntentRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2972,7 +2972,7 @@ func (m *MergeRequest) Reset() { *m = MergeRequest{} } func (m *MergeRequest) String() string { return proto.CompactTextString(m) } func (*MergeRequest) ProtoMessage() {} func (*MergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{60} + return fileDescriptor_api_a9d9e49af26caba8, []int{60} } func (m *MergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3006,7 +3006,7 @@ func (m *MergeResponse) Reset() { *m = MergeResponse{} } func (m *MergeResponse) String() string { return proto.CompactTextString(m) } func (*MergeResponse) ProtoMessage() {} func (*MergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{61} + return fileDescriptor_api_a9d9e49af26caba8, []int{61} } func (m *MergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3051,7 +3051,7 @@ func (m *TruncateLogRequest) Reset() { *m = TruncateLogRequest{} } func (m *TruncateLogRequest) String() string { return proto.CompactTextString(m) } func (*TruncateLogRequest) ProtoMessage() {} func (*TruncateLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{62} + return fileDescriptor_api_a9d9e49af26caba8, []int{62} } func (m *TruncateLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3085,7 +3085,7 @@ func (m *TruncateLogResponse) Reset() { *m = TruncateLogResponse{} } func (m *TruncateLogResponse) String() string { return proto.CompactTextString(m) } func (*TruncateLogResponse) ProtoMessage() {} func (*TruncateLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{63} + return fileDescriptor_api_a9d9e49af26caba8, []int{63} } func (m *TruncateLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3129,7 +3129,7 @@ func (m *RequestLeaseRequest) Reset() { *m = RequestLeaseRequest{} } func (m *RequestLeaseRequest) String() string { return proto.CompactTextString(m) } func (*RequestLeaseRequest) ProtoMessage() {} func (*RequestLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{64} + return fileDescriptor_api_a9d9e49af26caba8, []int{64} } func (m *RequestLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3178,7 +3178,7 @@ func (m *TransferLeaseRequest) Reset() { *m = TransferLeaseRequest{} } func (m *TransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*TransferLeaseRequest) ProtoMessage() {} func (*TransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{65} + return fileDescriptor_api_a9d9e49af26caba8, []int{65} } func (m *TransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3215,7 +3215,7 @@ func (m *LeaseInfoRequest) Reset() { *m = LeaseInfoRequest{} } func (m *LeaseInfoRequest) String() string { return proto.CompactTextString(m) } func (*LeaseInfoRequest) ProtoMessage() {} func (*LeaseInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{66} + return fileDescriptor_api_a9d9e49af26caba8, []int{66} } func (m *LeaseInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3252,7 +3252,7 @@ func (m *LeaseInfoResponse) Reset() { *m = LeaseInfoResponse{} } func (m *LeaseInfoResponse) String() string { return proto.CompactTextString(m) } func (*LeaseInfoResponse) ProtoMessage() {} func (*LeaseInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{67} + return fileDescriptor_api_a9d9e49af26caba8, []int{67} } func (m *LeaseInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3287,7 +3287,7 @@ func (m *RequestLeaseResponse) Reset() { *m = RequestLeaseResponse{} } func (m *RequestLeaseResponse) String() string { return proto.CompactTextString(m) } func (*RequestLeaseResponse) ProtoMessage() {} func (*RequestLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{68} + return fileDescriptor_api_a9d9e49af26caba8, []int{68} } func (m *RequestLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3342,7 +3342,7 @@ func (m *ComputeChecksumRequest) Reset() { *m = ComputeChecksumRequest{} func (m *ComputeChecksumRequest) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumRequest) ProtoMessage() {} func (*ComputeChecksumRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{69} + return fileDescriptor_api_a9d9e49af26caba8, []int{69} } func (m *ComputeChecksumRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3379,7 +3379,7 @@ func (m *ComputeChecksumResponse) Reset() { *m = ComputeChecksumResponse func (m *ComputeChecksumResponse) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumResponse) ProtoMessage() {} func (*ComputeChecksumResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{70} + return fileDescriptor_api_a9d9e49af26caba8, []int{70} } func (m *ComputeChecksumResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3418,7 +3418,7 @@ func (m *ExternalStorage) Reset() { *m = ExternalStorage{} } func (m *ExternalStorage) String() string { return proto.CompactTextString(m) } func (*ExternalStorage) ProtoMessage() {} func (*ExternalStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{71} + return fileDescriptor_api_a9d9e49af26caba8, []int{71} } func (m *ExternalStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3452,7 +3452,7 @@ func (m *ExternalStorage_LocalFilePath) Reset() { *m = ExternalStorage_L func (m *ExternalStorage_LocalFilePath) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_LocalFilePath) ProtoMessage() {} func (*ExternalStorage_LocalFilePath) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{71, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{71, 0} } func (m *ExternalStorage_LocalFilePath) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3485,7 +3485,7 @@ func (m *ExternalStorage_Http) Reset() { *m = ExternalStorage_Http{} } func (m *ExternalStorage_Http) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Http) ProtoMessage() {} func (*ExternalStorage_Http) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{71, 1} + return fileDescriptor_api_a9d9e49af26caba8, []int{71, 1} } func (m *ExternalStorage_Http) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3525,7 +3525,7 @@ func (m *ExternalStorage_S3) Reset() { *m = ExternalStorage_S3{} } func (m *ExternalStorage_S3) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_S3) ProtoMessage() {} func (*ExternalStorage_S3) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{71, 2} + return fileDescriptor_api_a9d9e49af26caba8, []int{71, 2} } func (m *ExternalStorage_S3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3564,7 +3564,7 @@ func (m *ExternalStorage_GCS) Reset() { *m = ExternalStorage_GCS{} } func (m *ExternalStorage_GCS) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_GCS) ProtoMessage() {} func (*ExternalStorage_GCS) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{71, 3} + return fileDescriptor_api_a9d9e49af26caba8, []int{71, 3} } func (m *ExternalStorage_GCS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3600,7 +3600,7 @@ func (m *ExternalStorage_Azure) Reset() { *m = ExternalStorage_Azure{} } func (m *ExternalStorage_Azure) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Azure) ProtoMessage() {} func (*ExternalStorage_Azure) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{71, 4} + return fileDescriptor_api_a9d9e49af26caba8, []int{71, 4} } func (m *ExternalStorage_Azure) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3639,7 +3639,7 @@ func (m *ExternalStorage_Workload) Reset() { *m = ExternalStorage_Worklo func (m *ExternalStorage_Workload) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Workload) ProtoMessage() {} func (*ExternalStorage_Workload) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{71, 5} + return fileDescriptor_api_a9d9e49af26caba8, []int{71, 5} } func (m *ExternalStorage_Workload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3679,7 +3679,7 @@ func (m *WriteBatchRequest) Reset() { *m = WriteBatchRequest{} } func (m *WriteBatchRequest) String() string { return proto.CompactTextString(m) } func (*WriteBatchRequest) ProtoMessage() {} func (*WriteBatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{72} + return fileDescriptor_api_a9d9e49af26caba8, []int{72} } func (m *WriteBatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3713,7 +3713,7 @@ func (m *WriteBatchResponse) Reset() { *m = WriteBatchResponse{} } func (m *WriteBatchResponse) String() string { return proto.CompactTextString(m) } func (*WriteBatchResponse) ProtoMessage() {} func (*WriteBatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{73} + return fileDescriptor_api_a9d9e49af26caba8, []int{73} } func (m *WriteBatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3747,7 +3747,7 @@ func (m *FileEncryptionOptions) Reset() { *m = FileEncryptionOptions{} } func (m *FileEncryptionOptions) String() string { return proto.CompactTextString(m) } func (*FileEncryptionOptions) ProtoMessage() {} func (*FileEncryptionOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{74} + return fileDescriptor_api_a9d9e49af26caba8, []int{74} } func (m *FileEncryptionOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3817,7 +3817,7 @@ func (m *ExportRequest) Reset() { *m = ExportRequest{} } func (m *ExportRequest) String() string { return proto.CompactTextString(m) } func (*ExportRequest) ProtoMessage() {} func (*ExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{75} + return fileDescriptor_api_a9d9e49af26caba8, []int{75} } func (m *ExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3869,7 +3869,7 @@ func (m *BulkOpSummary) Reset() { *m = BulkOpSummary{} } func (m *BulkOpSummary) String() string { return proto.CompactTextString(m) } func (*BulkOpSummary) ProtoMessage() {} func (*BulkOpSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{76} + return fileDescriptor_api_a9d9e49af26caba8, []int{76} } func (m *BulkOpSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3905,7 +3905,7 @@ func (m *ExportResponse) Reset() { *m = ExportResponse{} } func (m *ExportResponse) String() string { return proto.CompactTextString(m) } func (*ExportResponse) ProtoMessage() {} func (*ExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{77} + return fileDescriptor_api_a9d9e49af26caba8, []int{77} } func (m *ExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3945,7 +3945,7 @@ func (m *ExportResponse_File) Reset() { *m = ExportResponse_File{} } func (m *ExportResponse_File) String() string { return proto.CompactTextString(m) } func (*ExportResponse_File) ProtoMessage() {} func (*ExportResponse_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{77, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{77, 0} } func (m *ExportResponse_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3996,7 +3996,7 @@ func (m *ImportRequest) Reset() { *m = ImportRequest{} } func (m *ImportRequest) String() string { return proto.CompactTextString(m) } func (*ImportRequest) ProtoMessage() {} func (*ImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{78} + return fileDescriptor_api_a9d9e49af26caba8, []int{78} } func (m *ImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4031,7 +4031,7 @@ func (m *ImportRequest_File) Reset() { *m = ImportRequest_File{} } func (m *ImportRequest_File) String() string { return proto.CompactTextString(m) } func (*ImportRequest_File) ProtoMessage() {} func (*ImportRequest_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{78, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{78, 0} } func (m *ImportRequest_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4067,7 +4067,7 @@ func (m *ImportRequest_TableRekey) Reset() { *m = ImportRequest_TableRek func (m *ImportRequest_TableRekey) String() string { return proto.CompactTextString(m) } func (*ImportRequest_TableRekey) ProtoMessage() {} func (*ImportRequest_TableRekey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{78, 1} + return fileDescriptor_api_a9d9e49af26caba8, []int{78, 1} } func (m *ImportRequest_TableRekey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4102,7 +4102,7 @@ func (m *ImportResponse) Reset() { *m = ImportResponse{} } func (m *ImportResponse) String() string { return proto.CompactTextString(m) } func (*ImportResponse) ProtoMessage() {} func (*ImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{79} + return fileDescriptor_api_a9d9e49af26caba8, []int{79} } func (m *ImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4140,7 +4140,7 @@ func (m *AdminScatterRequest) Reset() { *m = AdminScatterRequest{} } func (m *AdminScatterRequest) String() string { return proto.CompactTextString(m) } func (*AdminScatterRequest) ProtoMessage() {} func (*AdminScatterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{80} + return fileDescriptor_api_a9d9e49af26caba8, []int{80} } func (m *AdminScatterRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4175,7 +4175,7 @@ func (m *AdminScatterResponse) Reset() { *m = AdminScatterResponse{} } func (m *AdminScatterResponse) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse) ProtoMessage() {} func (*AdminScatterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{81} + return fileDescriptor_api_a9d9e49af26caba8, []int{81} } func (m *AdminScatterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4208,7 +4208,7 @@ func (m *AdminScatterResponse_Range) Reset() { *m = AdminScatterResponse func (m *AdminScatterResponse_Range) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse_Range) ProtoMessage() {} func (*AdminScatterResponse_Range) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{81, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{81, 0} } func (m *AdminScatterResponse_Range) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4253,7 +4253,7 @@ func (m *AdminVerifyProtectedTimestampRequest) Reset() { *m = AdminVerif func (m *AdminVerifyProtectedTimestampRequest) String() string { return proto.CompactTextString(m) } func (*AdminVerifyProtectedTimestampRequest) ProtoMessage() {} func (*AdminVerifyProtectedTimestampRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{82} + return fileDescriptor_api_a9d9e49af26caba8, []int{82} } func (m *AdminVerifyProtectedTimestampRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4291,7 +4291,7 @@ func (m *AdminVerifyProtectedTimestampResponse) Reset() { *m = AdminVeri func (m *AdminVerifyProtectedTimestampResponse) String() string { return proto.CompactTextString(m) } func (*AdminVerifyProtectedTimestampResponse) ProtoMessage() {} func (*AdminVerifyProtectedTimestampResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{83} + return fileDescriptor_api_a9d9e49af26caba8, []int{83} } func (m *AdminVerifyProtectedTimestampResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4344,7 +4344,7 @@ func (m *AddSSTableRequest) Reset() { *m = AddSSTableRequest{} } func (m *AddSSTableRequest) String() string { return proto.CompactTextString(m) } func (*AddSSTableRequest) ProtoMessage() {} func (*AddSSTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{84} + return fileDescriptor_api_a9d9e49af26caba8, []int{84} } func (m *AddSSTableRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4378,7 +4378,7 @@ func (m *AddSSTableResponse) Reset() { *m = AddSSTableResponse{} } func (m *AddSSTableResponse) String() string { return proto.CompactTextString(m) } func (*AddSSTableResponse) ProtoMessage() {} func (*AddSSTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{85} + return fileDescriptor_api_a9d9e49af26caba8, []int{85} } func (m *AddSSTableResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4422,7 +4422,7 @@ func (m *RefreshRequest) Reset() { *m = RefreshRequest{} } func (m *RefreshRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRequest) ProtoMessage() {} func (*RefreshRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{86} + return fileDescriptor_api_a9d9e49af26caba8, []int{86} } func (m *RefreshRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4456,7 +4456,7 @@ func (m *RefreshResponse) Reset() { *m = RefreshResponse{} } func (m *RefreshResponse) String() string { return proto.CompactTextString(m) } func (*RefreshResponse) ProtoMessage() {} func (*RefreshResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{87} + return fileDescriptor_api_a9d9e49af26caba8, []int{87} } func (m *RefreshResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4495,7 +4495,7 @@ func (m *RefreshRangeRequest) Reset() { *m = RefreshRangeRequest{} } func (m *RefreshRangeRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRangeRequest) ProtoMessage() {} func (*RefreshRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{88} + return fileDescriptor_api_a9d9e49af26caba8, []int{88} } func (m *RefreshRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4529,7 +4529,7 @@ func (m *RefreshRangeResponse) Reset() { *m = RefreshRangeResponse{} } func (m *RefreshRangeResponse) String() string { return proto.CompactTextString(m) } func (*RefreshRangeResponse) ProtoMessage() {} func (*RefreshRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{89} + return fileDescriptor_api_a9d9e49af26caba8, []int{89} } func (m *RefreshRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4578,7 +4578,7 @@ func (m *SubsumeRequest) Reset() { *m = SubsumeRequest{} } func (m *SubsumeRequest) String() string { return proto.CompactTextString(m) } func (*SubsumeRequest) ProtoMessage() {} func (*SubsumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{90} + return fileDescriptor_api_a9d9e49af26caba8, []int{90} } func (m *SubsumeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4627,7 +4627,7 @@ func (m *SubsumeResponse) Reset() { *m = SubsumeResponse{} } func (m *SubsumeResponse) String() string { return proto.CompactTextString(m) } func (*SubsumeResponse) ProtoMessage() {} func (*SubsumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{91} + return fileDescriptor_api_a9d9e49af26caba8, []int{91} } func (m *SubsumeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4662,7 +4662,7 @@ func (m *RangeStatsRequest) Reset() { *m = RangeStatsRequest{} } func (m *RangeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RangeStatsRequest) ProtoMessage() {} func (*RangeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{92} + return fileDescriptor_api_a9d9e49af26caba8, []int{92} } func (m *RangeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4701,7 +4701,7 @@ func (m *RangeStatsResponse) Reset() { *m = RangeStatsResponse{} } func (m *RangeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RangeStatsResponse) ProtoMessage() {} func (*RangeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{93} + return fileDescriptor_api_a9d9e49af26caba8, []int{93} } func (m *RangeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4784,7 +4784,7 @@ func (m *RequestUnion) Reset() { *m = RequestUnion{} } func (m *RequestUnion) String() string { return proto.CompactTextString(m) } func (*RequestUnion) ProtoMessage() {} func (*RequestUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{94} + return fileDescriptor_api_a9d9e49af26caba8, []int{94} } func (m *RequestUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6234,7 +6234,7 @@ func (m *ResponseUnion) Reset() { *m = ResponseUnion{} } func (m *ResponseUnion) String() string { return proto.CompactTextString(m) } func (*ResponseUnion) ProtoMessage() {} func (*ResponseUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{95} + return fileDescriptor_api_a9d9e49af26caba8, []int{95} } func (m *ResponseUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7696,7 +7696,7 @@ type Header struct { // - EndTxnRequest // // Forward requests and reverse requests cannot be mixed in the same batch if - // a limit is set. There doesn't seem to be a fundemental reason for this + // a limit is set. There doesn't seem to be a fundamental reason for this // restriction, but a batch that mixed forward and reverse requests would be // impossible to order, so it would unavoidably have to deal with the added // complications discussed in "Unordered requests". For now, that's a good @@ -7749,7 +7749,7 @@ func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{96} + return fileDescriptor_api_a9d9e49af26caba8, []int{96} } func (m *Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7785,7 +7785,7 @@ type BatchRequest struct { func (m *BatchRequest) Reset() { *m = BatchRequest{} } func (*BatchRequest) ProtoMessage() {} func (*BatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{97} + return fileDescriptor_api_a9d9e49af26caba8, []int{97} } func (m *BatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7822,7 +7822,7 @@ type BatchResponse struct { func (m *BatchResponse) Reset() { *m = BatchResponse{} } func (*BatchResponse) ProtoMessage() {} func (*BatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{98} + return fileDescriptor_api_a9d9e49af26caba8, []int{98} } func (m *BatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7880,7 +7880,7 @@ func (m *BatchResponse_Header) Reset() { *m = BatchResponse_Header{} } func (m *BatchResponse_Header) String() string { return proto.CompactTextString(m) } func (*BatchResponse_Header) ProtoMessage() {} func (*BatchResponse_Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{98, 0} + return fileDescriptor_api_a9d9e49af26caba8, []int{98, 0} } func (m *BatchResponse_Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7919,7 +7919,7 @@ func (m *RangeFeedRequest) Reset() { *m = RangeFeedRequest{} } func (m *RangeFeedRequest) String() string { return proto.CompactTextString(m) } func (*RangeFeedRequest) ProtoMessage() {} func (*RangeFeedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{99} + return fileDescriptor_api_a9d9e49af26caba8, []int{99} } func (m *RangeFeedRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7960,7 +7960,7 @@ func (m *RangeFeedValue) Reset() { *m = RangeFeedValue{} } func (m *RangeFeedValue) String() string { return proto.CompactTextString(m) } func (*RangeFeedValue) ProtoMessage() {} func (*RangeFeedValue) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{100} + return fileDescriptor_api_a9d9e49af26caba8, []int{100} } func (m *RangeFeedValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8001,7 +8001,7 @@ func (m *RangeFeedCheckpoint) Reset() { *m = RangeFeedCheckpoint{} } func (m *RangeFeedCheckpoint) String() string { return proto.CompactTextString(m) } func (*RangeFeedCheckpoint) ProtoMessage() {} func (*RangeFeedCheckpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{101} + return fileDescriptor_api_a9d9e49af26caba8, []int{101} } func (m *RangeFeedCheckpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8038,7 +8038,7 @@ func (m *RangeFeedError) Reset() { *m = RangeFeedError{} } func (m *RangeFeedError) String() string { return proto.CompactTextString(m) } func (*RangeFeedError) ProtoMessage() {} func (*RangeFeedError) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{102} + return fileDescriptor_api_a9d9e49af26caba8, []int{102} } func (m *RangeFeedError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8075,7 +8075,7 @@ func (m *RangeFeedEvent) Reset() { *m = RangeFeedEvent{} } func (m *RangeFeedEvent) String() string { return proto.CompactTextString(m) } func (*RangeFeedEvent) ProtoMessage() {} func (*RangeFeedEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_api_c072a2b9f1c6804f, []int{103} + return fileDescriptor_api_a9d9e49af26caba8, []int{103} } func (m *RangeFeedEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -37489,9 +37489,9 @@ var ( ErrIntOverflowApi = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_c072a2b9f1c6804f) } +func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_a9d9e49af26caba8) } -var fileDescriptor_api_c072a2b9f1c6804f = []byte{ +var fileDescriptor_api_a9d9e49af26caba8 = []byte{ // 7362 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5d, 0x6c, 0x23, 0xc9, 0x75, 0xae, 0x9a, 0xa4, 0x24, 0xf2, 0x90, 0xa2, 0x5a, 0xa5, 0xf9, 0xe1, 0x68, 0x66, 0x25, 0x0d, diff --git a/pkg/roachpb/api.proto b/pkg/roachpb/api.proto index 1abd788e9515..5faa0dfe9d97 100644 --- a/pkg/roachpb/api.proto +++ b/pkg/roachpb/api.proto @@ -1881,7 +1881,7 @@ message Header { // - EndTxnRequest // // Forward requests and reverse requests cannot be mixed in the same batch if - // a limit is set. There doesn't seem to be a fundemental reason for this + // a limit is set. There doesn't seem to be a fundamental reason for this // restriction, but a batch that mixed forward and reverse requests would be // impossible to order, so it would unavoidably have to deal with the added // complications discussed in "Unordered requests". For now, that's a good