You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by to...@apache.org on 2016/12/01 01:15:11 UTC
[8/9] kudu git commit: KUDU-1770 [c++ client] propagate timestamp for
write operations
KUDU-1770 [c++ client] propagate timestamp for write operations
Updated the Kudu C++ client library to propagate timestamp for write
operations.
This is a fix for
KUDU-1770 C++ client: propagate timestamp for write operations
This patch also enables the integration test which was failing prior
to this fix: ConsistencyITest.TestTimestampPropagationForWriteOps
Change-Id: I17feb6b2dacd0ba7c8b57464f1a50de99de2f772
Reviewed-on: http://gerrit.cloudera.org:8080/5269
Reviewed-by: David Ribeiro Alves <dr...@apache.org>
Tested-by: Kudu Jenkins
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/e4f7e926
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/e4f7e926
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/e4f7e926
Branch: refs/heads/master
Commit: e4f7e926c4205ffec04b651afc178bd0b447a9ae
Parents: eb1f454
Author: Alexey Serbin <as...@cloudera.com>
Authored: Tue Nov 29 14:58:31 2016 -0800
Committer: David Ribeiro Alves <dr...@apache.org>
Committed: Wed Nov 30 22:53:27 2016 +0000
----------------------------------------------------------------------
src/kudu/client/batcher.cc | 13 ++++++++++---
src/kudu/integration-tests/consistency-itest.cc | 2 +-
2 files changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/e4f7e926/src/kudu/client/batcher.cc
----------------------------------------------------------------------
diff --git a/src/kudu/client/batcher.cc b/src/kudu/client/batcher.cc
index 61ff087..b1e9159 100644
--- a/src/kudu/client/batcher.cc
+++ b/src/kudu/client/batcher.cc
@@ -194,7 +194,8 @@ class WriteRpc : public RetriableRpc<RemoteTabletServer, WriteRequestPB, WriteRe
vector<InFlightOp*> ops,
const MonoTime& deadline,
const shared_ptr<Messenger>& messenger,
- const string& tablet_id);
+ const string& tablet_id,
+ uint64_t propagated_timestamp);
virtual ~WriteRpc();
string ToString() const override;
@@ -231,7 +232,8 @@ WriteRpc::WriteRpc(const scoped_refptr<Batcher>& batcher,
vector<InFlightOp*> ops,
const MonoTime& deadline,
const shared_ptr<Messenger>& messenger,
- const string& tablet_id)
+ const string& tablet_id,
+ uint64_t propagated_timestamp)
: RetriableRpc(replica_picker, request_tracker, deadline, messenger),
batcher_(batcher),
ops_(std::move(ops)),
@@ -250,6 +252,10 @@ WriteRpc::WriteRpc(const scoped_refptr<Batcher>& batcher,
LOG(FATAL) << "Unsupported consistency mode: " << batcher->external_consistency_mode();
}
+ // If set, propagate the latest observed timestamp.
+ if (PREDICT_TRUE(propagated_timestamp != KuduClient::kNoTimestamp)) {
+ req_.set_propagated_timestamp(propagated_timestamp);
+ }
// Set up schema
CHECK_OK(SchemaToPB(*schema, req_.mutable_schema(),
@@ -695,7 +701,8 @@ void Batcher::FlushBuffer(RemoteTablet* tablet, const vector<InFlightOp*>& ops)
ops,
deadline_,
client_->data_->messenger_,
- tablet->tablet_id());
+ tablet->tablet_id(),
+ client_->data_->GetLatestObservedTimestamp());
rpc->SendRpc();
}
http://git-wip-us.apache.org/repos/asf/kudu/blob/e4f7e926/src/kudu/integration-tests/consistency-itest.cc
----------------------------------------------------------------------
diff --git a/src/kudu/integration-tests/consistency-itest.cc b/src/kudu/integration-tests/consistency-itest.cc
index 2d763c4..10c0574 100644
--- a/src/kudu/integration-tests/consistency-itest.cc
+++ b/src/kudu/integration-tests/consistency-itest.cc
@@ -382,7 +382,7 @@ TEST_F(ConsistencyITest, TestTimestampPropagationFromScans) {
// write operation. Since a write operation should always advance the server
// clock, the resulting timestamp returned to the client should be strictly
// greater than the propagated one.
-TEST_F(ConsistencyITest, DISABLED_TestTimestampPropagationForWriteOps) {
+TEST_F(ConsistencyITest, TestTimestampPropagationForWriteOps) {
const int32_t offset_usec = FLAGS_max_clock_sync_error_usec;
// Assuming the offset is specified as a positive number.
ASSERT_GT(offset_usec, 0);