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 038b8c1 [txn_system_client] MonoDelta by value in
CoordinateTransactionAsync()
038b8c1 is described below
commit 038b8c15b43e6071ca1fbd8f91202168ef492dc7
Author: Alexey Serbin <[email protected]>
AuthorDate: Mon Jun 21 13:04:07 2021 -0700
[txn_system_client] MonoDelta by value in CoordinateTransactionAsync()
This patch updates the signature of the
TxnSystemClient::CoordinateTransactionAsync() method to pass MonoDelta
by value. In addition, I added an extra DCHECK() into
MonoTime::AddDelta().
The motivation for this change was seeing the following UBSAN warning
in one of the pre-commit builds [1]:
#0 0x7f48d11e8f3c in kudu::MonoTime::AddDelta(kudu::MonoDelta const&)
src/kudu/util/monotime.cc:218:10
#1 0x7f48d11e9eee in kudu::operator+(kudu::MonoTime const&,
kudu::MonoDelta const&) src/kudu/util/monotime.cc:333:7
#2 0x7f48e0d846c1 in
kudu::transactions::TxnSystemClient::CoordinateTransactionAsync(kudu::tserver::CoordinatorOpPB,
kudu::MonoDelta const&, std::function<void (kudu::Status const&)> const&,
kudu::tserver::CoordinatorOpResultPB*)
src/kudu/transactions/txn_system_client.cc:331:45
#3 0x7f48e0d86f76 in
kudu::transactions::TxnSystemClient::KeepTransactionAlive(long,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, kudu::MonoDelta) src/kudu/transactions/txn_system_client.cc:320:3
#4 0x7f48e24c62b9 in
kudu::transactions::TxnManager::KeepTransactionAlive(long,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, kudu::MonoTime const&) src/kudu/master/txn_manager.cc:238:27
#5 0x7f48e24ca36f in
kudu::transactions::TxnManagerServiceImpl::KeepTransactionAlive(kudu::transactions::KeepTransactionAliveRequestPB
const*, kudu::transactions::KeepTransactionAliveResponsePB*,
kudu::rpc::RpcContext*) src/kudu/master/txn_manager_service.cc:159:42
#6 0x7f48d7224b0e in std::function<void (google::protobuf::Message
const*, google::protobuf::Message*,
kudu::rpc::RpcContext*)>::operator()(google::protobuf::Message const*,
google::protobuf::Message*, kudu::rpc::RpcContext*) const
../../../include/c++/7.5.0/bits/std_function.h:706:14
#7 0x7f48d7223afc in
kudu::rpc::GeneratedServiceIf::Handle(kudu::rpc::InboundCall*)
src/kudu/rpc/service_if.cc:137:3
#8 0x7f48d7229a9d in kudu::rpc::ServicePool::RunThread()
src/kudu/rpc/service_pool.cc:232:15
#9 0x7f48d1290c3a in kudu::Thread::SuperviseThread(void*)
src/kudu/util/thread.cc:674:3
#10 0x7f48d3a046da in start_thread
(/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
#11 0x7f48cd55771e in clone (/lib/x86_64-linux-gnu/libc.so.6+0x12171e)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
src/kudu/util/monotime.cc:218:10
[1]
http://dist-test.cloudera.org/job?job_id=jenkins-slave.1623914260.1110749
Change-Id: I36ba521a3bb7a4ca42a5dc8d383f5d8b6309154d
Reviewed-on: http://gerrit.cloudera.org:8080/17611
Tested-by: Kudu Jenkins
Reviewed-by: Abhishek Chennaka <[email protected]>
Reviewed-by: Andrew Wong <[email protected]>
---
src/kudu/transactions/txn_system_client.cc | 2 +-
src/kudu/transactions/txn_system_client.h | 2 +-
src/kudu/util/monotime.cc | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/kudu/transactions/txn_system_client.cc
b/src/kudu/transactions/txn_system_client.cc
index 232cfb9..d8d2f07 100644
--- a/src/kudu/transactions/txn_system_client.cc
+++ b/src/kudu/transactions/txn_system_client.cc
@@ -324,7 +324,7 @@ Status TxnSystemClient::KeepTransactionAlive(int64_t txn_id,
}
Status TxnSystemClient::CoordinateTransactionAsync(CoordinatorOpPB
coordinate_txn_op,
- const MonoDelta& timeout,
+ MonoDelta timeout,
const StatusCallback& cb,
CoordinatorOpResultPB*
result) {
DCHECK(txn_status_table_);
diff --git a/src/kudu/transactions/txn_system_client.h
b/src/kudu/transactions/txn_system_client.h
index a40384d..4669e85 100644
--- a/src/kudu/transactions/txn_system_client.h
+++ b/src/kudu/transactions/txn_system_client.h
@@ -179,7 +179,7 @@ class TxnSystemClient {
client::KuduClient* client);
Status CoordinateTransactionAsync(tserver::CoordinatorOpPB coordinate_txn_op,
- const MonoDelta& timeout,
+ MonoDelta timeout,
const StatusCallback& cb,
tserver::CoordinatorOpResultPB* result =
nullptr);
diff --git a/src/kudu/util/monotime.cc b/src/kudu/util/monotime.cc
index efc54c2..743f824 100644
--- a/src/kudu/util/monotime.cc
+++ b/src/kudu/util/monotime.cc
@@ -215,6 +215,7 @@ MonoDelta MonoTime::GetDeltaSince(const MonoTime &rhs)
const {
void MonoTime::AddDelta(const MonoDelta &delta) {
DCHECK(Initialized());
+ DCHECK(delta.Initialized());
nanos_ += delta.nano_delta_;
}