This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-3091 in repository https://gitbox.apache.org/repos/asf/isis.git
commit f0edda908c95b9dfa37ee5441545d98ff156f789 Author: Dan Haywood <[email protected]> AuthorDate: Mon Aug 1 08:38:27 2022 +0100 ISIS-3091: adds guard to ignore setRollbackOnly if PM already closed --- .../jdo/spring/integration/JdoTransactionManager.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/persistence/jdo/spring/src/main/java/org/apache/isis/persistence/jdo/spring/integration/JdoTransactionManager.java b/persistence/jdo/spring/src/main/java/org/apache/isis/persistence/jdo/spring/integration/JdoTransactionManager.java index 9b8c0faacb..1ed2f189a6 100644 --- a/persistence/jdo/spring/src/main/java/org/apache/isis/persistence/jdo/spring/integration/JdoTransactionManager.java +++ b/persistence/jdo/spring/src/main/java/org/apache/isis/persistence/jdo/spring/integration/JdoTransactionManager.java @@ -41,6 +41,8 @@ import org.springframework.transaction.support.DelegatingTransactionDefinition; import org.springframework.transaction.support.ResourceTransactionManager; import org.springframework.transaction.support.TransactionSynchronizationManager; +import lombok.val; + /** * {@link org.springframework.transaction.PlatformTransactionManager} implementation for a * single JDO {@link javax.jdo.PersistenceManagerFactory}. Binds a JDO PersistenceManager @@ -467,9 +469,15 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager @Override protected void doSetRollbackOnly(DefaultTransactionStatus status) { JdoTransactionObject txObject = (JdoTransactionObject) status.getTransaction(); + val persistenceManager = txObject.getPersistenceManagerHolder().getPersistenceManager(); + if (persistenceManager.isClosed()) { + logger.warn("Request to set JDO transaction on PersistenceManager [" + + persistenceManager + "] rollback-only ignored; PM is closed"); + return; + } if (status.isDebug()) { logger.debug("Setting JDO transaction on PersistenceManager [" + - txObject.getPersistenceManagerHolder().getPersistenceManager() + "] rollback-only"); + persistenceManager + "] rollback-only"); } txObject.setRollbackOnly(); }
