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 <achenn...@cloudera.com> 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 <ale...@apache.org> --- 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;