[JBoss JIRA] (JASSIST-259) Concurrency issue in ProxyFactory
by Christian Beikov (JIRA)
Christian Beikov created JASSIST-259:
----------------------------------------
Summary: Concurrency issue in ProxyFactory
Key: JASSIST-259
URL: https://issues.jboss.org/browse/JASSIST-259
Project: Javassist
Issue Type: Bug
Affects Versions: 3.12.0.GA
Environment: AIX, IBM J9 VM (build 2.8, JRE 1.8.0 AIX ppc64-64 Compressed References 20150722_258693 (JIT enabled, AOT enabled)
Reporter: Christian Beikov
Assignee: Shigeru Chiba
Priority: Critical
Look at the following line to understand the issue
https://github.com/jboss-javassist/javassist/blob/master/src/main/javassi...
If there are 2 threads T1 and T2 at this line, T1 pauses and T2 runs through, on some systems T1 may encounter thisClass to be null after it wakes up again.
This leads to Hibernate getting a null class in JavassistProxyFactory and trying to create an instance of that which fails with a NPE.
Can anyone please confirm this issue? Maybe there is something in the JMM that I am not aware of that makes this code safe, but as far as I can tell, this looks like a real bug that just happens to uncover itself on an environment like J9 on AIX.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (WFLY-5954) XTS tests failures in WF testsuite
by Jim Ma (JIRA)
[ https://issues.jboss.org/browse/WFLY-5954?page=com.atlassian.jira.plugin.... ]
Jim Ma commented on WFLY-5954:
------------------------------
We tried bunch of things and didn't get this error reproduced locally or on TeamCity. I provided a workaround to disable the schema cache in jbossws-cxf( JBWS-3973) We'll upgrade jbossws-cxf in wildfly to include this workaround. After this failure is reproduced, we'll back to look at this again and fix it.
> XTS tests failures in WF testsuite
> ----------------------------------
>
> Key: WFLY-5954
> URL: https://issues.jboss.org/browse/WFLY-5954
> Project: WildFly
> Issue Type: Bug
> Components: Web Services, XTS
> Reporter: Gytis Trikleris
> Assignee: Jim Ma
> Fix For: 10.0.0.Final
>
>
> {code}
> Running org.jboss.as.test.xts.wsat.client.ATTestCase
> Tests run: 9, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 11.74 sec <<< FAILURE! - in org.jboss.as.test.xts.wsat.client.ATTestCase
> testWSATApplicationExceptionCommit(org.jboss.as.test.xts.wsat.client.ATTestCase) Time elapsed: 0.286 sec <<< ERROR!
> org.jboss.arquillian.test.spi.ArquillianProxyException: javax.xml.ws.soap.SOAPFaultException : Error when enlisting participants [Proxied because : Original exception caused: class java.io.NotSerializableException: com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl]
> at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)
> at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)
> at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)
> at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:140)
> at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:71)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1669)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1550)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1347)
> at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
> at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:651)
> at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
> at com.sun.proxy.$Proxy176.invoke(Unknown Source)
> at org.jboss.as.test.xts.wsat.client.ATTestCase.testWSATApplicationExceptionCommit(ATTestCase.java:227)
> testWSATRollbackOnly(org.jboss.as.test.xts.wsat.client.ATTestCase) Time elapsed: 0.12 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.at.remote.UserTransactionImple.startTransaction(UserTransactionImple.java:308)
> at com.arjuna.mwlabs.wst11.at.remote.UserTransactionImple.begin(UserTransactionImple.java:80)
> at com.arjuna.mwlabs.wst11.at.remote.UserTransactionImple.begin(UserTransactionImple.java:70)
> at org.jboss.as.test.xts.wsat.client.ATTestCase.testWSATRollbackOnly(ATTestCase.java:172)
> Running org.jboss.as.test.xts.annotation.client.TransactionalTestCase
> Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.725 sec <<< FAILURE! - in org.jboss.as.test.xts.annotation.client.TransactionalTestCase
> testActiveTransaction(org.jboss.as.test.xts.annotation.client.TransactionalTestCase) Time elapsed: 0.018 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.at.remote.UserTransactionImple.startTransaction(UserTransactionImple.java:308)
> at com.arjuna.mwlabs.wst11.at.remote.UserTransactionImple.begin(UserTransactionImple.java:80)
> at com.arjuna.mwlabs.wst11.at.remote.UserTransactionImple.begin(UserTransactionImple.java:70)
> at org.jboss.as.test.xts.annotation.client.TransactionalTestCase.testActiveTransaction(TransactionalTestCase.java:78)
> Running org.jboss.as.test.xts.annotation.client.CompensatableTestCase
> Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.411 sec <<< FAILURE! - in org.jboss.as.test.xts.annotation.client.CompensatableTestCase
> testActiveTransaction(org.jboss.as.test.xts.annotation.client.CompensatableTestCase) Time elapsed: 0.054 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.annotation.client.CompensatableTestCase.testActiveTransaction(CompensatableTestCase.java:77)
> Running org.jboss.as.test.xts.annotation.compensationScoped.CompensationScopedTestCase
> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.876 sec - in org.jboss.as.test.xts.annotation.compensationScoped.CompensationScopedTestCase
> Running org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase
> Tests run: 7, Failures: 0, Errors: 7, Skipped: 0, Time elapsed: 1.648 sec <<< FAILURE! - in org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase
> testWSBAParticipantApplicationException(org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase) Time elapsed: 0.236 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase.testWSBAParticipantApplicationException(BAParticipantCompletionTestCase.java:218)
> testWSBAParticipantCannotComplete(org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase) Time elapsed: 0.104 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase.testWSBAParticipantCannotComplete(BAParticipantCompletionTestCase.java:177)
> testWSBAParticipantClientCancelNotComplete(org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase) Time elapsed: 0.095 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase.testWSBAParticipantClientCancelNotComplete(BAParticipantCompletionTestCase.java:161)
> testWSBAParticipantDoNotComplete(org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase) Time elapsed: 0.07 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase.testWSBAParticipantDoNotComplete(BAParticipantCompletionTestCase.java:141)
> testWSBAParticipantCompleteSimple(org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase) Time elapsed: 0.067 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase.testWSBAParticipantCompleteSimple(BAParticipantCompletionTestCase.java:125)
> testWSBAParticipantCompleteSingle(org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase) Time elapsed: 0.106 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase.testWSBAParticipantCompleteSingle(BAParticipantCompletionTestCase.java:114)
> testWSBAParticipantClientCancel(org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase) Time elapsed: 0.101 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.participantcompletion.client.BAParticipantCompletionTestCase.testWSBAParticipantClientCancel(BAParticipantCompletionTestCase.java:202)
> Running org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase
> Tests run: 6, Failures: 2, Errors: 4, Skipped: 0, Time elapsed: 0.585 sec <<< FAILURE! - in org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase
> testWSBACoordinatorSimple(org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase) Time elapsed: 0.002 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.testWSBACoordinatorSimple(BACoordinatorCompletionTestCase.java:106)
> testWSBACoordinatorSingle(org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase) Time elapsed: 0.002 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.testWSBACoordinatorSingle(BACoordinatorCompletionTestCase.java:97)
> testWSBACoordinatorCannotComplete(org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase) Time elapsed: 0.002 sec <<< FAILURE!
> java.lang.AssertionError: Another status order expected for the bacoordinator_completition_service1 expected:<[CANCEL]> but was:<null>
> at org.junit.Assert.fail(Assert.java:88)
> at org.junit.Assert.failNotEquals(Assert.java:834)
> at org.junit.Assert.assertEquals(Assert.java:118)
> at org.jboss.as.test.xts.base.BaseFunctionalTest.assertEventLog(BaseFunctionalTest.java:85)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.assertEventLogClient1(BACoordinatorCompletionTestCase.java:194)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.testWSBACoordinatorCannotComplete(BACoordinatorCompletionTestCase.java:134)
> testWSBACoordinatorApplicationException(org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase) Time elapsed: 0.359 sec <<< ERROR!
> org.jboss.arquillian.test.spi.ArquillianProxyException: javax.xml.ws.soap.SOAPFaultException : Fault occurred while processing. [Proxied because : Original exception caused: class java.io.NotSerializableException: com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl]
> at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)
> at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)
> at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)
> at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:140)
> at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:71)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1669)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1550)
> at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1347)
> at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
> at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:651)
> at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
> at com.sun.proxy.$Proxy255.saveData(Unknown Source)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.testWSBACoordinatorApplicationException(BACoordinatorCompletionTestCase.java:163)
> testWSBACoordinatorCompletionFailToComplete(org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase) Time elapsed: 0.097 sec <<< FAILURE!
> java.lang.AssertionError: Another status order expected for the bacoordinator_completition_service1 expected:<[COMPLETE, CONFIRM_COMPLETED, COMPENSATE]> but was:<null>
> at org.junit.Assert.fail(Assert.java:88)
> at org.junit.Assert.failNotEquals(Assert.java:834)
> at org.junit.Assert.assertEquals(Assert.java:118)
> at org.jboss.as.test.xts.base.BaseFunctionalTest.assertEventLog(BaseFunctionalTest.java:85)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.assertEventLogClient1(BACoordinatorCompletionTestCase.java:194)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.testWSBACoordinatorCompletionFailToComplete(BACoordinatorCompletionTestCase.java:185)
> testWSBACoordinatorClientCancel(org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase) Time elapsed: 0.06 sec <<< ERROR!
> com.arjuna.wst.SystemException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part parameters defined as element {http://docs.oasis-open.org/ws-tx/wscoor/2006/06}CreateCoordinationContext which is not in the schema.
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.startTransaction(UserBusinessActivityImple.java:374)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:117)
> at com.arjuna.mwlabs.wst11.ba.remote.UserBusinessActivityImple.begin(UserBusinessActivityImple.java:107)
> at org.jboss.as.test.xts.wsba.coordinatorcompletion.client.BACoordinatorCompletionTestCase.testWSBACoordinatorClientCancel(BACoordinatorCompletionTestCase.java:142)
> Results :
> Failed tests:
> BACoordinatorCompletionTestCase.testWSBACoordinatorCannotComplete:134->assertEventLogClient1:194->BaseFunctionalTest.assertEventLog:85 Another status order expected for the bacoordinator_completition_service1 expected:<[CANCEL]> but was:<null>
> BACoordinatorCompletionTestCase.testWSBACoordinatorCompletionFailToComplete:185->assertEventLogClient1:194->BaseFunctionalTest.assertEventLog:85 Another status order expected for the bacoordinator_completition_service1 expected:<[COMPLETE, CONFIRM_COMPLETED, COMPENSATE]> but was:<null>
> Tests in error:
> ATTestCase.testWSATApplicationExceptionCommit:227 » ArquillianProxy javax.xml....
> ATTestCase.testWSATRollbackOnly:172 » System org.apache.cxf.wsdl11.WSDLRuntime...
> TransactionalTestCase.testActiveTransaction:78 » System org.apache.cxf.wsdl11....
> CompensatableTestCase.testActiveTransaction:77 » System org.apache.cxf.wsdl11....
> BAParticipantCompletionTestCase.testWSBAParticipantApplicationException:218 » System
> BAParticipantCompletionTestCase.testWSBAParticipantCannotComplete:177 » System
> BAParticipantCompletionTestCase.testWSBAParticipantClientCancelNotComplete:161 » System
> BAParticipantCompletionTestCase.testWSBAParticipantDoNotComplete:141 » System ...
> BAParticipantCompletionTestCase.testWSBAParticipantCompleteSimple:125 » System
> BAParticipantCompletionTestCase.testWSBAParticipantCompleteSingle:114 » System
> BAParticipantCompletionTestCase.testWSBAParticipantClientCancel:202 » System o...
> BACoordinatorCompletionTestCase.testWSBACoordinatorSimple:106 » System org.apa...
> BACoordinatorCompletionTestCase.testWSBACoordinatorSingle:97 » System org.apac...
> BACoordinatorCompletionTestCase.testWSBACoordinatorApplicationException:163 » ArquillianProxy
> BACoordinatorCompletionTestCase.testWSBACoordinatorClientCancel:142 » System o...
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (DROOLS-1028) Drools 6.3.0.Final - high memory usage
by Bill Tuminaro (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1028?page=com.atlassian.jira.plugi... ]
Bill Tuminaro edited comment on DROOLS-1028 at 1/18/16 7:49 PM:
----------------------------------------------------------------
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
*$SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)*
*not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
*List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
*if(tel == null)*
*tel = new ArrayList<Entity>();*
*tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
was (Author: billt408):
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
*$SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)*
*not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
> Drools 6.3.0.Final - high memory usage
> --------------------------------------
>
> Key: DROOLS-1028
> URL: https://issues.jboss.org/browse/DROOLS-1028
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.1.0.Final, 6.3.0.Final
> Environment: Drools 6.3.0.Final on Windows, AIX and Linux
> Reporter: Bill Tuminaro
> Assignee: Mario Fusco
> Attachments: newSampleFile.drl, SampleRuleFile.drl, screenshot-1.png
>
>
> We have an application that completely wraps the drools run-time. The code creates rules, compiles them and manages the run-time. We are experiencing very high memory utilization in an environment with about 1000 rules. Memory continuously grows as we insert facts, I know this is expected, however the amount of growth seems unusually large. In one scenario, memory consumption jumps 200 MB after inserting about 4800 facts (each fact consumes about 200 bytes) and calling fireallrules. We are currently running with the phreak algorithm. I wrote some code that iterates over the facthandles to count the number of right tuple references once the insertion and fireallrules has completed. It shows over 10 million references. Can someone review the attached code to tell me if the approach is sound? Also, how do I identify the entire set of right tuples in memory, I would like to write some code to produce some data about them to give me some insight into what is causing so many right tuples and right tuple references to be created. If we can narrow this down, I would like to write a reproducer to isolate the large memory usage.
> for (Object obj : kSession.getObjects()) {
> if (obj == null) {
> RuleLogger.traceDebug( className, methodName,"Null object");
> }
> DefaultFactHandle factHandle = (DefaultFactHandle)kSession.getFactHandle(obj);
> if (factHandle != null) {
> RightTuple previous = factHandle.getLastRightTuple();
> int rtCount = 0;
> if (previous != null ) {
> ++rtCount;
> while (true) {
> previous = (RightTuple) previous.getNext();
> if (previous == null)
> break;
> ++rtCount;
> }
> }
> totalRighttuples += rtCount;
> }
> }
> ...
> String msg = "printStats() - WM has " +nm.length() + " nodes in NM array, " + activeNodesInNm + " active nodes, " + totalsmNetworkNodes+ " network nodes, " + totalsmPathMemories + " path memories, " +
> + totalRighttuples + " rightTuple references";
> Sample output:
> printStats() - WM has 14328 nodes in NM array, 4711 active nodes, 26396 network nodes, 4640 path memories, 10754655 rightTuple references
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (DROOLS-1028) Drools 6.3.0.Final - high memory usage
by Bill Tuminaro (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1028?page=com.atlassian.jira.plugi... ]
Bill Tuminaro edited comment on DROOLS-1028 at 1/18/16 7:48 PM:
----------------------------------------------------------------
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
* $SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)*
*not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
was (Author: billt408):
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
* $SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)
not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
> Drools 6.3.0.Final - high memory usage
> --------------------------------------
>
> Key: DROOLS-1028
> URL: https://issues.jboss.org/browse/DROOLS-1028
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.1.0.Final, 6.3.0.Final
> Environment: Drools 6.3.0.Final on Windows, AIX and Linux
> Reporter: Bill Tuminaro
> Assignee: Mario Fusco
> Attachments: newSampleFile.drl, SampleRuleFile.drl, screenshot-1.png
>
>
> We have an application that completely wraps the drools run-time. The code creates rules, compiles them and manages the run-time. We are experiencing very high memory utilization in an environment with about 1000 rules. Memory continuously grows as we insert facts, I know this is expected, however the amount of growth seems unusually large. In one scenario, memory consumption jumps 200 MB after inserting about 4800 facts (each fact consumes about 200 bytes) and calling fireallrules. We are currently running with the phreak algorithm. I wrote some code that iterates over the facthandles to count the number of right tuple references once the insertion and fireallrules has completed. It shows over 10 million references. Can someone review the attached code to tell me if the approach is sound? Also, how do I identify the entire set of right tuples in memory, I would like to write some code to produce some data about them to give me some insight into what is causing so many right tuples and right tuple references to be created. If we can narrow this down, I would like to write a reproducer to isolate the large memory usage.
> for (Object obj : kSession.getObjects()) {
> if (obj == null) {
> RuleLogger.traceDebug( className, methodName,"Null object");
> }
> DefaultFactHandle factHandle = (DefaultFactHandle)kSession.getFactHandle(obj);
> if (factHandle != null) {
> RightTuple previous = factHandle.getLastRightTuple();
> int rtCount = 0;
> if (previous != null ) {
> ++rtCount;
> while (true) {
> previous = (RightTuple) previous.getNext();
> if (previous == null)
> break;
> ++rtCount;
> }
> }
> totalRighttuples += rtCount;
> }
> }
> ...
> String msg = "printStats() - WM has " +nm.length() + " nodes in NM array, " + activeNodesInNm + " active nodes, " + totalsmNetworkNodes+ " network nodes, " + totalsmPathMemories + " path memories, " +
> + totalRighttuples + " rightTuple references";
> Sample output:
> printStats() - WM has 14328 nodes in NM array, 4711 active nodes, 26396 network nodes, 4640 path memories, 10754655 rightTuple references
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (DROOLS-1028) Drools 6.3.0.Final - high memory usage
by Bill Tuminaro (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1028?page=com.atlassian.jira.plugi... ]
Bill Tuminaro edited comment on DROOLS-1028 at 1/18/16 7:48 PM:
----------------------------------------------------------------
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
*$SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)*
*not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
was (Author: billt408):
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
* $SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)*
*not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
> Drools 6.3.0.Final - high memory usage
> --------------------------------------
>
> Key: DROOLS-1028
> URL: https://issues.jboss.org/browse/DROOLS-1028
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.1.0.Final, 6.3.0.Final
> Environment: Drools 6.3.0.Final on Windows, AIX and Linux
> Reporter: Bill Tuminaro
> Assignee: Mario Fusco
> Attachments: newSampleFile.drl, SampleRuleFile.drl, screenshot-1.png
>
>
> We have an application that completely wraps the drools run-time. The code creates rules, compiles them and manages the run-time. We are experiencing very high memory utilization in an environment with about 1000 rules. Memory continuously grows as we insert facts, I know this is expected, however the amount of growth seems unusually large. In one scenario, memory consumption jumps 200 MB after inserting about 4800 facts (each fact consumes about 200 bytes) and calling fireallrules. We are currently running with the phreak algorithm. I wrote some code that iterates over the facthandles to count the number of right tuple references once the insertion and fireallrules has completed. It shows over 10 million references. Can someone review the attached code to tell me if the approach is sound? Also, how do I identify the entire set of right tuples in memory, I would like to write some code to produce some data about them to give me some insight into what is causing so many right tuples and right tuple references to be created. If we can narrow this down, I would like to write a reproducer to isolate the large memory usage.
> for (Object obj : kSession.getObjects()) {
> if (obj == null) {
> RuleLogger.traceDebug( className, methodName,"Null object");
> }
> DefaultFactHandle factHandle = (DefaultFactHandle)kSession.getFactHandle(obj);
> if (factHandle != null) {
> RightTuple previous = factHandle.getLastRightTuple();
> int rtCount = 0;
> if (previous != null ) {
> ++rtCount;
> while (true) {
> previous = (RightTuple) previous.getNext();
> if (previous == null)
> break;
> ++rtCount;
> }
> }
> totalRighttuples += rtCount;
> }
> }
> ...
> String msg = "printStats() - WM has " +nm.length() + " nodes in NM array, " + activeNodesInNm + " active nodes, " + totalsmNetworkNodes+ " network nodes, " + totalsmPathMemories + " path memories, " +
> + totalRighttuples + " rightTuple references";
> Sample output:
> printStats() - WM has 14328 nodes in NM array, 4711 active nodes, 26396 network nodes, 4640 path memories, 10754655 rightTuple references
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (DROOLS-1028) Drools 6.3.0.Final - high memory usage
by Bill Tuminaro (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1028?page=com.atlassian.jira.plugi... ]
Bill Tuminaro edited comment on DROOLS-1028 at 1/18/16 7:47 PM:
----------------------------------------------------------------
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
* $SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)
not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
was (Author: billt408):
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
* $SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)
not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
> Drools 6.3.0.Final - high memory usage
> --------------------------------------
>
> Key: DROOLS-1028
> URL: https://issues.jboss.org/browse/DROOLS-1028
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.1.0.Final, 6.3.0.Final
> Environment: Drools 6.3.0.Final on Windows, AIX and Linux
> Reporter: Bill Tuminaro
> Assignee: Mario Fusco
> Attachments: newSampleFile.drl, SampleRuleFile.drl, screenshot-1.png
>
>
> We have an application that completely wraps the drools run-time. The code creates rules, compiles them and manages the run-time. We are experiencing very high memory utilization in an environment with about 1000 rules. Memory continuously grows as we insert facts, I know this is expected, however the amount of growth seems unusually large. In one scenario, memory consumption jumps 200 MB after inserting about 4800 facts (each fact consumes about 200 bytes) and calling fireallrules. We are currently running with the phreak algorithm. I wrote some code that iterates over the facthandles to count the number of right tuple references once the insertion and fireallrules has completed. It shows over 10 million references. Can someone review the attached code to tell me if the approach is sound? Also, how do I identify the entire set of right tuples in memory, I would like to write some code to produce some data about them to give me some insight into what is causing so many right tuples and right tuple references to be created. If we can narrow this down, I would like to write a reproducer to isolate the large memory usage.
> for (Object obj : kSession.getObjects()) {
> if (obj == null) {
> RuleLogger.traceDebug( className, methodName,"Null object");
> }
> DefaultFactHandle factHandle = (DefaultFactHandle)kSession.getFactHandle(obj);
> if (factHandle != null) {
> RightTuple previous = factHandle.getLastRightTuple();
> int rtCount = 0;
> if (previous != null ) {
> ++rtCount;
> while (true) {
> previous = (RightTuple) previous.getNext();
> if (previous == null)
> break;
> ++rtCount;
> }
> }
> totalRighttuples += rtCount;
> }
> }
> ...
> String msg = "printStats() - WM has " +nm.length() + " nodes in NM array, " + activeNodesInNm + " active nodes, " + totalsmNetworkNodes+ " network nodes, " + totalsmPathMemories + " path memories, " +
> + totalRighttuples + " rightTuple references";
> Sample output:
> printStats() - WM has 14328 nodes in NM array, 4711 active nodes, 26396 network nodes, 4640 path memories, 10754655 rightTuple references
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (DROOLS-1028) Drools 6.3.0.Final - high memory usage
by Bill Tuminaro (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1028?page=com.atlassian.jira.plugi... ]
Bill Tuminaro updated DROOLS-1028:
----------------------------------
Attachment: newSampleFile.drl
SampleRuleFile.drl
When I went to put together a sample rule file, I discovered a colleague has made some changes to our rule syntax that dramatically reduced our memory requirements. The original rule sample rule file is named SampleRuleFile,drl the one with the new syntax is named NewSampleFile.drl.
Below is one of the rules from the Original rule file, the bold lines are the lines that are now omitted from the new rule syntax.
rule "1199"
when
$SPEntity : SPEntity ( anchorId == 2002 , $SPEntity_NewSSP: getAttributeInteger("NewSSP"), $SPEntity_entityId: entityId, $SPEntity_timestamp : timestamp >= 1452890353970 )
if ($SPEntity.containsTriggeredRule("1199") ) break[doNothing]
else if (RulesManagerHelper.isFirstProbe(2002, $SPEntity_timestamp)) break[suppressFirstProbe]
not LastEntity( curr#SPEntity.getAttributeInteger("NewSSP") == $SPEntity_NewSSP )
* $SSEntity : SSEntity ($SSEntity_entityId : entityId == 2002)
not SSEntity($SSEntity_entityId == entityId, this after $SSEntity)*
then
RuleLogger.traceInfo(1199, drools.getRule().getName(), "==== " + drools.getRule().getName() + " was fired =====");
{
List<Entity> cel = null;
* List<Entity> tel = null;*
List<PMEntity> pel = null;
cel = new ArrayList<Entity>();
* if(tel == null)
tel = new ArrayList<Entity>();
tel.add($SSEntity);*
cel.add($SPEntity);
RuleEngineUtils.printEntity($SPEntity);
if($SPEntity.containsTriggeredRule("1199")) {
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate. Exit.");
RuleEngineUtils.printEntity($SPEntity);
return;
}
RuleEngineUtils.triggerAlert(1199, cel, null, *tel,* pel, RuleEngineUtils.Severity.MSGID);
}
$SPEntity.addTriggeredRule("1199");
then[doNothing]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppressed duplicate");
then[suppressFirstProbe]
RuleLogger.traceInfo(1199, drools.getRule().getName(), "Suppress first probe");
end
I hope this format is usable for you. Please let me know what else I can do to help.
-BillT
> Drools 6.3.0.Final - high memory usage
> --------------------------------------
>
> Key: DROOLS-1028
> URL: https://issues.jboss.org/browse/DROOLS-1028
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.1.0.Final, 6.3.0.Final
> Environment: Drools 6.3.0.Final on Windows, AIX and Linux
> Reporter: Bill Tuminaro
> Assignee: Mario Fusco
> Attachments: newSampleFile.drl, SampleRuleFile.drl, screenshot-1.png
>
>
> We have an application that completely wraps the drools run-time. The code creates rules, compiles them and manages the run-time. We are experiencing very high memory utilization in an environment with about 1000 rules. Memory continuously grows as we insert facts, I know this is expected, however the amount of growth seems unusually large. In one scenario, memory consumption jumps 200 MB after inserting about 4800 facts (each fact consumes about 200 bytes) and calling fireallrules. We are currently running with the phreak algorithm. I wrote some code that iterates over the facthandles to count the number of right tuple references once the insertion and fireallrules has completed. It shows over 10 million references. Can someone review the attached code to tell me if the approach is sound? Also, how do I identify the entire set of right tuples in memory, I would like to write some code to produce some data about them to give me some insight into what is causing so many right tuples and right tuple references to be created. If we can narrow this down, I would like to write a reproducer to isolate the large memory usage.
> for (Object obj : kSession.getObjects()) {
> if (obj == null) {
> RuleLogger.traceDebug( className, methodName,"Null object");
> }
> DefaultFactHandle factHandle = (DefaultFactHandle)kSession.getFactHandle(obj);
> if (factHandle != null) {
> RightTuple previous = factHandle.getLastRightTuple();
> int rtCount = 0;
> if (previous != null ) {
> ++rtCount;
> while (true) {
> previous = (RightTuple) previous.getNext();
> if (previous == null)
> break;
> ++rtCount;
> }
> }
> totalRighttuples += rtCount;
> }
> }
> ...
> String msg = "printStats() - WM has " +nm.length() + " nodes in NM array, " + activeNodesInNm + " active nodes, " + totalsmNetworkNodes+ " network nodes, " + totalsmPathMemories + " path memories, " +
> + totalRighttuples + " rightTuple references";
> Sample output:
> printStats() - WM has 14328 nodes in NM array, 4711 active nodes, 26396 network nodes, 4640 path memories, 10754655 rightTuple references
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (WFLY-5985) WFLYSRV0058: Additional resource root .. added via jboss-deployment-structure.xml does not exist when absolute path used
by Stuart Douglas (JIRA)
[ https://issues.jboss.org/browse/WFLY-5985?page=com.atlassian.jira.plugin.... ]
Stuart Douglas reassigned WFLY-5985:
------------------------------------
Assignee: Stuart Douglas (was: Jason Greene)
> WFLYSRV0058: Additional resource root .. added via jboss-deployment-structure.xml does not exist when absolute path used
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: WFLY-5985
> URL: https://issues.jboss.org/browse/WFLY-5985
> Project: WildFly
> Issue Type: Bug
> Components: Server
> Affects Versions: 10.0.0.CR5
> Reporter: Brad Maxwell
> Assignee: Stuart Douglas
>
> Using:
> {code}
> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
> <deployment>
> <resources>
> <resource-root path="/home/test/my.jar" />
> </resources>
> </deployment>
> </jboss-deployment-structure>
> {code}
> It fails to locate the resource-root:
> {code}
> WARN [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0058: Additional resource root /content/app1.war//home/test/my.jar added via jboss-deployment-structure.xml does not exist
> {code}
> Looks like src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months
[JBoss JIRA] (LOGTOOL-96) Static & default interface methods in Logger interface require annotation
by James Perkins (JIRA)
[ https://issues.jboss.org/browse/LOGTOOL-96?page=com.atlassian.jira.plugin... ]
James Perkins moved JBLOGGING-120 to LOGTOOL-96:
------------------------------------------------
Project: Log Tool (was: JBoss Logging)
Key: LOGTOOL-96 (was: JBLOGGING-120)
Component/s: (was: jboss-logging-logmanager)
Affects Version/s: (was: 3.3.0.Beta1)
> Static & default interface methods in Logger interface require annotation
> -------------------------------------------------------------------------
>
> Key: LOGTOOL-96
> URL: https://issues.jboss.org/browse/LOGTOOL-96
> Project: Log Tool
> Issue Type: Bug
> Reporter: Radim Vansa
> Assignee: James Perkins
>
> When I want to add a static helper method to the interface used for message logger, I get an error about requiring the @Message annotation. I think that this should not be required for static methods.
> My usecase:
> {code}
> @MessageLogger(projectCode = "FOO")
> public interface FooMessageLogger extends BasicLogger {
> static FooMessageLogger getLog(Class clazz) {
> return Logger.getMessageLogger(FooMessageLogger.class, clazz.getName());
> }
> /* regular annotated logging methods */
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
10 years, 3 months