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/05 01:58:23 UTC

[3/7] kudu git commit: KUDU-625 - Make write transactions abort in mvcc, by default

KUDU-625 - Make write transactions abort in mvcc, by default

This patch addresses a long standing TODO where we would commit
transactions on the WriteTransactionState dctor instead of
aborting them, if they hadn't been explicitly
committed/aborted.

Besides changing WriteTransactionState::Reset() to call
CommitOrAbort(Transaction::ABORTED) this also required a change
to TabletBootstrap to explicitly call
tx_state.CommitOrAbort(Transaction::COMMITTED) in
PlayWriteRequest().

I ran raft_consensus-itest and exactly_once_writes-itest in slow
mode, asan, for 1000 loops on dist-test. No failures.
Results:

exactly_once_writes-itest: http://dist-test.cloudera.org//job?job_id=david.alves.1480657298.6678
raft_consensus-itest     : http://dist-test.cloudera.org//job?job_id=david.alves.1480657298.6678

Change-Id: I22be773081ca3f3b1eab029e847a21e3182c64c9
Reviewed-on: http://gerrit.cloudera.org:8080/5320
Reviewed-by: Alexey Serbin <as...@cloudera.com>
Reviewed-by: Todd Lipcon <to...@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/7e3071e3
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/7e3071e3
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/7e3071e3

Branch: refs/heads/master
Commit: 7e3071e3ce92aa15ea4f21d891e1e366ff421b4e
Parents: fffe576
Author: David Alves <dr...@apache.org>
Authored: Thu Dec 1 16:24:15 2016 -0800
Committer: David Ribeiro Alves <dr...@apache.org>
Committed: Sat Dec 3 01:25:35 2016 +0000

----------------------------------------------------------------------
 src/kudu/tablet/tablet_bootstrap.cc               | 2 ++
 src/kudu/tablet/transactions/write_transaction.cc | 3 +--
 2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/7e3071e3/src/kudu/tablet/tablet_bootstrap.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet_bootstrap.cc b/src/kudu/tablet/tablet_bootstrap.cc
index 55a76d2..95a167e 100644
--- a/src/kudu/tablet/tablet_bootstrap.cc
+++ b/src/kudu/tablet/tablet_bootstrap.cc
@@ -1274,6 +1274,8 @@ Status TabletBootstrap::PlayWriteRequest(ReplicateMsg* replicate_msg,
     tx_state.ReleaseTxResultPB(commit->mutable_result());
   }
 
+  tx_state.CommitOrAbort(Transaction::COMMITTED);
+
   RETURN_NOT_OK(log_->Append(&commit_entry));
 
   return Status::OK();

http://git-wip-us.apache.org/repos/asf/kudu/blob/7e3071e3/src/kudu/tablet/transactions/write_transaction.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/transactions/write_transaction.cc b/src/kudu/tablet/transactions/write_transaction.cc
index 6387fb1..d2207fc 100644
--- a/src/kudu/tablet/transactions/write_transaction.cc
+++ b/src/kudu/tablet/transactions/write_transaction.cc
@@ -325,8 +325,7 @@ WriteTransactionState::~WriteTransactionState() {
 }
 
 void WriteTransactionState::Reset() {
-  // We likely shouldn't Commit() here. See KUDU-625.
-  CommitOrAbort(Transaction::COMMITTED);
+  CommitOrAbort(Transaction::ABORTED);
   tx_metrics_.Reset();
   timestamp_ = Timestamp::kInvalidTimestamp;
   tablet_components_ = nullptr;