[jboss-jira] [JBoss JIRA] (DROOLS-1193) MemoryUtil's static constructor call to ManagementFactory.getMemoryPoolMXBeans() fails on Google App Engine
Geoffrey De Smet (JIRA)
issues at jboss.org
Thu May 26 10:24:00 EDT 2016
[ https://issues.jboss.org/browse/DROOLS-1193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13243377#comment-13243377 ]
Geoffrey De Smet edited comment on DROOLS-1193 at 5/26/16 10:23 AM:
--------------------------------------------------------------------
After discussion we saw 3 alternatives:
* A) Disable the feature (such as jitting constraints) if BeanManager isn't available on JDK 7 or lower - Accepted
* B) Pessmistically guess the permGenspace value - Rejected because it's unreliabe/unstable. It's also impossible to ask later on how much is left.
* C) Allow enabling/disabling each feature individually through configuration - Rejected because it's inferior to A): too much painfully hoops for a user to jump through.
How do we detect GAE (and Android etc) best? Still under debate:
http://stackoverflow.com/questions/37463518/how-to-detect-google-app-engine-in-library-code-to-skip-code-that-uses-managemen
was (Author: ge0ffrey):
After discussion we saw 3 alternative:
* A) Disable the feature (such as jitting constraints) if BeanManager isn't available on JDK 7 or lower - Accepted
* B) Pessmistically guess the permGenspace value - Rejected because it's unreliabe/unstable. It's also impossible to ask later on how much is left.
* C) Allow enabling/disabling each feature individually through configuration - Rejected because it's inferior to A): too much painfully hoops for a user to jump through.
How do we detect GAE (and Android etc) best? Still under debate:
http://stackoverflow.com/questions/37463518/how-to-detect-google-app-engine-in-library-code-to-skip-code-that-uses-managemen
> MemoryUtil's static constructor call to ManagementFactory.getMemoryPoolMXBeans() fails on Google App Engine
> -----------------------------------------------------------------------------------------------------------
>
> Key: DROOLS-1193
> URL: https://issues.jboss.org/browse/DROOLS-1193
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.4.0.Final
> Reporter: Geoffrey De Smet
> Assignee: Mario Fusco
>
> {code}
> [INFO] java.lang.NoClassDefFoundError: java.lang.management.ManagementFactory is a restricted class. Please see the Google App Engine developer's guide for more details.
> [INFO] at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:52)
> [INFO] at org.drools.core.util.MemoryUtil.<clinit>(MemoryUtil.java:33)
> [INFO] at java.lang.Class.forName0(Native Method)
> [INFO] at java.lang.Class.forName(Class.java:195)
> [INFO] at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
> [INFO] at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
> [INFO] at org.drools.core.RuleBaseConfiguration.setPermGenThreshold(RuleBaseConfiguration.java:583)
> [INFO] at org.drools.core.RuleBaseConfiguration.init(RuleBaseConfiguration.java:451)
> [INFO] at org.drools.core.RuleBaseConfiguration.init(RuleBaseConfiguration.java:429)
> [INFO] at org.drools.core.RuleBaseConfiguration.<init>(RuleBaseConfiguration.java:278)
> [INFO] at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieBaseConfiguration(KieServicesImpl.java:185)
> {code}
> the problem is in this code:
> {code}
> static {
> if (!hasPermGen() || ClassUtils.isAndroid()) { // hasPermGen is true because GAE doesn't support java 8 yet
> permGenStats = new DummyMemoryStats();
> } else {
> MemoryPoolMXBean permGenBean = null;
> for (MemoryPoolMXBean mx : ManagementFactory.getMemoryPoolMXBeans()) { // <=== EXCEPTION
> if (mx.getName() != null && mx.getName().contains("Perm")) {
> permGenBean = mx;
> break;
> }
> }
> permGenStats = new MBeanMemoryStats(permGenBean);
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the jboss-jira
mailing list