Bug #37954 java.lang.NullPointerException when creating server group
Submitted: 8 Jul 2008 2:22 Modified: 21 Jul 2008 12:32
Reporter: Akiko Yonemura Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Enterprise Monitor Severity:S3 (Non-critical)
Version:1.3.2.9126 OS:Any
Assigned to: Sloan Childers CPU Architecture:Any
Tags: japanese, locale, mem

[8 Jul 2008 2:22] Akiko Yonemura
Description:
After creating the group from [Setting] - [Manage Servers] - [create group] when the user Locale is Japanese, the error message "java.lang.NullPointerException" occured at the [Monitor] tab.

The stacktrace which shows under "java.lang.NullPointerException" message fellows:

com.mysql.merlin.nls.NLS.getString(NLS.java:146)
com.mysql.merlin.ui.actions.BaseAction.getGroupName(BaseAction.java:197)
com.mysql.merlin.ui.helper.HeatChartObject$HeatChartGroup.<init>(HeatChartObject.java:306)
com.mysql.merlin.ui.helper.HeatChartObject.groupPopulateHeatChart(HeatChartObject.java:210)
com.mysql.merlin.ui.helper.HeatChartObject.<init>(HeatChartObject.java:72)
com.mysql.merlin.ui.actions.monitor.dashboard.Dashboard.execute(Dashboard.java:217)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
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:223)
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:223)
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:60)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
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:93)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
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:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
java.lang.Thread.run(Thread.java:595)

<workaround>
Here is the workaround when the locale is Japanese. 
1. Go to [Setting] and then [User Preferences]
2. Change [Locale] from Japanese to English
3. Go to [Monitor]

How to repeat:
1. Set the LANG of the user who starts MEM server
shell> export LANG=ja_JP.UTF-8
2. Start MEM server
shell> enterprise/monitor/mysqlmonitorctl.sh start
3. Go to [Setting] - [User Preferences] and then check if [Locale] is "Japanese"(日本語)
4. Go to [Setting] - [Manage Servers] and then create the new group and add the server by clicking [create group].
5. Go to [Monitor] 
"java.lang.NullPointerException" should show up.
[10 Jul 2008 18:40] Sloan Childers
r9155 ga-1.3.2
[11 Jul 2008 20:35] Bill Weber
setting Toru as tester since he would most likely have a test setup to verify the fix
[18 Jul 2008 16:12] Toru Sugihara
I verified it is fixed with 1.3.3.9168 on Linux.
[21 Jul 2008 12:32] Tony Bedford
An entry has been added to the 1.3.3 changelog:

When creating a server group a java.lang.NullPointerException was generated if the user locale was Japanese.