[ 
https://issues.apache.org/jira/browse/LUCENE-5086?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Uwe Schindler updated LUCENE-5086:
----------------------------------

    Attachment: LUCENE-5086-trunk.patch
                LUCENE-5086-branch4x.patch

Some restructuring and preventing a useless NPE that needs to be catched on 
non-Hotspot JVMs.
I also removed the separate private method and made the whole thing with nested 
catches like at the other places in the static {} initializer (I don't like 
class' methods called from a static initializer). Also this one is easier to 
debug, as you can add printlns without working around the "return" escape of 
the original method!

I tested on Windows:
- Oracle JDK 6u32 and 6u45 (64 bit) work, proprietary sunMF API used
- Oracle JDK 6u32, 32 bit is unsupported as before (the object alignment JVM 
option does not exist at all, but also the sunMF API is used)
- Oracle JDK 7u25 (64 bit) works, new public Java 7 API is used (via 
reflection) or statically typed in trunk
- All other JVMs are unsupported, but they don't have obejct alignment available

By the way: Our code looks better and more universal, because it does not rely 
on the management bean to detect compressed oops. We "measure" them! So it also 
works with J9!
                
> RamUsageEstimator causes AWT classes to be loaded by calling 
> ManagementFactory#getPlatformMBeanServer
> -----------------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-5086
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5086
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Shay Banon
>            Assignee: Dawid Weiss
>         Attachments: LUCENE-5086-branch4x.patch, LUCENE-5086-branch4x.patch, 
> LUCENE-5086.patch, LUCENE-5086-trunk.patch, LUCENE-5086-trunk.patch
>
>
> Yea, that type of day and that type of title :).
> Since the last update of Java 6 on OS X, I started to see an annoying icon 
> pop up at the doc whenever running elasticsearch. By default, all of our 
> scripts add headless AWT flag so people will probably not encounter it, but, 
> it was strange that I saw it when before I didn't.
> I started to dig around, and saw that when RamUsageEstimator was being 
> loaded, it was causing AWT classes to be loaded. Further investigation showed 
> that actually for some reason, calling 
> ManagementFactory#getPlatformMBeanServer now with the new Java version causes 
> AWT classes to be loaded (at least on the mac, haven't tested on other 
> platforms yet). 
> There are several ways to try and solve it, for example, by identifying the 
> bug in the JVM itself, but I think that there should be a fix for it in 
> Lucene itself, specifically since there is no need to call 
> #getPlatformMBeanServer to get the hotspot diagnostics one (its a heavy 
> call...).
> Here is a simple call that will allow to get the hotspot mxbean without using 
> the #getPlatformMBeanServer method, and not causing it to be loaded and 
> loading all those nasty AWT classes:
> {code}
>     Object getHotSpotMXBean() {
>         try {
>             // Java 6
>             Class sunMF = Class.forName("sun.management.ManagementFactory");
>             return sunMF.getMethod("getDiagnosticMXBean").invoke(null);
>         } catch (Throwable t) {
>             // ignore
>         }
>         // potentially Java 7
>         try {
>             return ManagementFactory.class.getMethod("getPlatformMXBean", 
> Class.class).invoke(null, 
> Class.forName("com.sun.management.HotSpotDiagnosticMXBean"));
>         } catch (Throwable t) {
>             // ignore
>         }
>         return null;
>     }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to