Bug 847044
Summary: | ClassNotFoundException: org.drools.event.BeforeRuleBaseLockedEvent when stopping EAP 6.0 | ||||||
---|---|---|---|---|---|---|---|
Product: | [JBoss] JBoss Enterprise BRMS Platform 5 | Reporter: | Jiri Svitak <jsvitak> | ||||
Component: | jBPM 5 | Assignee: | Kris Verlaenen <kverlaen> | ||||
Status: | VERIFIED --- | QA Contact: | Marek Baluch <mbaluch> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | BRMS 5.3.0.GA | CC: | mbaluch, mproctor | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: |
Incorrectly disposing of the knowledge agent when shutting down the server caused an exception to be logged. There was no impact to the application, however, the exception could cause confusion. To resolve this issue, a listener definition was added to the business central server war, ensuring the correct disposal of the knowledge agent. The exception no longer occurs.
|
Story Points: | --- | ||||
Clone Of: | Environment: | ||||||
Last Closed: | Type: | Bug | |||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
RuleBaseEventSupport does "new BeforeRuleBaseLockedEvent()" Both are in the same jar (drools-core) and in the same package (org.drools.event). The ClassNotFoundException does not make sense. Can not reproduce. I tried guvnor-5.3.4-SNAPSHOT-jboss-as-7.0.War on jboss-eap-6.0, but the server shutdown went fine: 15:44:18,650 INFO [org.apache.coyote.http11.Http11Protocol] Pausing Coyote HTTP/1.1 on http-/127.0.0.1:8080 15:44:18,650 INFO [org.apache.coyote.http11.Http11Protocol] Stopping Coyote HTTP/1.1 on http-/127.0.0.1:8080 15:44:18,678 INFO [stdout] Removing all listeners... 15:44:18,678 INFO [stdout] Listeners removed... 15:44:20,419 INFO [com.arjuna.ats.jbossatx] ARJUNA032018: Destroying TransactionManagerService 15:44:20,420 INFO [com.arjuna.ats.jbossatx] ARJUNA032014: Stopping transaction recovery manager 15:44:20,590 INFO [org.jboss.as.server.deployment] JBAS015877: Stopped deployment guvnor-5.3.4-SNAPSHOT-jboss-as-7.0.war in 1959ms 15:44:20,591 INFO [org.jboss.as] JBAS015950: JBoss EAP 6.0.0.GA (AS 7.1.2.Final-redhat-1) stopped in 1942ms The stacktrace seems to implicate there's a changeset involved too. Furthermore, it happens for "business-central-server.war", what is that war? Please provide a reproduce recipe. Even better would be a reproducing arquillian test. Once we can reproduce, we need too look into this jbpm class: https://github.com/droolsjbpm/jbpm/blob/master/jbpm-gwt/jbpm-gwt-core/src/main/java/org/jbpm/integration/console/StatefulKnowledgeSessionUtil.java#L92 Several problems: 1) That's a class never calls kagent.dispose(); 2) That class overwrite Object.finalize() (= evil). But that is never called as no instance is ever created of that class (all use is static). 3) Therefore, StatefulKnowledgeSessionUtil.dispose() is never called. This pull request has changes that might fix the problem (as kagent.dispose() should be correctly be called): https://github.com/droolsjbpm/jbpm/pull/121 However, after building the jbpm-console from source (with or without these changes), I was unable to deploy that to EAP 6 or JBoss AS 7, due to the high reconfiguration required to the server. The installer and the wiki doc didn't help. Macies (a jbpm developer) is able to run the jbpm-console locally, he's going to try the changes. Marco will take over the rest of the issue. Sometimes I experience also this exception when stopping EAP 6.0 (usually after several other exceptions regarding persistence configuration or something else): 16:26:05,357 INFO [org.apache.coyote.http11.Http11Protocol] Pausing Coyote HTTP/1.1 on http-/127.0.0.1:8080 16:26:05,357 INFO [org.apache.coyote.http11.Http11Protocol] Stopping Coyote HTTP/1.1 on http-/127.0.0.1:8080 16:26:05,362 INFO [org.jboss.as] JBAS015950: JBoss EAP 6.0.0.GA (AS 7.1.2.Final-redhat-1) stopped in 14977ms 16:26:05,364 ERROR [stderr] Exception in thread "Thread-78" java.lang.NoClassDefFoundError: org/drools/event/BeforeProcessRemovedEvent 16:26:05,364 ERROR [stderr] at org.drools.event.RuleBaseEventSupport.fireBeforeProcessRemoved(RuleBaseEventSupport.java:237) 16:26:05,364 ERROR [stderr] at org.drools.common.AbstractRuleBase.removeProcess(AbstractRuleBase.java:1065) 16:26:05,365 ERROR [stderr] at org.drools.impl.KnowledgeBaseImpl.removeProcess(KnowledgeBaseImpl.java:225) 16:26:05,365 ERROR [stderr] at org.drools.agent.impl.KnowledgeAgentImpl.removeKnowledgeDefinitionFromBase(KnowledgeAgentImpl.java:1027) 16:26:05,365 ERROR [stderr] at org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:884) confirm that Geoffrey change solved the problem and merged it into 5.2.x and master. Thanks Geoffrey! Important to note that console-server/business-central-server web.xml needs to be altered to include following listener definition: <listener> <listener-class>org.jbpm.integration.console.StatefulKnowledgeSessionUtilListener</listener-class> </listener> I have stopped the eap6 with the new ee6 deployable wars several times and the reported exception "Caused by: java.lang.ClassNotFoundException: org.drools.event.BeforeRuleBaseLockedEvent" has never been thrown again. Regarding Maciej's comment #10 - my business-central-server web.xml does not contain the described listener definition and it was not necessary to add it there. So, I am changing the state to VERIFIED in brms 5.3.1 ER1. Doc text edited for inclusion in the release notes. Thanks for providing the text, Maciej. - Lee |
Created attachment 603262 [details] server log When stopping EAP 6.0 with deployed BRMS 5.3.0, an exception is thrown. See attached server log.