[ https://issues.apache.org/jira/browse/TEPHRA-279?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andreas Neumann resolved TEPHRA-279. ------------------------------------ Resolution: Fixed > 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: Andreas Neumann > Priority: Major > > 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 (v7.6.3#76005)