8 Replies Latest reply on Mar 8, 2013 4:18 AM by zackmc

    Error changing value of Lob variable at jBPM 4.x

      I'v 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

        • 1. Re: Error changing value of Lob variable at jBPM 4.x
          jbarrez

          Which database are you using?

          When does this error happen? Do you have a test case?

          • 2. Re: Error changing value of Lob variable at jBPM 4.x

            Oracle 10g

             

            You need some Lob variables, for instance save some Java serialized object in jBPM variable and then you have to override this variable for example in next state in the process. This solution I'v suggested fixes the problem.

            • 3. Re: Error changing value of Lob variable at jBPM 4.x
              jbarrez

              But the exception you're getting is thrown when an id block is acquired.

               

              This is strange, because this is definitely tested in our QA. Can you give more specifics on when this error occurs?

              • 4. Re: Error changing value of Lob variable at jBPM 4.x
                kukeltje
                I've seen multiple posts where 'issues' regarding the id are mentioned and some (all?) in relation to having multiple jBPM instances running against the same db. Could this be the case here to?
                • 5. Re: Error changing value of Lob variable at jBPM 4.x
                  perchrh
                  I've experienced this problem as well, using a dedicated database schema where my (one) jbpm instance is the only one using that schema. I'm also using Oracle 10g.  In my case, this error occurs when entering a sub process and copying a variable from the root process to the sub process.  The jpdl fragment below illustrates this, the problem occurs when taking the transition to "my subprocess".
                      <state name="my activity">
                          <transition name="to my subprocess" to="my subprocess"/>
                      </state>
                  
                      <sub-process name="my subprocess" sub-process-key="ASubProcessKey">
                          <parameter-in subvar="Smid" var="Smid"/>
                          <transition name="to cancel" to="canceled"/>
                          <transition name="to accept" to="accepted"/>
                      </sub-process>
                  
                  • 6. Re: Error changing value of Lob variable at jBPM 4.x
                    misieq

                    Hello,

                     

                    is there any progress on this issue? I confirm that there are problems while using lob variables with Oracle. I encountered similar exceptions while manipulating my java object based variables in jBPM 4.3.

                     

                    Thank's in advance for all info.

                    Michal

                    • 7. Re: Error changing value of Lob variable at jBPM 4.x
                      perchrh

                      I've just reported it as a bug, https://jira.jboss.org/jira/browse/JBPM-2845

                      • 8. Re: Error changing value of Lob variable at jBPM 4.x
                        zackmc

                        Same output appears in my project (jbpm 4.4) only when I change the configuration to use the current spring transactions:

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                        <

                        process-engine-context>

                         

                         

                         

                        <job-executor threads="1" idle="15000" idle-max="60000" lock-millis="3600000" />

                         

                        <command-service name="newTxRequiredCommandService">

                         

                        <retry-interceptor />

                         

                        <environment-interceptor policy="requires" />

                         

                        <spring-transaction-interceptor policy="requires" />

                         

                        </command-service>

                         

                         

                        <command-service name="txRequiredCommandService">

                         

                        <retry-interceptor />

                         

                        <environment-interceptor />

                         

                        <spring-transaction-interceptor />

                         

                        </command-service>

                         

                         

                         

                         

                        </process-engine-context>

                         

                         

                        <transaction-context>

                         

                        <transaction type="spring" />

                         

                        <hibernate-session current="true" />

                         

                        </transaction-context>

                         

                         

                        When I put 'requiresNew' in policy attribute it runs. But we need the jbpm tables do rollback when an exception arise in the step. I get the error in a signal method, when I set a LOB variable.

                         

                        ¿Can you provide any workaround to avoid this bug?

                         

                        Thank you.