Skip to content

Commit 71f2101

Browse files
committed
kv: remove server-side support of InitPuts
We removed client-side usage and support of InitPut requests in 46787b3 which merged during 25.1 cycle. Given that we no longer need to maintain compatibility with 24.3 versions, we can remove server-side support as well. Release note: None
1 parent 673482a commit 71f2101

36 files changed

+164
-1078
lines changed

docs/generated/metrics/metrics.yaml

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2990,18 +2990,6 @@ layers:
29902990
unit: COUNT
29912991
aggregation: AVG
29922992
derivative: NON_NEGATIVE_DERIVATIVE
2993-
- name: distsender.rpc.initput.sent
2994-
exported_name: distsender_rpc_initput_sent
2995-
description: |-
2996-
Number of InitPut requests processed.
2997-
2998-
This counts the requests in batches handed to DistSender, not the RPCs
2999-
sent to individual Ranges as a result.
3000-
y_axis_label: RPCs
3001-
type: COUNTER
3002-
unit: COUNT
3003-
aggregation: AVG
3004-
derivative: NON_NEGATIVE_DERIVATIVE
30052993
- name: distsender.rpc.isspanempty.sent
30062994
exported_name: distsender_rpc_isspanempty_sent
30072995
description: |-
@@ -15838,14 +15826,6 @@ layers:
1583815826
unit: COUNT
1583915827
aggregation: AVG
1584015828
derivative: NON_NEGATIVE_DERIVATIVE
15841-
- name: rpc.method.initput.recv
15842-
exported_name: rpc_method_initput_recv
15843-
description: Number of InitPut requests processed
15844-
y_axis_label: RPCs
15845-
type: COUNTER
15846-
unit: COUNT
15847-
aggregation: AVG
15848-
derivative: NON_NEGATIVE_DERIVATIVE
1584915829
- name: rpc.method.isspanempty.recv
1585015830
exported_name: rpc_method_isspanempty_recv
1585115831
description: Number of IsSpanEmpty requests processed

pkg/kv/batch.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,6 @@ func (b *Batch) fillResults(ctx context.Context) {
225225
if result.Err == nil {
226226
row.Value = &req.Value
227227
}
228-
case *kvpb.InitPutRequest:
229-
row := &result.Rows[k]
230-
row.Key = []byte(req.Key)
231-
if result.Err == nil {
232-
row.Value = &req.Value
233-
}
234228
case *kvpb.IncrementRequest:
235229
row := &result.Rows[k]
236230
row.Key = []byte(req.Key)

pkg/kv/kvclient/kvcoord/txn_interceptor_pipeliner_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,9 @@ func TestTxnPipelinerTrackInFlightWrites(t *testing.T) {
218218
cputArgs := kvpb.ConditionalPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}}
219219
cputArgs.Sequence = 2
220220
ba.Add(&cputArgs)
221-
initPutArgs := kvpb.InitPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyB}}
222-
initPutArgs.Sequence = 3
223-
ba.Add(&initPutArgs)
221+
putArgs = kvpb.PutRequest{RequestHeader: kvpb.RequestHeader{Key: keyB}}
222+
putArgs.Sequence = 3
223+
ba.Add(&putArgs)
224224
incArgs := kvpb.IncrementRequest{RequestHeader: kvpb.RequestHeader{Key: keyC}}
225225
incArgs.Sequence = 4
226226
ba.Add(&incArgs)
@@ -235,7 +235,7 @@ func TestTxnPipelinerTrackInFlightWrites(t *testing.T) {
235235
require.True(t, ba.AsyncConsensus)
236236
require.IsType(t, &kvpb.QueryIntentRequest{}, ba.Requests[0].GetInner())
237237
require.IsType(t, &kvpb.ConditionalPutRequest{}, ba.Requests[1].GetInner())
238-
require.IsType(t, &kvpb.InitPutRequest{}, ba.Requests[2].GetInner())
238+
require.IsType(t, &kvpb.PutRequest{}, ba.Requests[2].GetInner())
239239
require.IsType(t, &kvpb.IncrementRequest{}, ba.Requests[3].GetInner())
240240
require.IsType(t, &kvpb.DeleteRequest{}, ba.Requests[4].GetInner())
241241

@@ -260,7 +260,7 @@ func TestTxnPipelinerTrackInFlightWrites(t *testing.T) {
260260
require.NotNil(t, br)
261261
require.Len(t, br.Responses, 4) // QueryIntent response stripped
262262
require.IsType(t, &kvpb.ConditionalPutResponse{}, br.Responses[0].GetInner())
263-
require.IsType(t, &kvpb.InitPutResponse{}, br.Responses[1].GetInner())
263+
require.IsType(t, &kvpb.PutResponse{}, br.Responses[1].GetInner())
264264
require.IsType(t, &kvpb.IncrementResponse{}, br.Responses[2].GetInner())
265265
require.IsType(t, &kvpb.DeleteResponse{}, br.Responses[3].GetInner())
266266
require.Nil(t, pErr)

pkg/kv/kvclient/kvcoord/txn_interceptor_seq_num_allocator_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func TestSequenceNumberAllocation(t *testing.T) {
6262
ba.Requests = nil
6363
ba.Add(&kvpb.ConditionalPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
6464
ba.Add(&kvpb.GetRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
65-
ba.Add(&kvpb.InitPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
65+
ba.Add(&kvpb.PutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
6666
ba.Add(&kvpb.ScanRequest{RequestHeader: kvpb.RequestHeader{Key: keyA, EndKey: keyB}})
6767

6868
mockSender.MockSend(func(ba *kvpb.BatchRequest) (*kvpb.BatchResponse, *kvpb.Error) {
@@ -153,7 +153,7 @@ func TestSequenceNumberAllocationWithStep(t *testing.T) {
153153
ba.Requests = nil
154154
ba.Add(&kvpb.ConditionalPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
155155
ba.Add(&kvpb.GetRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
156-
ba.Add(&kvpb.InitPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
156+
ba.Add(&kvpb.PutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
157157
ba.Add(&kvpb.ScanRequest{RequestHeader: kvpb.RequestHeader{Key: keyA, EndKey: keyB}})
158158

159159
mockSender.MockSend(func(ba *kvpb.BatchRequest) (*kvpb.BatchResponse, *kvpb.Error) {
@@ -204,7 +204,7 @@ func TestSequenceNumberAllocationWithStep(t *testing.T) {
204204
ba.Header = kvpb.Header{Txn: &txn}
205205
ba.Add(&kvpb.ConditionalPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
206206
ba.Add(&kvpb.GetRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
207-
ba.Add(&kvpb.InitPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
207+
ba.Add(&kvpb.PutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
208208
ba.Add(&kvpb.ScanRequest{RequestHeader: kvpb.RequestHeader{Key: keyA, EndKey: keyB}})
209209

210210
mockSender.MockSend(func(ba *kvpb.BatchRequest) (*kvpb.BatchResponse, *kvpb.Error) {
@@ -409,7 +409,7 @@ func TestSequenceNumberAllocationAfterEpochBump(t *testing.T) {
409409
ba.Header = kvpb.Header{Txn: &txn}
410410
ba.Add(&kvpb.ConditionalPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
411411
ba.Add(&kvpb.GetRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
412-
ba.Add(&kvpb.InitPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
412+
ba.Add(&kvpb.PutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
413413

414414
mockSender.MockSend(func(ba *kvpb.BatchRequest) (*kvpb.BatchResponse, *kvpb.Error) {
415415
require.Len(t, ba.Requests, 3)
@@ -435,7 +435,7 @@ func TestSequenceNumberAllocationAfterEpochBump(t *testing.T) {
435435
ba.Add(&kvpb.GetRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
436436
ba.Add(&kvpb.ConditionalPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
437437
ba.Add(&kvpb.ScanRequest{RequestHeader: kvpb.RequestHeader{Key: keyA, EndKey: keyB}})
438-
ba.Add(&kvpb.InitPutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
438+
ba.Add(&kvpb.PutRequest{RequestHeader: kvpb.RequestHeader{Key: keyA}})
439439

440440
mockSender.MockSend(func(ba *kvpb.BatchRequest) (*kvpb.BatchResponse, *kvpb.Error) {
441441
require.Len(t, ba.Requests, 4)

pkg/kv/kvclient/kvcoord/txn_interceptor_write_buffer_test.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1977,17 +1977,6 @@ func TestTxnWriteBufferBatchRequestValidation(t *testing.T) {
19771977
return &kvpb.BatchRequest{Header: header}
19781978
},
19791979
},
1980-
{
1981-
name: "batch with InitPut",
1982-
ba: func() *kvpb.BatchRequest {
1983-
b := &kvpb.BatchRequest{Header: kvpb.Header{Txn: &txn}}
1984-
b.Add(&kvpb.InitPutRequest{
1985-
RequestHeader: kvpb.RequestHeader{Key: keyA, Sequence: txn.Sequence},
1986-
Value: roachpb.Value{},
1987-
})
1988-
return b
1989-
},
1990-
},
19911980
{
19921981
name: "batch with ReturnRawMVCCValues Scan",
19931982
ba: func() *kvpb.BatchRequest {

pkg/kv/kvpb/api.go

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -333,13 +333,6 @@ func (cpr *ConditionalPutRequest) WriteBytes() int64 {
333333
return int64(len(cpr.Key)) + int64(cpr.Value.Size())
334334
}
335335

336-
var _ SizedWriteRequest = (*InitPutRequest)(nil)
337-
338-
// WriteBytes makes InitPutRequest implement SizedWriteRequest.
339-
func (pr *InitPutRequest) WriteBytes() int64 {
340-
return int64(len(pr.Key)) + int64(pr.Value.Size())
341-
}
342-
343336
var _ SizedWriteRequest = (*IncrementRequest)(nil)
344337

345338
// WriteBytes makes IncrementRequest implement SizedWriteRequest.
@@ -857,9 +850,6 @@ func (*PutRequest) Method() Method { return Put }
857850
// Method implements the Request interface.
858851
func (*ConditionalPutRequest) Method() Method { return ConditionalPut }
859852

860-
// Method implements the Request interface.
861-
func (*InitPutRequest) Method() Method { return InitPut }
862-
863853
// Method implements the Request interface.
864854
func (*IncrementRequest) Method() Method { return Increment }
865855

@@ -1013,12 +1003,6 @@ func (cpr *ConditionalPutRequest) ShallowCopy() Request {
10131003
return &shallowCopy
10141004
}
10151005

1016-
// ShallowCopy implements the Request interface.
1017-
func (pr *InitPutRequest) ShallowCopy() Request {
1018-
shallowCopy := *pr
1019-
return &shallowCopy
1020-
}
1021-
10221006
// ShallowCopy implements the Request interface.
10231007
func (ir *IncrementRequest) ShallowCopy() Request {
10241008
shallowCopy := *ir
@@ -1307,12 +1291,6 @@ func (cpr *ConditionalPutResponse) ShallowCopy() Response {
13071291
return &shallowCopy
13081292
}
13091293

1310-
// ShallowCopy implements the Response interface.
1311-
func (pr *InitPutResponse) ShallowCopy() Response {
1312-
shallowCopy := *pr
1313-
return &shallowCopy
1314-
}
1315-
13161294
// ShallowCopy implements the Response interface.
13171295
func (ir *IncrementResponse) ShallowCopy() Response {
13181296
shallowCopy := *ir
@@ -1888,17 +1866,6 @@ func (*ConditionalPutRequest) flags() flag {
18881866
canParallelCommit
18891867
}
18901868

1891-
// InitPut, like ConditionalPut, effectively reads without writing if it hits a
1892-
// ConditionFailedError, so it must update the timestamp cache in this case.
1893-
// InitPuts do not require a refresh because on write-too-old errors, they
1894-
// return an error immediately instead of continuing a serializable transaction
1895-
// to be retried at end transaction.
1896-
func (*InitPutRequest) flags() flag {
1897-
return isRead | isWrite | isTxn | isLocking | isIntentWrite |
1898-
appliesTSCache | updatesTSCache | updatesTSCacheOnErr | canBackpressure |
1899-
canPipeline | canParallelCommit
1900-
}
1901-
19021869
// Increment reads the existing value, but always leaves an intent so
19031870
// it does not need to update the timestamp cache. Increments do not
19041871
// require a refresh because on write-too-old errors, they return an

pkg/kv/kvpb/api.proto

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -381,30 +381,6 @@ message ConditionalPutResponse {
381381
ResponseHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true];
382382
}
383383

384-
// An InitPutRequest is the argument to the InitPut() method.
385-
//
386-
// - If key doesn't exist, sets value.
387-
// - If key exists, returns a ConditionFailedError if value != existing value
388-
// If failOnTombstones is set to true, tombstone values count as mismatched
389-
// values and will cause a ConditionFailedError.
390-
// TODO(yuzefovich): this can be removed once the compatibility with 24.3 is no
391-
// longer needed.
392-
message InitPutRequest {
393-
RequestHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true];
394-
Value value = 2 [(gogoproto.nullable) = false];
395-
// NOTE: For internal use only! Set to indicate that the put is
396-
// writing to virgin keyspace and no reads are necessary to
397-
// rationalize MVCC.
398-
bool blind = 3;
399-
// If true, tombstones cause ConditionFailedErrors.
400-
bool failOnTombstones = 4;
401-
}
402-
403-
// A InitPutResponse is the return value from the InitPut() method.
404-
message InitPutResponse {
405-
ResponseHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true];
406-
}
407-
408384
// An IncrementRequest is the argument to the Increment() method. It
409385
// increments the value for key, and returns the new value. If no
410386
// value exists for a key, incrementing by 0 is not a noop, but will
@@ -2511,7 +2487,6 @@ message RequestUnion {
25112487
ReverseScanRequest reverse_scan = 21;
25122488
ComputeChecksumRequest compute_checksum = 22;
25132489
CheckConsistencyRequest check_consistency = 24;
2514-
InitPutRequest init_put = 26;
25152490
TransferLeaseRequest transfer_lease = 28;
25162491
LeaseInfoRequest lease_info = 30;
25172492
ExportRequest export = 32;
@@ -2533,7 +2508,7 @@ message RequestUnion {
25332508
LinkExternalSSTableRequest link_external_sstable = 57;
25342509
ExciseRequest excise = 58;
25352510
}
2536-
reserved 8, 15, 23, 25, 27, 31, 34, 49, 52;
2511+
reserved 8, 15, 23, 25, 26, 27, 31, 34, 49, 52;
25372512
}
25382513

25392514
// A ResponseUnion contains exactly one of the responses.
@@ -2568,7 +2543,6 @@ message ResponseUnion {
25682543
ReverseScanResponse reverse_scan = 21;
25692544
ComputeChecksumResponse compute_checksum = 22;
25702545
CheckConsistencyResponse check_consistency = 24;
2571-
InitPutResponse init_put = 26;
25722546
LeaseInfoResponse lease_info = 30;
25732547
ExportResponse export = 32;
25742548
QueryTxnResponse query_txn = 33;
@@ -2589,7 +2563,7 @@ message ResponseUnion {
25892563
LinkExternalSSTableResponse link_external_sstable = 57;
25902564
ExciseResponse excise = 58;
25912565
}
2592-
reserved 8, 15, 23, 25, 27, 28, 31, 34, 49, 52;
2566+
reserved 8, 15, 23, 25, 26, 27, 28, 31, 34, 49, 52;
25932567
}
25942568

25952569
// A Header is attached to a BatchRequest, encapsulating routing and auxiliary

0 commit comments

Comments
 (0)