[JBoss JIRA] (DROOLS-1703) When incompatible varargs constructors exist, resolution sometimes incorrect
by Mario Fusco (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1703?page=com.atlassian.jira.plugi... ]
Mario Fusco updated DROOLS-1703:
--------------------------------
Sprint: 2017 Week 34-35
> When incompatible varargs constructors exist, resolution sometimes incorrect
> ----------------------------------------------------------------------------
>
> Key: DROOLS-1703
> URL: https://issues.jboss.org/browse/DROOLS-1703
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.5.0.Final
> Environment: CentOS 7 (x86_64)
> openjdk version "1.8.0_131"
> OpenJDK Runtime Environment (build 1.8.0_131-b12)
> OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
> Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
> Reporter: Gerard Krupa
> Assignee: Mario Fusco
>
> We have a class with 3 constructors:
> Thingy(String name)
> Thingy(String name, Object... args)
> Thingy(String name, String version, Object... args)
> When calling the constructor with a single paramater from a DRL:
> Thingy(drools.getRule().getName())
> we sometimes get an odd exception in our unit tests:
> {{[INFO] java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> [INFO] at java.lang.String.substring(String.java:1927)
> [INFO] at org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:17)
> [INFO] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:975)
> [INFO] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:396)
> [INFO] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:163)}}
> The root cause of the issue appears to be the selection of varargs constructors by ParseTools.getBestConstructorCandidate and getMethodScore. The scoring checks that the arguments from left to right match the expected parameter classes and scores based on their coerce-ability. The scoring then compares the number of parameters to arguments *only* if the accumulated score is still 0 (and at this point it's not zero because the first parameter matched the expected type).
> All 3 constructors in this list score and match the same and if the incompatible constructor is examined first then it's used. This in turn causes VarArgs.normalizeArgsForVarArgs to attempt to create an array of size -1 as it calculates the needed size of the varargs array. The reported exception seems to be generated as the exception handler itself crashes, being unable to deal with the root cause error.
> https://github.com/GJKrupa/DROOLS-1703
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 8 months
[JBoss JIRA] (DROOLS-1704) NPE when updating container with java class
by Kris Verlaenen (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1704?page=com.atlassian.jira.plugi... ]
Kris Verlaenen updated DROOLS-1704:
-----------------------------------
Sprint: 2017 Week 34-35
> NPE when updating container with java class
> -------------------------------------------
>
> Key: DROOLS-1704
> URL: https://issues.jboss.org/browse/DROOLS-1704
> Project: Drools
> Issue Type: Bug
> Components: kie server
> Affects Versions: 7.2.0.Final
> Reporter: Karel Suta
> Assignee: Mario Fusco
> Labels: reported-by-qe
> Fix For: 7.3.0.Final
>
> Attachments: stacktrace.txt
>
>
> User has Kie server with deployed container with java class.
> If user updates the container to new version with kjar without java class then it is updated correctly. However if user then tries to update the container again, this time to version which contains same java class then NullPointerException is thrown. See attachment.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 8 months
[JBoss JIRA] (JBJCA-1354) Potential for deadlock on pool's flush
by Radovan Stancel (JIRA)
[ https://issues.jboss.org/browse/JBJCA-1354?page=com.atlassian.jira.plugin... ]
Radovan Stancel updated JBJCA-1354:
-----------------------------------
Bugzilla References: https://bugzilla.redhat.com/show_bug.cgi?id=1480095
> Potential for deadlock on pool's flush
> --------------------------------------
>
> Key: JBJCA-1354
> URL: https://issues.jboss.org/browse/JBJCA-1354
> Project: IronJacamar
> Issue Type: Bug
> Reporter: Flavia Rainone
> Assignee: Flavia Rainone
>
> There is a potential for deadlock on all flushes in pools. The problem is that flush is synchronized and inside the flush the code can be delegated to listeners, that are external to IronJacamar.
> If those listeners use their own synchronization system , they could require synchronization locking in themselves. If there is another thread locking the listener and at some point invoking an operation that results in a pool flush, the system could enter a deadlock state.
> An example of stack trace:
> {noformat}
> Found one Java-level deadlock:
> =============================
> "JMSCCThreadPoolWorker-18":
> waiting to lock monitor 0x00007f1d2409ff48 (object 0x00000007853ad060, a org.jboss.jca.core.connectionmanager.pool.strategy.OnePool),
> which is held by "JMSCCThreadPoolWorker-16"
> "JMSCCThreadPoolWorker-16":
> waiting to lock monitor 0x00007f1d1c15d138 (object 0x0000000785998598, a com.ibm.mq.connector.outbound.ConnectionEventHandler),
> which is held by "JMSCCThreadPoolWorker-17"
> "JMSCCThreadPoolWorker-17":
> waiting to lock monitor 0x00007f1d2409ff48 (object 0x00000007853ad060, a org.jboss.jca.core.connectionmanager.pool.strategy.OnePool),
> which is held by "JMSCCThreadPoolWorker-16"
> Java stack information for the threads listed above:
> ===================================================
> "JMSCCThreadPoolWorker-18":
> at org.jboss.jca.core.connectionmanager.pool.AbstractPool.flush(AbstractPool.java:322)
> - waiting to lock <0x00000007853ad060> (a org.jboss.jca.core.connectionmanager.pool.strategy.OnePool)
> at org.jboss.jca.core.connectionmanager.listener.AbstractConnectionListener.connectionErrorOccurred(AbstractConnectionListener.java:368)
> at com.ibm.mq.connector.outbound.ConnectionEventHandler.fireEvent(ConnectionEventHandler.java:141)
> - locked <0x0000000788fe1fa0> (a com.ibm.mq.connector.outbound.ConnectionEventHandler)
> at com.ibm.mq.connector.outbound.ManagedConnectionImpl.onException(ManagedConnectionImpl.java:848)
> at com.ibm.msg.client.jms.internal.JmsProviderExceptionListener.run(JmsProviderExceptionListener.java:427)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:214)
> at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:105)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:229)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:303)
> at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1241)
> "JMSCCThreadPoolWorker-16":
> at com.ibm.mq.connector.outbound.ConnectionEventHandler.removeListener(ConnectionEventHandler.java:93)
> - waiting to lock <0x0000000785998598> (a com.ibm.mq.connector.outbound.ConnectionEventHandler)
> at com.ibm.mq.connector.outbound.ManagedConnectionImpl.removeConnectionEventListener(ManagedConnectionImpl.java:434)
> at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.doDestroy(SemaphoreArrayListManagedConnectionPool.java:891)
> at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.flush(SemaphoreArrayListManagedConnectionPool.java:621)
> at org.jboss.jca.core.connectionmanager.pool.AbstractPool.flush(AbstractPool.java:330)
> - locked <0x00000007853ad060> (a org.jboss.jca.core.connectionmanager.pool.strategy.OnePool)
> at org.jboss.jca.core.connectionmanager.listener.AbstractConnectionListener.connectionErrorOccurred(AbstractConnectionListener.java:368)
> at com.ibm.mq.connector.outbound.ConnectionEventHandler.fireEvent(ConnectionEventHandler.java:141)
> - locked <0x0000000788fe20b0> (a com.ibm.mq.connector.outbound.ConnectionEventHandler)
> at com.ibm.mq.connector.outbound.ManagedConnectionImpl.onException(ManagedConnectionImpl.java:848)
> at com.ibm.msg.client.jms.internal.JmsProviderExceptionListener.run(JmsProviderExceptionListener.java:427)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:214)
> at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:105)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:229)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:303)
> at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1241)
> "JMSCCThreadPoolWorker-17":
> at org.jboss.jca.core.connectionmanager.pool.AbstractPool.flush(AbstractPool.java:322)
> - waiting to lock <0x00000007853ad060> (a org.jboss.jca.core.connectionmanager.pool.strategy.OnePool)
> at org.jboss.jca.core.connectionmanager.listener.AbstractConnectionListener.connectionErrorOccurred(AbstractConnectionListener.java:368)
> at com.ibm.mq.connector.outbound.ConnectionEventHandler.fireEvent(ConnectionEventHandler.java:141)
> - locked <0x0000000785998598> (a com.ibm.mq.connector.outbound.ConnectionEventHandler)
> at com.ibm.mq.connector.outbound.ManagedConnectionImpl.onException(ManagedConnectionImpl.java:848)
> at com.ibm.msg.client.jms.internal.JmsProviderExceptionListener.run(JmsProviderExceptionListener.java:427)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:214)
> at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:105)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:229)
> at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:303)
> at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1241)
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 8 months
[JBoss JIRA] (DROOLS-1707) Unable to set fields for declared fact types from included kiebase after updating kcontainer in BRMS 6.4
by Mario Fusco (JIRA)
[ https://issues.jboss.org/browse/DROOLS-1707?page=com.atlassian.jira.plugi... ]
Mario Fusco commented on DROOLS-1707:
-------------------------------------
[~lionelgotti] I already backported that commit to 6.5.x branch, so the fix will be available with next patch release.
> Unable to set fields for declared fact types from included kiebase after updating kcontainer in BRMS 6.4
> --------------------------------------------------------------------------------------------------------
>
> Key: DROOLS-1707
> URL: https://issues.jboss.org/browse/DROOLS-1707
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 7.2.0.Final
> Reporter: Mario Fusco
> Assignee: Mario Fusco
> Priority: Critical
> Labels: support
> Fix For: 7.3.0.Final
>
>
> There is a KJAR with some declared fact types in kbase "kiedeclare" which are used by a second kbase "kiemodulemodel" which contains rules.
> After updating a rule in "kiemodulemodel", loading the new kjar and updating it in the kcontainer (by using updateToVersion())... it is not possible to set the fields declared on kiedeclare kbsae. The fields are returning "null" and it seems like they can not be found under Message class.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 8 months