1 2 Previous Next 21 Replies Latest reply on Nov 8, 2011 10:09 PM by dondragon2 Go to original post
      • 15. Re: MapBasedPersistenceTest issue
        swiderski.maciej

        Donald, could you provide us with simple test case and process so we could give it a try why it does not work?

        • 16. Re: MapBasedPersistenceTest issue
          dondragon2

          Marceij,

           

          I have attached a test flow with the Handler that I am using. This is executed in a multithreaded environment using:

           

          ksession.getWorkItemManager().registerWorkItemHandler(

                          "Service Task", new ProcessExecutionHandler());

           

          Let me know if I need to provide something else.

          • 17. Re: MapBasedPersistenceTest issue
            swiderski.maciej

            Donald, just ran your process and timer is fired every time I test it. I used default setup of session, so maybe there is something wrong with the environment you have...

            How do you run your process, you said that it is multithreaded environment?

            • 18. Re: MapBasedPersistenceTest issue
              dondragon2

              basically, or every request that comes in the attached class is executed. I am using a cached thread pool, so any amount of request that comes a thread is created. but this eception is not thrown all the time. I only see it on some requests and it is random. It seems as if it occurs when trying to complete the last process.

              • 19. Re: MapBasedPersistenceTest issue
                swiderski.maciej

                Donald, looking bit more on the error that is thrown, it looks like there are two possible causes of it:

                • ScheduledThreadPoolExecutor is shutdown
                • ScheduledThreadPoolExecutor has exhausted pool of threads so it can except any new jobs

                Personally I consider second option as more likely to happen. If I recall correctly the size of thread pool is by default set to 1 and such executor is bound to the session so if there are more than one job to be scheduled at the same time it could cause to reject exception being raised.

                 

                Does you controller ensuring that each request will have its own dedicated session and only one process instance will be using it? Just wondering if that could help to narrow down the scope of investigation...

                 

                HTH

                • 20. Re: MapBasedPersistenceTest issue
                  dondragon2

                  Maciej, Thanks for the insight. Below is how I am loading the controller.

                   

                  Bean is created in the Spring context:

                   

                  <bean name="executionController" class="com.test.ExecutionController" init-method="create" />

                   

                  then I get the bean from the Spring context in each thread using:

                   

                  (ExecutionController) context.getBean("executionController");

                   

                  May be I should create a new controller for each thread? I will try this  an see if that works.

                  • 21. Re: MapBasedPersistenceTest issue
                    dondragon2

                    Maciej,

                     

                    Even after creating a new executionController instead of using spring bean i am getting the error. See the stack trace below. It seems to happen when creating the interrupt event for the timer. take in consideration that there is a call to a parallel gateway that goes to both timer and signal event processes.

                     

                    Also based on some research I found SessionConfiguration. Can I use this to chnage the amount of threads in the JDKTimerService. I think it is set to 3 at the moment. would this help?

                     

                    java.util.concurrent.RejectedExecutionException

                              at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(Unknown Source)

                              at java.util.concurrent.ThreadPoolExecutor.reject(Unknown Source)

                              at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(Unknown Source)

                              at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(Unknown Source)

                              at org.drools.time.impl.JDKTimerService.schedule(JDKTimerService.java:115)

                              at org.drools.time.impl.JDKTimerService.scheduleJob(JDKTimerService.java:80)

                              at org.jbpm.process.instance.timer.TimerManager.registerTimer(TimerManager.java:61)

                              at org.jbpm.workflow.instance.node.TimerNodeInstance.internalTrigger(TimerNodeInstance.java:67)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)

                              at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:61)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)

                              at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)

                              at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:162)

                              at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:143)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:239)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:301)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:277)

                              at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:333)

                              at org.drools.process.instance.impl.DefaultWorkItemManager.completeWorkItem(DefaultWorkItemManager.java:116)

                              at com.test.ProcessExecutionHandler.executeWorkItem(ProcessExecutionHandler.java:76)

                              at org.drools.process.instance.impl.DefaultWorkItemManager.internalExecuteWorkItem(DefaultWorkItemManager.java:70)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:105)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)

                              at org.jbpm.workflow.instance.node.JoinInstance.triggerCompleted(JoinInstance.java:152)

                              at org.jbpm.workflow.instance.node.JoinInstance.internalTrigger(JoinInstance.java:52)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)

                              at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)

                              at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:162)

                              at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:143)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:239)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:301)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:277)

                              at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:333)

                              at org.drools.process.instance.impl.DefaultWorkItemManager.completeWorkItem(DefaultWorkItemManager.java:116)

                              at com.test.ProcessExecutionHandler.executeWorkItem(ProcessExecutionHandler.java:76)

                              at org.drools.process.instance.impl.DefaultWorkItemManager.internalExecuteWorkItem(DefaultWorkItemManager.java:70)

                              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:105)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)

                              at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:100)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)

                              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)

                              at org.jbpm.workflow.instance.node.EventNodeInstance.triggerCompleted(EventNodeInstance.java:66)

                              at org.jbpm.workflow.instance.node.EventNodeInstance.signalEvent(EventNodeInstance.java:50)

                              at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:353)

                              at org.jbpm.process.instance.event.DefaultSignalManager.internalSignalEvent(DefaultSignalManager.java:80)

                              at org.jbpm.process.instance.event.DefaultSignalManager$SignalAction.execute(DefaultSignalManager.java:175)

                              at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:994)

                              at org.drools.impl.StatefulKnowledgeSessionImpl.executeQueuedActions(StatefulKnowledgeSessionImpl.java:845)

                              at org.jbpm.process.instance.event.DefaultSignalManager.signalEvent(DefaultSignalManager.java:72)

                              at org.jbpm.process.instance.ProcessRuntimeImpl.signalEvent(ProcessRuntimeImpl.java:355)

                              at org.drools.impl.StatefulKnowledgeSessionImpl.signalEvent(StatefulKnowledgeSessionImpl.java:321)

                    1 2 Previous Next