You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug Description
If a thread running the transaction gets interrupted, Atomikos fails with a crash.
To reproduce
Just call
Thread.currentThread().interrupt();
On transaction boundary the application crashes, as Atomikos tries to write a checkpoint. However, writing in the respective file fails in the interrupted thread. If you try to commit, it fails and data are not committed. The exception follows:
Caused by: jakarta.transaction.RollbackException: Error in committing: could not flush state image java.nio.channels.ClosedByInterruptException com.atomikos.recovery.LogWriteException - recovery will clean up in the background
at com.atomikos.icatch.jta.TransactionImp.rethrowAsJtaRollbackException(TransactionImp.java:49)
at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:192)
at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:428)
at com.atomikos.icatch.jta.UserTransactionManager.commit(UserTransactionManager.java:160)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1026)
... 44 more
Caused by: java.lang.IllegalStateException: could not flush state image java.nio.channels.ClosedByInterruptException com.atomikos.recovery.LogWriteException
at com.atomikos.persistence.imp.StateRecoveryManagerImp.preEnter(StateRecoveryManagerImp.java:54)
at com.atomikos.finitestates.FSMImp.notifyListeners(FSMImp.java:102)
at com.atomikos.finitestates.FSMImp.setState(FSMImp.java:180)
at com.atomikos.icatch.imp.CoordinatorImp.setState(CoordinatorImp.java:283)
at com.atomikos.icatch.imp.CoordinatorStateHandler.commitFromWithinCallback(CoordinatorStateHandler.java:346)
at com.atomikos.icatch.imp.ActiveStateHandler$6.doCommit(ActiveStateHandler.java:285)
at com.atomikos.icatch.imp.CoordinatorStateHandler.commitWithAfterCompletionNotification(CoordinatorStateHandler.java:587)
at com.atomikos.icatch.imp.ActiveStateHandler.commit(ActiveStateHandler.java:280)
at com.atomikos.icatch.imp.CoordinatorImp.commit(CoordinatorImp.java:547)
at com.atomikos.icatch.imp.CoordinatorImp.terminate(CoordinatorImp.java:679)
at com.atomikos.icatch.imp.CompositeTransactionImp.commit(CompositeTransactionImp.java:279)
at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:178)
... 47 more
Caused by: com.atomikos.recovery.LogWriteException: java.nio.channels.ClosedByInterruptException
at com.atomikos.recovery.fs.FileSystemRepository.writeCheckpoint(FileSystemRepository.java:203)
at com.atomikos.recovery.fs.CachedRepository.performCheckpoint(CachedRepository.java:84)
at com.atomikos.recovery.fs.CachedRepository.put(CachedRepository.java:77)
at com.atomikos.recovery.fs.OltpLogImp.write(OltpLogImp.java:46)
at com.atomikos.persistence.imp.StateRecoveryManagerImp.preEnter(StateRecoveryManagerImp.java:51)
... 58 more
Caused by: java.nio.channels.ClosedByInterruptException
at java.base/java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:200)
at java.base/sun.nio.ch.FileChannelImpl.endBlocking(FileChannelImpl.java:172)
at java.base/sun.nio.ch.FileChannelImpl.force(FileChannelImpl.java:532)
at com.atomikos.recovery.fs.FileSystemRepository.writeCheckpoint(FileSystemRepository.java:196)
... 62 more
If you try to rollback, crash occurs either. The exception follows:
Caused by: com.atomikos.icatch.jta.ExtendedSystemException: Error in rollback: could not flush state image java.nio.channels.ClosedByInterruptException com.atomikos.recovery.LogWriteException
at com.atomikos.icatch.jta.TransactionImp.rollback(TransactionImp.java:206)
at com.atomikos.icatch.jta.TransactionManagerImp.rollback(TransactionManagerImp.java:440)
at com.atomikos.icatch.jta.UserTransactionManager.rollback(UserTransactionManager.java:199)
at org.springframework.transaction.jta.JtaTransactionManager.doRollback(JtaTransactionManager.java:1053)
... 44 more
Caused by: com.atomikos.icatch.SysException: Error in rollback: could not flush state image java.nio.channels.ClosedByInterruptException com.atomikos.recovery.LogWriteException
at com.atomikos.icatch.imp.CoordinatorStateHandler.rollbackFromWithinCallback(CoordinatorStateHandler.java:518)
at com.atomikos.icatch.imp.ActiveStateHandler$7.doRollback(ActiveStateHandler.java:302)
at com.atomikos.icatch.imp.CoordinatorStateHandler.rollbackWithAfterCompletionNotification(CoordinatorStateHandler.java:569)
at com.atomikos.icatch.imp.ActiveStateHandler.rollback(ActiveStateHandler.java:297)
at com.atomikos.icatch.imp.CoordinatorImp.rollback(CoordinatorImp.java:576)
at com.atomikos.icatch.imp.TransactionStateHandler.rollback(TransactionStateHandler.java:171)
at com.atomikos.icatch.imp.TransactionStateHandler.rollbackWithStateCheck(TransactionStateHandler.java:186)
at com.atomikos.icatch.imp.CompositeTransactionImp.doRollback(CompositeTransactionImp.java:193)
at com.atomikos.icatch.imp.CompositeTransactionImp.rollback(CompositeTransactionImp.java:317)
at com.atomikos.icatch.jta.TransactionImp.rollback(TransactionImp.java:203)
... 47 more
Caused by: java.lang.IllegalStateException: could not flush state image java.nio.channels.ClosedByInterruptException com.atomikos.recovery.LogWriteException
at com.atomikos.persistence.imp.StateRecoveryManagerImp.preEnter(StateRecoveryManagerImp.java:54)
at com.atomikos.finitestates.FSMImp.notifyListeners(FSMImp.java:102)
at com.atomikos.finitestates.FSMImp.setState(FSMImp.java:180)
at com.atomikos.icatch.imp.CoordinatorImp.setState(CoordinatorImp.java:283)
at com.atomikos.icatch.imp.CoordinatorImp.setStateHandler(CoordinatorImp.java:202)
at com.atomikos.icatch.imp.CoordinatorStateHandler.rollbackFromWithinCallback(CoordinatorStateHandler.java:512)
... 56 more
Caused by: com.atomikos.recovery.LogWriteException: java.nio.channels.ClosedByInterruptException
at com.atomikos.recovery.fs.FileSystemRepository.writeCheckpoint(FileSystemRepository.java:203)
at com.atomikos.recovery.fs.CachedRepository.performCheckpoint(CachedRepository.java:84)
at com.atomikos.recovery.fs.CachedRepository.put(CachedRepository.java:77)
at com.atomikos.recovery.fs.OltpLogImp.write(OltpLogImp.java:46)
at com.atomikos.persistence.imp.StateRecoveryManagerImp.preEnter(StateRecoveryManagerImp.java:51)
... 61 more
Caused by: java.nio.channels.ClosedByInterruptException
at java.base/java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:200)
at java.base/sun.nio.ch.FileChannelImpl.endBlocking(FileChannelImpl.java:172)
at java.base/sun.nio.ch.FileChannelImpl.force(FileChannelImpl.java:532)
at com.atomikos.recovery.fs.FileSystemRepository.writeCheckpoint(FileSystemRepository.java:196)
... 65 more
TransactionsEssentials version
6.0.0
The text was updated successfully, but these errors were encountered:
miroch41
changed the title
Crash on rollback in an interrupted thread
Crash on an interrupted thread
Feb 28, 2025
Bug Description
If a thread running the transaction gets interrupted, Atomikos fails with a crash.
To reproduce
Just call
On transaction boundary the application crashes, as Atomikos tries to write a checkpoint. However, writing in the respective file fails in the interrupted thread. If you try to commit, it fails and data are not committed. The exception follows:
If you try to rollback, crash occurs either. The exception follows:
TransactionsEssentials version
6.0.0
The text was updated successfully, but these errors were encountered: