Andreas Neumann created TEPHRA-279:
--------------------------------------
Summary: If getTransactionAwareName() throws an exception, abort()
does not happen
Key: TEPHRA-279
URL: https://issues.apache.org/jira/browse/TEPHRA-279
Project: Tephra
Issue Type: Bug
Components: core
Affects Versions: 0.13.0-incubating
Reporter: Andreas Neumann
Assignee: Poorna Chandra
The problem is here in TransactionContext:
{code}
private void checkForConflicts() throws TransactionFailureException {
Collection<byte[]> changes = Lists.newArrayList();
for (TransactionAware txAware : txAwares) {
try {
changes.addAll(txAware.getTxChanges());
} catch (Throwable e) {
// ---- PROBLEM: if getTransactionAwareName() throws, abprt() is not
called!
String message = String.format("Unable to retrieve changes from
transaction-aware '%s' for transaction %d. ",
txAware.getTransactionAwareName(),
currentTx.getTransactionId());
LOG.warn(message, e);
abort(new TransactionFailureException(message, e));
// abort will throw that exception
}
}
{code}
We could consider such a transaction-aware ill-behaved, but we should still
make sure the transaction semantics remain correct.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)