[JBoss JIRA] Created: (JBPM-2818) Leaving node in super-state throws org.jbpm.JbpmException: cannot leave Node without leaving transition
by Toshiya Kobayashi (JIRA)
Leaving node in super-state throws org.jbpm.JbpmException: cannot leave Node without leaving transition
-------------------------------------------------------------------------------------------------------
Key: JBPM-2818
URL: https://jira.jboss.org/jira/browse/JBPM-2818
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Runtime Engine
Affects Versions: jBPM 3.2.8
Reporter: Toshiya Kobayashi
Leaving <node> in <super-state> throws
org.jbpm.JbpmException: cannot leave Node(node2) without leaving transition
when I execute process definition like:
================
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="id41">
<start-state name="start">
<transition to="super-state1"></transition>
</start-state>
<super-state name="super-state1">
<transition to="end"></transition>
<node name="node1">
<transition to="node2"></transition>
</node>
<node name="node2">
</node>
</super-state>
<end-state name="end">
</end-state>
</process-definition>
=================
Note: <node name="node2"> doesn't have its own transition. but I expect super-state's transition is available then.
The process definition works if you test via ProcessDefinition.parseXmlResource(String xmlResource) without DB/Hibernate (like org.jbpm.graph.exe.SuperStateActionExecutionTest.testNestedSuperStateLeaveViaSuperStateTransition()).
What's the difference?
org.jbpm.graph.def.Node:
=========
public Transition getDefaultLeavingTransition() {
Transition defaultTransition = null;
if (leavingTransitions != null) {
// Select the first unconditional transition
for (Iterator i = leavingTransitions.iterator(); i.hasNext();) {
Transition auxTransition = (Transition) i.next();
if (auxTransition.getCondition() == null) {
defaultTransition = auxTransition;
break;
}
}
}
else if (superState != null) {
defaultTransition = superState.getDefaultLeavingTransition();
}
return defaultTransition;
}
=========
The logic of getDefaultLeavingTransition() depends on whether leavingTransitions is null or not. But in case that hibernate kicks lazy initialization, leavingTransitions will be a zero sized collection, not null.
BTW, I think the concept that super-state's transition can be chosen from nodes inside is better to be documented.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2792) Data manipulation with HQL / SQL nodes
by Peter Horvath (JIRA)
Data manipulation with HQL / SQL nodes
--------------------------------------
Key: JBPM-2792
URL: https://jira.jboss.org/jira/browse/JBPM-2792
Project: jBPM
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Affects Versions: jBPM 4.x
Reporter: Peter Horvath
Currently HQL / SQL nodes only allow you to run queries. It would be great if it was possible to run data manipulation operations (INSERT / UPDATE / DELETE) as well.
It should be quite easy to implement this by adding a new possible flag to the hql / sql node and calling org.hibernate.Query.executeUpdate() from org.jbpm.jpdl.internal.activity.HqlActivity.perform(OpenExecution) method:
if(isUpdate) { // isUpdate: this a new flag that indicates that this is a data manipulation operation
// execute update and store the number of entities / rows affected (inserted, updated or deleted) by this operation into the result variable
result = q.executeUpdate();
} else { if (isResultUnique) {
result = q.uniqueResult();
} else {
result = q.list();
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2605) DbPersistenceServiceFactory should not close SessionFactory if it didn't opened it
by Stefano Travelli (JIRA)
DbPersistenceServiceFactory should not close SessionFactory if it didn't opened it
----------------------------------------------------------------------------------
Key: JBPM-2605
URL: https://jira.jboss.org/jira/browse/JBPM-2605
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: jBPM 3.2.7
Environment: JBoss 4.2.3, Seam 2.1
Reporter: Stefano Travelli
I configure JBpm with Seam 2.1 so that the JBpm SessionFactory is the same of the underlying SessionFactory used by the EntityManagerFactory in JPA.
In order to do so I include JBpm hibernate.cfg.xml in the persistence-unit. Then I declare the JNDI name in jbpm.cfg.xml:
<persistence-unit name="getin">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/getinDS</jta-data-source>
<propertyies>
<!--- ... --->
<property name="hibernate.session_factory_name" value="java:/getinSessionFactory"/>
<property name="hibernate.ejb.cfgfile" value="jbpm.hibernate.cfg.xml"/>
</properties>
</persistence-unit>
<jbpm-configuration>
<jbpm-context>
<service name="persistence">
<factory>
<bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
<field name="isTransactionEnabled">
<false/>
</field>
<field name="sessionFactoryJndiName">
<string value="java:/getinSessionFactory"/>
</field>
</bean>
</factory>
</service>
<service name="tx" factory="org.jbpm.tx.TxServiceFactory"/>
<service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory"/>
<service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory"/>
<service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory"/>
<service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"/>
</jbpm-context>
</jbpm-configuration>
It works fine except that during test execution in the Seam enviroment JBpm context is opened and closed several times while the persistence unit stays.
However, as a JBpm context closes, DbPersistenceServiceFactory also closes the SessionFactory invalidating the EntityManagerFactory.
When DbPersistenceServiceFactory doesn't create the SessionFactory taking it from JNDI, it shouldn't close it as this should be a responsibility of the component who registered it in JNDI in first place.
The patch is simple:
public void close()
{
if (sessionFactory != null && sessionFactoryJndiName == null)
{
log.debug("closing hibernate session factory");
sessionFactory.close();
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2795) Cannot delete or update a parent row: a foreign key constraint fails (`jbpmdb/jbpm4_execution`, CONSTRAINT `FK_EXEC_SUPEREXEC` FOREIGN KEY (`SUPEREXEC_`) REFERENCES `jbpm4_execution` (`DBID_`))
by scarletake b. c. (JIRA)
Cannot delete or update a parent row: a foreign key constraint fails (`jbpmdb/jbpm4_execution`, CONSTRAINT `FK_EXEC_SUPEREXEC` FOREIGN KEY (`SUPEREXEC_`) REFERENCES `jbpm4_execution` (`DBID_`))
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: JBPM-2795
URL: https://jira.jboss.org/jira/browse/JBPM-2795
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Runtime Engine
Affects Versions: jBPM 4.3
Environment: windows xp, jdk1.6, mysql5.1
Reporter: scarletake b. c.
when a case like follow:
a process and it include three sub-processes(fork), when any one of sub-processes reject, the main process will go to End.
it will hit exception:Cannot delete or update a parent row: a foreign key constraint fails
like:
11:26:11,727 ERROR [org.hibernate.util.JDBCExceptionReporter] Cannot delete or update a parent row: a foreign key constraint fails (`jbpmdb/jbpm4_execution`, CONSTRAINT `FK_EXEC_SUPEREXEC` FOREIGN KEY (`SUPEREXEC_`) REFERENCES `jbpm4_execution` (`DBID_`))
11:26:11,727 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] Could not synchronize database state with session
it occur due to hibernate's behavior.
the code:org.jbpm.pvm.internal.model.ExecutionImpl
the method:end|(String state)
move "end all child" to bottom
but i ain't sure it really been solved.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 5 months
[JBoss JIRA] Created: (JBPM-2845) Error changing value of Lob variable at jBPM 4.x
by Per Christian Henden (JIRA)
Error changing value of Lob variable at jBPM 4.x
------------------------------------------------
Key: JBPM-2845
URL: https://jira.jboss.org/jira/browse/JBPM-2845
Project: jBPM
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Reporter: Per Christian Henden
Fix For: jBPM 4.x
Attachments: lobvar.diff
First reported by Paweł PoseŠon the community forums. See http://community.jboss.org/message/537481
I've attached a patch against jbpm-svn (r6256):
Original report:
I've noticed frequently such error during changing existing Lob varibale:
Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [org.jbpm.pvm.internal.lob.Lob#110051]
The source of this problem is at BlobVariable:
public void setObject(Object value) {
if (this.lob!=null) {
DbSession dbSession = EnvironmentImpl.getFromCurrent(DbSession.class, false);
if (dbSession!=null) {
dbSession.delete(todel);
}
}
this.lob = new Lob((byte[])value, true);
}
The solution of this problem:
public void setObject(Object value) {
if (this.lob!=null) {
DbSession dbSession = EnvironmentImpl.getFromCurrent(DbSession.class, false);
if (dbSession!=null) {
Lob todel = this.lob;
this.lob = null;
dbSession.delete(todel);
}
}
this.lob = new Lob((byte[])value, true);
}
Hope samobody from jBPM team correct this bug.
Below whole stacktrace:
org.jbpm.api.JbpmException: couldn't acquire block of ids
at org.jbpm.pvm.internal.id.DatabaseDbidGenerator.getNextId(DatabaseDbidGenerator.java:65)
at org.jbpm.pvm.internal.lob.Lob.<init>(Lob.java:81)
at org.jbpm.pvm.internal.type.variable.BlobVariable.setObject(BlobVariable.java:54)
at org.jbpm.pvm.internal.type.Variable.setValue(Variable.java:91)
at org.jbpm.pvm.internal.model.ScopeInstanceImpl.setVariable(ScopeInstanceImpl.java:171)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.pvm.internal.model.ExecutionImpl$$EnhancerByCGLIB$$8995f99.setVariable(<generated>)
at org.jbpm.pvm.internal.model.ScopeInstanceImpl.setVariable(ScopeInstanceImpl.java:177)
at org.jbpm.pvm.internal.model.ScopeInstanceImpl.setVariables(ScopeInstanceImpl.java:184)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.pvm.internal.model.ExecutionImpl$$EnhancerByCGLIB$$8995f99.setVariables(<generated>)
at org.jbpm.pvm.internal.cmd.SetExecutionVariablesCmd.execute(SetExecutionVariablesCmd.java:47)
at org.jbpm.pvm.internal.cmd.SetExecutionVariablesCmd.execute(SetExecutionVariablesCmd.java:1)
at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
at org.jbpm.pvm.internal.spring.CommandTransactionCallback.doInTransaction(CommandTransactionCallback.java:50)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at org.jbpm.pvm.internal.tx.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:77)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
at org.jbpm.pvm.internal.svc.ExecutionServiceImpl.setVariable(ExecutionServiceImpl.java:145)
at pl.ufg.zsi.bpm.service.BpmService.commitTask(BpmService.java:165)
at pl.ufg.zsi.bpm.service.BpmService$$FastClassByCGLIB$$5c2263c6.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at pl.ufg.zsi.bpm.service.BpmService$$EnhancerByCGLIB$$e88e1679.commitTask(<generated>)
at pl.ufg.zsi.bpm.task.controller.BaseTaskFormController.onSubmit(BaseTaskFormController.java:145)
at pl.ufg.zsi.common.controller.BaseFormController.onSubmit(BaseFormController.java:571)
at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267)
at org.springframework.web.servlet.mvc.CancellableFormController.processFormSubmission(CancellableFormController.java:140)
at pl.ufg.zsi.common.controller.BaseFormController.processFormSubmission(BaseFormController.java:275)
at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:265)
at pl.ufg.zsi.common.controller.BaseFormController.handleRequestInternal(BaseFormController.java:108)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:240)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:258)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1174)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:901)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.concurrent.ConcurrentSessionFilter.doFilterHttp(ConcurrentSessionFilter.java:99)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [org.jbpm.pvm.internal.lob.Lob#110051]
at org.hibernate.impl.SessionImpl.forceFlush(SessionImpl.java:1014)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:165)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:122)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35)
at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:811)
at org.jbpm.pvm.internal.id.AcquireDbidBlockCmd.execute(AcquireDbidBlockCmd.java:27)
at org.jbpm.pvm.internal.id.AcquireDbidBlockCmd.execute(AcquireDbidBlockCmd.java:1)
at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
at org.jbpm.pvm.internal.spring.CommandTransactionCallback.doInTransaction(CommandTransactionCallback.java:50)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at org.jbpm.pvm.internal.tx.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:77)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInExistingEnvironment(EnvironmentInterceptor.java:47)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:42)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
at org.jbpm.pvm.internal.id.DatabaseDbidGenerator.acquireDbidBlock(DatabaseDbidGenerator.java:76)
at org.jbpm.pvm.internal.id.DatabaseDbidGenerator.getNextId(DatabaseDbidGenerator.java:63)
... 122 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 5 months
[JBoss JIRA] Created: (JBPM-2630) JbpmConfiguration.popJbpmConfiguration() doesn't implement a pop operation
by Toshiya Kobayashi (JIRA)
JbpmConfiguration.popJbpmConfiguration() doesn't implement a pop operation
--------------------------------------------------------------------------
Key: JBPM-2630
URL: https://jira.jboss.org/jira/browse/JBPM-2630
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Runtime Engine
Affects Versions: jBPM 3.2.8, jBPM 3.2.7
Reporter: Toshiya Kobayashi
org.jbpm.JbpmConfiguration.java:
=====
synchronized void popJbpmConfiguration() {
getJbpmConfigurationStack().remove(this);
}
=====
List.remove() can break ordering in the jbpmConfigurationStack, then eventually getCurrentJbpmConfiguration() will return an wrong jbpmConfiguration instance.
(List.remove(java.lang.Object) behaves like FIFO if there are multiple elements which refer the same object)
On the other hand, popJbpmContext() pops properly.
=====
void popJbpmContext(JbpmContext jbpmContext) {
List stack = getJbpmContextStack();
int size = stack.size();
if (size == 0) {
...
}
else if (jbpmContext != stack.remove(size - 1)) {
...
}
}
=====
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 5 months