You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Oscar Bou (JIRA)" <ji...@apache.org> on 2014/05/01 13:44:18 UTC

[jira] [Commented] (ISIS-769) IsisTransaction should do a "precommit" for pending updates to applib services, prior to commiting the underlying (JDO) transaction.

    [ https://issues.apache.org/jira/browse/ISIS-769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13986522#comment-13986522 ] 

Oscar Bou commented on ISIS-769:
--------------------------------

Just debugging this right now. Perhaps it's helpful while implementing the ticket:

javax.jdo.JDOException: Unexpected error during precommit
	at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:596)
	at org.datanucleus.api.jdo.JDOTransaction.commit(JDOTransaction.java:165)
	at org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.commitJdoTransaction(DataNucleusObjectStore.java:278)
	at org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.endTransaction(DataNucleusObjectStore.java:260)
	at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.endTransaction(IsisTransactionManager.java:406)
	at org.apache.isis.core.integtestsupport.IsisSystemForTest.commitTran(IsisSystemForTest.java:610)
	at org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration.endTran(ScenarioExecutionForIntegration.java:75)
	at org.apache.isis.core.specsupport.specs.CukeGlueAbstract.after(CukeGlueAbstract.java:339)
	at com.xms.framework.architecture.specsupport.BootstrappingForIntegrationScopeGlue.afterScenario(BootstrappingForIntegrationScopeGlue.java:23)
	at sun.reflect.GeneratedMethodAccessor298.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at cucumber.runtime.Utils$1.call(Utils.java:35)
	at cucumber.runtime.Timeout.timeout(Timeout.java:12)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaHookDefinition.execute(JavaHookDefinition.java:59)
	at cucumber.runtime.Runtime.runHookIfTagsMatch(Runtime.java:213)
	at cucumber.runtime.Runtime.runHooks(Runtime.java:201)
	at cucumber.runtime.Runtime.runAfterHooks(Runtime.java:195)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:42)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:83)
	at org.junit.runners.Suite.runChild(Suite.java:127)
	at org.junit.runners.Suite.runChild(Suite.java:26)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.junit.runners.Suite.runChild(Suite.java:127)
	at org.junit.runners.Suite.runChild(Suite.java:26)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:82)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:41)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:87)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
NestedThrowablesStackTrace:
java.lang.RuntimeException: org.apache.isis.core.metamodel.spec.DomainModelException: Callback failed.  Calling UpdatedCallbackFacetViaMethod[type=UpdatedCallbackFacet,methods=[public void com.xms.framework.architecture.domain.model.Asset.updated()]] on PojoAdapter@19fc0a04[PR~:com.xms.framework.architecture.domain.model.business.extensions.businessactor.Position:L_39,specification=Position,version=null,pojo-toString= [name=position 240,  [tenantId=301, [id=DA5EB7DA-37DC-4EE1-8490-8208F50CE27C, class name=com.xms.framework.architecture.domain.model.business.extensions.businessactor.Position]]],pojo-hash=#ffffffff9a71dfa2]
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:278)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:287)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.postStoreProcessingFor(FrameworkSynchronizer.java:140)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener$2.doRun(IsisLifecycleListener.java:95)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener$RunnableAbstract.run(IsisLifecycleListener.java:201)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener.withLogging(IsisLifecycleListener.java:180)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener.postStore(IsisLifecycleListener.java:91)
	at org.datanucleus.api.jdo.JDOCallbackHandler.postStore(JDOCallbackHandler.java:158)
	at org.datanucleus.state.JDOStateManager.flush(JDOStateManager.java:5035)
	at org.datanucleus.state.JDOStateManager.runReachability(JDOStateManager.java:3652)
	at org.datanucleus.store.fieldmanager.ReachabilityFieldManager.processPersistable(ReachabilityFieldManager.java:69)
	at org.datanucleus.store.fieldmanager.ReachabilityFieldManager.storeObjectField(ReachabilityFieldManager.java:121)
	at org.datanucleus.state.JDOStateManager.providedObjectField(JDOStateManager.java:1269)
	at com.xms.framework.architecture.domain.model.EnterpriseArchitectureModel.jdoProvideField(EnterpriseArchitectureModel.java)
	at com.xms.framework.api.domain.model.isis.AbstractXMSDomainObject.jdoProvideFields(AbstractXMSDomainObject.java)
	at org.datanucleus.state.JDOStateManager.provideFields(JDOStateManager.java:1346)
	at org.datanucleus.state.JDOStateManager.runReachability(JDOStateManager.java:3678)
	at org.datanucleus.ExecutionContextImpl.performReachabilityAtCommit(ExecutionContextImpl.java:4437)
	at org.datanucleus.ExecutionContextImpl.preCommit(ExecutionContextImpl.java:4230)
	at org.datanucleus.ExecutionContextImpl.transactionPreCommit(ExecutionContextImpl.java:654)
	at org.datanucleus.TransactionImpl.internalPreCommit(TransactionImpl.java:379)
	at org.datanucleus.TransactionImpl.commit(TransactionImpl.java:268)
	at org.datanucleus.api.jdo.JDOTransaction.commit(JDOTransaction.java:98)
	at org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.commitJdoTransaction(DataNucleusObjectStore.java:278)
	at org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.endTransaction(DataNucleusObjectStore.java:260)
	at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.endTransaction(IsisTransactionManager.java:406)
	at org.apache.isis.core.integtestsupport.IsisSystemForTest.commitTran(IsisSystemForTest.java:610)
	at org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration.endTran(ScenarioExecutionForIntegration.java:75)
	at org.apache.isis.core.specsupport.specs.CukeGlueAbstract.after(CukeGlueAbstract.java:339)
	at com.xms.framework.architecture.specsupport.BootstrappingForIntegrationScopeGlue.afterScenario(BootstrappingForIntegrationScopeGlue.java:23)
	at sun.reflect.GeneratedMethodAccessor298.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at cucumber.runtime.Utils$1.call(Utils.java:35)
	at cucumber.runtime.Timeout.timeout(Timeout.java:12)
	at cucumber.runtime.Utils.invoke(Utils.java:31)
	at cucumber.runtime.java.JavaHookDefinition.execute(JavaHookDefinition.java:59)
	at cucumber.runtime.Runtime.runHookIfTagsMatch(Runtime.java:213)
	at cucumber.runtime.Runtime.runHooks(Runtime.java:201)
	at cucumber.runtime.Runtime.runAfterHooks(Runtime.java:195)
	at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:42)
	at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:83)
	at org.junit.runners.Suite.runChild(Suite.java:127)
	at org.junit.runners.Suite.runChild(Suite.java:26)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.junit.runners.Suite.runChild(Suite.java:127)
	at org.junit.runners.Suite.runChild(Suite.java:26)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:82)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:41)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:87)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.apache.isis.core.metamodel.spec.DomainModelException: Callback failed.  Calling UpdatedCallbackFacetViaMethod[type=UpdatedCallbackFacet,methods=[public void com.xms.framework.architecture.domain.model.Asset.updated()]] on PojoAdapter@19fc0a04[PR~:com.xms.framework.architecture.domain.model.business.extensions.businessactor.Position:L_39,specification=Position,version=null,pojo-toString= [name=position 240,  [tenantId=301, [id=DA5EB7DA-37DC-4EE1-8490-8208F50CE27C, class name=com.xms.framework.architecture.domain.model.business.extensions.businessactor.Position]]],pojo-hash=#ffffffff9a71dfa2]
	at org.apache.isis.core.metamodel.facets.object.callbacks.CallbackUtils.callCallback(CallbackUtils.java:37)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer$2.run(FrameworkSynchronizer.java:176)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer$7.call(FrameworkSynchronizer.java:291)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer$7.call(FrameworkSynchronizer.java:287)
	at org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:276)
	... 81 more
Caused by: java.lang.IllegalStateException: Transaction already active
	at org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.beginJdoTransaction(DataNucleusObjectStore.java:270)
	at org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.startTransaction(DataNucleusObjectStore.java:256)
	at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.startTransaction(IsisTransactionManager.java:290)
	at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:177)
	at org.apache.isis.core.runtime.transaction.facets.PropertySetterFacetWrapTransaction.setProperty(PropertySetterFacetWrapTransaction.java:52)
	at org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl.setValue(OneToOneAssociationImpl.java:186)
	at org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl.set(OneToOneAssociationImpl.java:162)
	at org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.handleSetterMethodOnProperty(DomainObjectInvocationHandler.java:363)
	at org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:190)
	at org.apache.isis.core.wrapper.internal.InvocationHandlerMethodInterceptor.intercept(InvocationHandlerMethodInterceptor.java:37)
	at com.xms.framework.architecture.domain.model.Relationship$$EnhancerByCGLIB$$1793ea43.setType(<generated>)
	at com.xms.framework.architecture.domain.model.Relationships.defineRelationship(Relationships.java:80)
	at com.xms.framework.architecture.domain.model.Asset.addDirectlyImpactedAsset(Asset.java:593)
	at com.xms.framework.architecture.domain.model.Asset.insertOrUpdateRelationships(Asset.java:853)
	at com.xms.framework.architecture.domain.model.Asset.updated(Asset.java:837)
	at sun.reflect.GeneratedMethodAccessor205.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.isis.core.commons.lang.MethodExtensions.invoke(MethodExtensions.java:50)
	at org.apache.isis.core.commons.lang.MethodExtensions.invoke(MethodExtensions.java:45)
	at org.apache.isis.core.commons.lang.MethodUtil.invoke(MethodUtil.java:35)
	at org.apache.isis.core.metamodel.adapter.util.AdapterInvokeUtils.invokeAll(AdapterInvokeUtils.java:40)
	at org.apache.isis.core.progmodel.facets.object.callbacks.update.UpdatedCallbackFacetViaMethod.invoke(UpdatedCallbackFacetViaMethod.java:63)
	at org.apache.isis.core.metamodel.facets.object.callbacks.CallbackUtils.callCallback(CallbackUtils.java:35)
	... 85 more



> IsisTransaction should do a "precommit" for pending updates to applib services, prior to commiting the underlying (JDO) transaction.
> ------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: ISIS-769
>                 URL: https://issues.apache.org/jira/browse/ISIS-769
>             Project: Isis
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: core-1.4.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>             Fix For: core-1.4.2
>
>
> As discussed on the mailing list, see http://isis.markmail.org/thread/anln67ohbvkx4r4s.



--
This message was sent by Atlassian JIRA
(v6.2#6252)