Bug #41164 NPE in Monitor tab
Submitted: 1 Dec 2008 22:57 Modified: 29 Jan 2009 11:57
Reporter: Josh Sled Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Enterprise Monitor: Web Severity:S3 (Non-critical)
Version:2.0.0.7102 OS:Any
Assigned to: Eric Herman CPU Architecture:Any

[1 Dec 2008 22:57] Josh Sled
Description:
(Quoted from support issue https://support.mysql.com/view.php?id=31751):

I upgraded from my mysql monitor server from 1.3 to 2.0.0.7102. The "Monitor" tab will load initially, but after clicking on a specific server in the list (a 64-bit MySQL server running a 32-bit mysql-monitor-agent), I immediately receive the error below. By logging out, and back in, I can get the Monitor tab working again. We're testing this before rolling it into production, so any help is appreciated. This happens on IE7 and Firefox 3.0.4, with Java Version 6 update 10 on Windows XP SP3.

I'm willing to test upgrading the agent to a 64-bit agent if you think that'll help.

Error Message
java.lang.NullPointerException
Hide Stack Trace
com.mysql.merlin.ui.containers.FileSystemContainer.<init>(FileSystemContainer.java:46)
com.mysql.merlin.ui.containers.FileSystemContainer.toContainers(FileSystemContainer.java:78)
com.mysql.merlin.ui.containers.OperatingSystemContainer.<init>(OperatingSystemContainer.java:98)
com.mysql.merlin.ui.containers.ServerContainer.<init>(ServerContainer.java:147)
com.mysql.merlin.ui.helper.UiManager.fromCache(UiManager.java:96)
com.mysql.merlin.ui.actions.BaseAction.getSelectedServer(BaseAction.java:1229)
com.mysql.merlin.ui.actions.monitor.dashboard.Dashboard.initSelectedServer(Dashboard.java:367)
com.mysql.merlin.ui.actions.monitor.dashboard.Dashboard.executeInner(Dashboard.java:165)
com.mysql.merlin.ui.actions.BaseViewAction.exec(BaseViewAction.java:35)
com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:1715)
com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:1714)
com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:1698)
com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:1713)
sun.reflect.GeneratedMethodAccessor173.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:1)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:1)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.mysql.merlin.ui.interceptors.InitializeInterceptor.intercept(InitializeInterceptor.java:82)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:1)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:1)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.mysql.merlin.ui.interceptors.AuthenticationInterceptor.intercept(AuthenticationInterceptor.java:118)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:1)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:507)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(GzipFilter.java:75)
net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:92)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
com.mysql.util.RequestCounterFilter.doFilter(RequestCounterFilter.java:117)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
com.mysql.merlin.ui.filters.AccessLogFilter.doFilter(AccessLogFilter.java:56)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Unknown Source)

How to repeat:
get (un)lucky on the race to populate/report the filesystem data.
[10 Dec 2008 17:47] Eric Herman
wrote test & pushed fix to trunk;
[11 Dec 2008 20:20] Marcos Palacios
Verified fixed in build 2.0.1.7125.
[14 Jan 2009 13:43] Tony Bedford
An entry was added to the 2.0 changelog:

Although the Monitor tab loaded initially, after a 64-bit MySQL server running a 32-bit MySQL Monitor Agent was clicked, a Null Pointer Exception was generated.
[19 Jan 2009 17:34] Eric Herman
Kris reported this in 2.0.1.7125.

We need to re-test, and I need to verify exactly when the commit to trunk was pushed to the 2.0 release branch.
[22 Jan 2009 21:42] Marcos Palacios
The commit to trunk was pushed to the 2.0 release branch on 1/21/09 17:01 hrs CET. The fix went into the 2.0.4.7138 build.
[22 Jan 2009 21:47] Marcos Palacios
Please document that the fix *actually* went into the 2.0.4.7138 build.
[29 Jan 2009 11:57] Tony Bedford
The changelog entry was modified to reflect that the fix was made in 2.0.4.