This is an automated email from the ASF dual-hosted git repository.
alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push:
new 74ea7543e [server] KUDU-1945 Fix bug in RowOperationsPBDecoder
74ea7543e is described below
commit 74ea7543e3ad8abebea8844ac97b827d4fed9aea
Author: Abhishek Chennaka <[email protected]>
AuthorDate: Thu Apr 6 17:40:56 2023 -0700
[server] KUDU-1945 Fix bug in RowOperationsPBDecoder
This fixes the situation where we decode any operation containing
auto incrementing column with auto_incrementing_counter being nullptr.
Change-Id: I540698ba346f9c6bed36607b222521b65c46018f
Reviewed-on: http://gerrit.cloudera.org:8080/19710
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <[email protected]>
---
src/kudu/common/row_operations.cc | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/kudu/common/row_operations.cc
b/src/kudu/common/row_operations.cc
index 2c0991502..b3a359323 100644
--- a/src/kudu/common/row_operations.cc
+++ b/src/kudu/common/row_operations.cc
@@ -500,6 +500,12 @@ Status RowOperationsPBDecoder::DecodeInsertOrUpsert(const
uint8_t* prototype_row
op->SetFailureStatusOnce(err_max_value);
return err_max_value;
}
+ if (*DCHECK_NOTNULL(auto_incrementing_counter) < 0) {
+ static const Status err_value = Status::IllegalState("invalid
auto-incrementing "
+ "column value");
+ op->SetFailureStatusOnce(err_value);
+ return err_value;
+ }
// We increment the auto incrementing counter at this point regardless
of future failures
// in the op for simplicity. The auto-incrementing column key space is
large enough to
// not run of values for any realistic workloads.
@@ -731,6 +737,8 @@ Status
RowOperationsPBDecoder::DecodeOperations(vector<DecodedRowOperation>* ops
uint8_t prototype_row_storage[tablet_row_size_];
ContiguousRow prototype_row(tablet_schema_, prototype_row_storage);
SetupPrototypeRow(*tablet_schema_, &prototype_row);
+ int64_t counter = -1;
+ auto_incrementing_counter = auto_incrementing_counter ?
auto_incrementing_counter : &counter;
while (HasNext()) {
RowOperationsPB::Type type = RowOperationsPB::UNKNOWN;