Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/7439 to look at the new patch set (#6). Change subject: disk failure: release failed txs from tracker ...................................................................... disk failure: release failed txs from tracker Currently, if a TransactionState object is deleted while it is Applying, Kudu will crash as a way to prevent the failed transaction from persisting incorrect state onto disk. However, this is not always necessary: transactions that fail due to disk failure may want to keep the server alive by marking the tablet as unusable. In this case, there needs to be a way to release transactions from the TransactionTracker without crashing Kudu, regardless of state. This patch adds the ability to Cancel transactions. Unlike Aborts, which ensure the transaction is not in the APPLYING state when destructed, a Canceled transaction has no such constraint. This is only "safe" because the TransactionTracker's tablet is expected to shut down and no longer be used. Additionally, a new flag is added to Tablet to indicate that it resides on a failed disk. If set, the tablet's transactions will end early. Currently, this codepath will not have a visible effect on Kudu as disk failures are still fatal, but testing is still done to test when this flag is manually set without crashes. Testing is done in a couple ways: - A test is added in mvcc-test to Cancel an Applying ScopedTransaction and ensure that there are no errors when it leaves scope. - A test is added to tablet_replica-test to register a WriteTransaction, set the tablet's "in-failed-dir" flag, and being Applying. The transaction exits early and releases itself from MVCC. This is part of a series of patches to address disk failure. To see how this patch fits in, see section 2.3 of: https://docs.google.com/document/d/1zZk-vb_ETKUuePcZ9ZqoSK2oPvAAaEV1sjDXes8Pxgk/edit Change-Id: I983620f27e7226806a2cca253db7619731914d42 --- M src/kudu/tablet/mvcc-test.cc M src/kudu/tablet/mvcc.cc M src/kudu/tablet/mvcc.h M src/kudu/tablet/tablet.cc M src/kudu/tablet/tablet.h M src/kudu/tablet/tablet_replica-test.cc M src/kudu/tablet/transactions/alter_schema_transaction.cc M src/kudu/tablet/transactions/alter_schema_transaction.h M src/kudu/tablet/transactions/transaction.h M src/kudu/tablet/transactions/transaction_driver.cc M src/kudu/tablet/transactions/transaction_driver.h M src/kudu/tablet/transactions/transaction_tracker-test.cc M src/kudu/tablet/transactions/write_transaction.cc M src/kudu/tablet/transactions/write_transaction.h M src/kudu/tserver/ts_tablet_manager.cc 15 files changed, 133 insertions(+), 27 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/39/7439/6 -- To view, visit http://gerrit.cloudera.org:8080/7439 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I983620f27e7226806a2cca253db7619731914d42 Gerrit-PatchSet: 6 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Andrew Wong <aw...@cloudera.com> Gerrit-Reviewer: David Ribeiro Alves <davidral...@gmail.com> Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy <mpe...@apache.org> Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon <t...@apache.org>