Bug 1007425

Summary: "java.util.Hashtable is not proxyable" with latest OpenJDK7
Product: [Retired] JBoss BRMS Platform 6 Reporter: Lukáš Petrovický <lpetrovi>
Component: BREAssignee: Pere Fernàndez <pere.fernandez>
Status: CLOSED CURRENTRELEASE QA Contact: Lukáš Petrovický <lpetrovi>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.0.0CC: btison, mbaluch, ptisnovs, pzapataf
Target Milestone: ER4Keywords: TestBlocker
Target Release: 6.0.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-08-06 20:15:37 UTC 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:

Description Lukáš Petrovický 2013-09-12 13:18:32 UTC
After deploying the web app, we get the following exception in server log:

15:11:58,171 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service
jboss.deployment.unit."business-central.war".WeldStartService: org.jboss.msc.service.StartException in service
jboss.deployment.unit."business-central.war".WeldStartService: Failed to start service

        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767)
[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_60]

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_60]

        at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_60]

Caused by: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001437 Normal scoped bean class
java.util.Hashtable is not proxyable because the type is final or it contains a final method final boolean
java.util.Hashtable.initHashSeedAsNeeded(int) - Managed Bean [class
org.jbpm.formModeler.core.processing.formProcessing.FunctionsProvider] with qualifiers [@Any @Default].

        at org.jboss.weld.util.Proxies.getUnproxyableClassException(Proxies.java:229)

        at org.jboss.weld.util.Proxies.getUnproxyableTypeException(Proxies.java:184)

        at org.jboss.weld.util.Proxies.getUnproxyableTypesExceptionInt(Proxies.java:195)

        at org.jboss.weld.util.Proxies.getUnproxyableTypesException(Proxies.java:169)

        at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:147)

        at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:163)

        at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:382)

        at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:367)

        at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:379)

        at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:64)

        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]

        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]

        ... 3 more

This only happens with the latest OpenJDK7, which hit Fedora 18, 19 and 20 yesterday. It is also supposed to hit RHEL6 soon.

Although this is a problem with the web app, it will probably need to be resolved on a lower level, in Drools. We don't think this should be fixed in OpenJDK.

Comment 1 Pavel Tisnovsky 2013-09-12 13:30:51 UTC
This is change was added to OpenJDK7 by the following patch:

changeset:   6151:b03bbdef3a88
user:        mduigou
date:        Mon Mar 11 14:11:30 2013 -0700
summary:     8006593: Peformance and compatibility improvements to hash based Map implementations.

(their bad spelling ;-)

http://hg.openjdk.java.net/jdk7u/jdk7u-dev/jdk/rev/b03bbdef3a88

Comment 2 Pere Fernàndez 2013-09-16 11:40:27 UTC
The WELD error was thrown when the FunctionsProvider is initialized, BSH Interpreter internally use a HashTable to store the evaluable objets. Removed injection points of FunctionsProvider build a new instance when needed

Commit on master: https://github.com/droolsjbpm/jbpm-form-modeler/commit/12b52881997585415ae09093569ccb20c61c6473

Commit on 6.0.x: https://github.com/droolsjbpm/jbpm-form-modeler/commit/623da7f425b9e43af08896b99febbd03e4ba4aa2

Comment 3 Pere Fernàndez 2013-09-16 12:02:41 UTC
The WELD error was thrown when the FunctionsProvider is initialized, BSH Interpreter internally use a HashTable to store the evaluable objets. Removed injection points of FunctionsProvider build a new instance when needed

Commit on master:
https://github.com/droolsjbpm/jbpm-form-modeler/commit/12b52881997585415ae09093569ccb20c61c6473
https://github.com/droolsjbpm/jbpm-form-modeler/commit/d87a6ab8469d63928d55fda4d8771f3bdad3db09

Commit on 6.0.x:
https://github.com/droolsjbpm/jbpm-form-modeler/commit/623da7f425b9e43af08896b99febbd03e4ba4aa2
https://github.com/droolsjbpm/jbpm-form-modeler/commit/0be7dad52986ce2c40c6b37dc5d883f46d99471b

Comment 4 Pere Fernàndez 2013-09-16 12:02:41 UTC
The WELD error was thrown when the FunctionsProvider is initialized, BSH Interpreter internally use a HashTable to store the evaluable objets. Removed injection points of FunctionsProvider build a new instance when needed

Commit on master:
https://github.com/droolsjbpm/jbpm-form-modeler/commit/12b52881997585415ae09093569ccb20c61c6473
https://github.com/droolsjbpm/jbpm-form-modeler/commit/d87a6ab8469d63928d55fda4d8771f3bdad3db09

Commit on 6.0.x:
https://github.com/droolsjbpm/jbpm-form-modeler/commit/623da7f425b9e43af08896b99febbd03e4ba4aa2
https://github.com/droolsjbpm/jbpm-form-modeler/commit/0be7dad52986ce2c40c6b37dc5d883f46d99471b

Comment 5 Bernard Tison 2013-09-26 15:46:57 UTC
*** Bug 1012543 has been marked as a duplicate of this bug. ***

Comment 9 Lukáš Petrovický 2013-10-17 06:20:48 UTC
No longer seeing this on ER4. VERIFIED.