Re: [rules-users] Starting engine using fireUntilHalt and inserting no facts results in 50% CPU usage
Unfortunately no, I just had a look how it was implemented (like http://tutorials.jenkov.com/java-concurrency/thread-signaling.html#missedsig nals) - missed signals and noticed that it somehow didn't work as intended. But no idea how to directly correct it, sorry. -Original Message- From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Edson Tirelli Sent: Montag, 25. Oktober 2010 21:30 To: Rules Users List Subject: Re: [rules-users] Starting engine using fireUntilHalt and inserting no facts results in 50% CPU usage Do you have a solution/patch for it? Edson 2010/10/25 mardo ma...@abicola.de: Luckily just stumbled upon this mail... You can take a look at http://drools-java-rules-engine.46999.n3.nabble.com/fireUntilHalt-and-OSGi-C PU-load-td1022352.html where I already provided a minimal example (don't know if it covers all cases) and tracked it down to missedNotifyAll in DefaultAgenda cheers -Original Message- From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Edson Tirelli Sent: Montag, 25. Oktober 2010 21:17 To: Rules Users List Subject: Re: [rules-users] Starting engine using fireUntilHalt and inserting no facts results in 50% CPU usage This is clearly a regression as Drools should be not be using busy waits in fireUntilHalt(). It should use monitors and locks as it was doing before. Can anyone open a JIRA? also, if anyone would be willing to take investigate and fix this one, it would really help. Otherwise, I will add it to my queue. Thanks, Edson 2010/10/25 Norman C rent_my_t...@yahoo.com: Note that the 100% CPU issue with fireUntiHalt is only with the 5.1 version of Drools. In 5.0.x, CPU is close to 0% when there are no rules to fire. I saw this when I was testing upgrading to 5.1. Norman - Original Message From: jschmied nab...@juergenschmied.de To: rules-users@lists.jboss.org Sent: Sun, October 24, 2010 4:06:02 AM Subject: Re: [rules-users] Starting engine using fireUntilHalt and inserting no facts results in 50% CPU usage Hi! fireUntilHalt uses one processor with 100%. You have a dualcore, so it's 50%. It's by design like this. You can: - Call fireAllRules after every insert if you have no ruleflow. - Use fireAllRules in a loop with a small sleep and check for the end of the ruleflow in the loop: while (prc.getState() == ProcessInstance.STATE_ACTIVE) { Threads.sleep(20); ksession.fireAllRules(); } with both methods you get a low cpu load. bye juergen -- View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Starting-engine-using-fi reUntilHalt-and-inserting-no-facts-results-in-50-CPU-usage-tp1760370p1761821 .html Sent from the Drools - User mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Edson Tirelli JBoss Drools Core Development JBoss by Red Hat @ www.jboss.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Edson Tirelli JBoss Drools Core Development JBoss by Red Hat @ www.jboss.com ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Unit test for Ad-Hoc Task / Ad-Hoc Subprocess
Hi there (-Kris), for the unit test testAdHocSubProcess() in trunk, shouldn't there be added at the end: assertProcessInstanceCompleted(processInstance.getId(), ksession); , which would fail. Either this is an error or I haven't properly understood a concept of the ad-hoc subprocess. Can you give me a hint? Thanks Cheers Markus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] CEP Demo Code
Hi, is the code resp. rules and flow definitions for the CEP examples posted by Krisv (http://blog.athico.com/2009/08/drools-flow-videos.html; e.g. http://downloads.jboss.com/drools/videos/OrderExample-CEP.swf) available somewhre? I can't find it in the examples package. thanks and best, Markus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] BaseMinaClient - Session Termination
Hello, I have a simple RuleFlow containing a Human Task, which I start using the following lines of code: WSHumanTaskHandler wsh = new WSHumanTaskHandler(); ksession.getWorkItemManager().registerWorkItemHandler(Human Task, wsh); ksession.startProcess(com.sample.ruleflow); When the workflow has properly ended however, there remain threads (e.g. NioProcessorNioSocketConnector) within the VM. I have tracked this down to BaseMinaClient: public void disconnect() { if ( session!= null session.isConnected() ) { session.close(); session.getCloseFuture().join(); } } Expllicitly calling wsh.dispose(), session.isConnected() (from IoSession) always yields true even when the workflow instance has terminated already and there are no more active human tasks available. Is this an intended behaviour? Thanks and best Markus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Test Failure: RioRemoteTest
I am executing mvn -Ddocumentation -Declipse clean install on the current sources in SVN, with the following reoccurring result: Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.324 sec Results : Tests in error: testFireAllRules(org.drools.vsm.ServiceManagerRioRemoteTest) testExecute(org.drools.vsm.ServiceManagerRioRemoteTest) testNamedService(org.drools.vsm.ServiceManagerRioRemoteTest) testVsmPipeline(org.drools.vsm.ServiceManagerRioRemoteTest) [INFO] [ERROR] BUILD FAILURE [INFO] [INFO] There are test failures. Please refer to C:\droolsinst\Drollig\drools-vsm\target\surefire-reports for the individual test results. Looking in surefire reports at the concerned location, I have java.lang.NullPointerException at org.drools.vsm.ServiceManagerRioRemoteTest.setUp(ServiceManagerRioRemoteTest .java:21) Which in turn corresponds to the LoC GenericMessageHandler handler = ((SessionServiceImpl)rioServer.getSessionService()).getGenericMessageHandler (); Do you have any suggestions on how to prevent this error? Thanks alot, Markus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Error trying to build Drools 5.0 from source
*(This should be also valid for 5.1, I just want to keep the relation to previous postings on this issue)* In case anyone encounters similar obstacles: I have used newer versions of ANT and MAVEN for building Drools 5.1 from trunk. Using the exact versions as shown below did not yield the cyclic reference / stack overflow type of error. Additionally I ran into a number of test problems during build related to my locale (Germany) and date formatting. As an intermediary result, the following settings helped preventing some (but not all) build problems: set path=C:\Program Files\Java\jdk1.5.0_08\bin;C:\droolsinst\apache-maven-2.0.9-bin\bin;C:\drool sinst\apache-ant-1.7.0-bin\bin set MAVEN_OPTS=-XX:MaxPermSize=256m -Xmx1024m -Duser.country=EN -Duser.language=en set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_08 set MAVEN_HOME=C:\droolsinst\apache-maven-2.0.9-bin\bin set ANT_HOME=C:\droolsinst\apache-ant-1.7.0-bin\bin set ANT_OPTS=-Duser.country=EN -Duser.language=en Best Markus _ Von: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] Im Auftrag von mardo Gesendet: Dienstag, 3. November 2009 20:15 An: rules-users@lists.jboss.org Betreff: Re: [rules-users] Error trying to build Drools 5.0 from source Hi, similar as http://lists.jboss.org/pipermail/rules-users/2009-October/010742.html http://lists.jboss.org/pipermail/rules-users/2009-October/010742.html, I have Maven build problems for Drools 5.1 - The projects in the reactor contain a cyclic reference . when including -Ddocumentation in the Maven parameters - java.lang.StackOverflowError when excluding -Ddocumentation I tried both setting Java (home and path) to jdk1.5.0_19 and jdk1.6.0_10 My MAVEN_OPTS are set to -XX:MaxPermSize=256m -Xmx1224m -Xss20m Do you have any suggestions? Thanks and best Markus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Blocking Call to startProcess()
Hi there, I just began exploring the capabilities of drools and also considered its applicability for typical EAI scenarios. It really may be a beginner's question. But I took the simple example workflow and inserted a Thread.sleep() for its task action. I experienced the blocking startProcess() as discussed here: http://stackoverflow.com/questions/1326718/how-to-start-multiple-processes -in-drools-flow So did I miss something or how would it be possible to get the internal ID of the WF instance right after starting it before its completion to be able to query the engine proactively during runtime? I also see that this relates to http://www.mail-archive.com/rules-users@lists.jboss.org/msg05828.html, but I also don't see a solution here. Thanks and Best Markus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Blocking Call to startProcess()
Kris, thanks for the quick reply. It makes perfect sense what you're saying about the implementation issues on the task level. Did I get it right that e.g. a specific task for (asynchronous) web service invocation would be implemented very similar to the WorkItemHandler http://www.mail-archive.com/rules-users@lists.jboss.org/msg09450.html? I didn't however understand yet why startProcess() has to block at all. Naively, this would rather be the semantics of a method like executeProcess(). From my current understanding, even when launching concurrent instances from different threads using startProcess(), the required return value (ProcessInstance) I was aiming at is obtained earliest at the first wait state or termination of the process, right? Thanks so far! Best Markus -Ursprüngliche Nachricht- Von: Kris Verlaenen [mailto:kris.verlae...@cs.kuleuven.be] Gesendet: Dienstag, 3. November 2009 16:11 An: Rules Users List; mardo Betreff: Re: [rules-users] Blocking Call to startProcess() Markus, You should not block the execution thread using long-running tasks (like sleep()) in actions, as this will actively lock the resources of the engine. You should use wait states, event nodes and/or work item nodes if you want to perform long-running tasks. Even when implementing a work item handler, the work performed there should either be quick and synchronous or performed asynchronously (acting as a wait state). As a result, startProcess() will block only until the process has reached a wait state, but this should almost be instantaneously (and if you don't have any asynchronous behaviour, this could already be the completion of your process). This allows concurrent execution of process instances if they contain asynchronous tasks (which is usually sufficient). You could also invoke the engine non-blocking (in a separate thread) if you want true concurrency. Kris Quoting mardo ma...@abicola.de: Hi there, I just began exploring the capabilities of drools and also considered its applicability for typical EAI scenarios. It really may be a beginner's question. But I took the simple example workflow and inserted a Thread.sleep() for its task action. I experienced the blocking startProcess() as discussed here: http://stackoverflow.com/questions/1326718/how-to-start-multiple-processes -in-drools-flow So did I miss something or how would it be possible to get the internal ID of the WF instance right after starting it before its completion to be able to query the engine proactively during runtime? I also see that this relates to http://www.mail-archive.com/rules-users@lists.jboss.org/msg05828.html, but I also don't see a solution here. Thanks and Best Markus Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Error trying to build Drools 5.0 from source
Hi, similar as http://lists.jboss.org/pipermail/rules-users/2009-October/010742.html, I have Maven build problems for Drools 5.1 - The projects in the reactor contain a cyclic reference . when including -Ddocumentation in the Maven parameters - java.lang.StackOverflowError when excluding -Ddocumentation I tried both setting Java (home and path) to jdk1.5.0_19 and jdk1.6.0_10 My MAVEN_OPTS are set to -XX:MaxPermSize=256m -Xmx1224m -Xss20m Do you have any suggestions? Thanks and best Markus ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users