Source:
<code>private void executeCommitWriter(Transaction transaction, Runnable commit, Runnable finish, Runnable sysabort) { synchronized(coordinatorLock) { try { journal.writeJournal(JournalEntry.COMMIT); journal.sync(); } catch(FileException ex) { if ( ex.getCause() instanceof ClosedByInterruptException ) { journal.reopen(); rollback(transaction, sysabort); SysLog.warn("Thread interrupt during I/O in 'commit' : executed transaction rollback: "+ex.getMessage()); throw new TransactionException("Thread interrupt during I/O in 'commit' : transaction rollback.", ex); } if ( isIOException(ex) ) SysErr.warn("IOException during 'commit' : transaction may have committed. Attempting rollback: "+ex.getMessage()); else SysErr.warn("Exception during 'commit' : transaction may have committed. Attempting rollback. Details:",ex); if ( abandonTxn(transaction, sysabort) ) { SysErr.warn("Transaction rollback"); throw new TransactionException("Exception during 'commit' - transaction rollback.", ex); } SysErr.error("Transaction rollback failed. System unstable."); <START> throw new TransactionException("Exception during 'rollback' - System unstable.", ex); <END> } catch (Throwable ex) { SysErr.warn("Unexpected Throwable during 'commit' : transaction may have committed. Attempting rollback: ",ex); if ( abandonTxn(transaction, sysabort) ) { SysErr.warn("Transaction rollback"); throw new TransactionException("Exception during 'commit' - transaction rollback.", ex); } SysErr.error("Transaction rollback failed. System unstable."); throw new TransactionException("Exception during 'rollback' - System unstable.", ex); } commit.run() ; journal.truncate(0) ; finish.run() ; advanceDataVersion() ; notifyCommitFinish(transaction) ; } }</code><technical_language>asking users report get idea of prevalent (or not) this situation is in wild. If wrong users IO setup (whether transient not) worth making clear</technical_language>

Target:
private void executeCommitWriter(Transaction transaction, Runnable commit, Runnable finish, Runnable sysabort) { synchronized(coordinatorLock) { try { journal.writeJournal(JournalEntry.COMMIT); journal.sync(); } catch(FileException ex) { if ( ex.getCause() instanceof ClosedByInterruptException ) { journal.reopen(); rollback(transaction, sysabort); SysLog.warn("Thread interrupt during I/O in 'commit' : executed transaction rollback: "+ex.getMessage()); throw new TransactionException("Thread interrupt during I/O in 'commit' : transaction rollback.", ex); } if ( isIOException(ex) ) SysErr.warn("IOException during 'commit' : transaction may have committed. Attempting rollback: "+ex.getMessage()); else SysErr.warn("Exception during 'commit' : transaction may have committed. Attempting rollback. Details:",ex); if ( abandonTxn(transaction, sysabort) ) { SysErr.warn("Transaction rollback"); throw new TransactionException("Exception during 'commit' - transaction rollback.", ex); } SysErr.error("Transaction rollback failed. System unstable."+ "\nPlease contact users@jena.apache.org, giving details of the environment and this incident."); throw new Error("Exception during 'rollback' - System unstable.", ex); } catch (Throwable ex) { SysErr.warn("Unexpected Throwable during 'commit' : transaction may have committed. Attempting rollback: ",ex); if ( abandonTxn(transaction, sysabort) ) { SysErr.warn("Transaction rollback"); throw new TransactionException("Exception during 'commit' - transaction rollback.", ex); } SysErr.error("Transaction rollback failed. System unstable."); throw new TransactionException("Exception during 'rollback' - System unstable.", ex); } commit.run() ; journal.truncate(0) ; finish.run() ; advanceDataVersion() ; notifyCommitFinish(transaction) ; } }