Bug #47181 | random NUllPointerException sometimes after dashboard login | ||
---|---|---|---|
Submitted: | 7 Sep 2009 18:50 | Modified: | 20 Apr 2010 15:28 |
Reporter: | Shannon Wade | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Enterprise Monitor: Web | Severity: | S3 (Non-critical) |
Version: | 2.1.0.1096, 2.2.0.1651 | OS: | Linux |
Assigned to: | Josh Sled | CPU Architecture: | Any |
[7 Sep 2009 18:50]
Shannon Wade
[16 Mar 2010 15:05]
Enterprise Tools JIRA Robot
Josh Sled writes: See EM-4188 for more reproduction details. Note the last few stack frames are slightly different, but I believe this is just the new form of the same problem we've been hitting for a long time. Should probably work to fix this in 2.2 ... either 2.2.0 or a maint release. com.mysql.etools.monitor.rest.InventoryCollaborator$InstanceAttributeTimestamp.<init>(InventoryCollaborator.java:355) ...rest.MapCacheInstAttrStrategy.get(MapCacheInstAttrStrategy.java:87) ...rest.InventoryCollaborator.getInstanceAttribute(InventoryCollaborator.java:215) ...rest.InventoryCollaborator.asList(InventoryCollaborator.java:231) ...rest.InventoryCollaborator.saveValues(InventoryCollaborator.java:207) ...pom.hib.GenericInvObj.save(GenericInvObj.java:48) ...pom.InvObj.save(InvObj.java:214) ...pom.InvObj.save(InvObj.java:219) ...pom.InvObj.saveAttribute(InvObj.java:227) ...bo.Server.setCachedDisplayName(Server.java:1053) ...bo.Server.cacheDisplaynameIfHostnameValid(Server.java:477) ...bo.Server.getDisplayName(Server.java:435) com.mysql.merlin.ui.containers.ServerContainer.<init>(ServerContainer.java:119) com.mysql.merlin.ui.helper.UiManager.fromCache(UiManager.java:106) com.mysql.merlin.ui.helper.UiManager.fromCache(UiManager.java:96) com.mysql.merlin.ui.containers.GroupContainer.<init>(GroupContainer.java:84) com.mysql.merlin.ui.containers.GroupContainer.<init>(GroupContainer.java:63) com.mysql.merlin.ui.containers.GroupContainer.<init>(GroupContainer.java:59) com.mysql.merlin.ui.helper.UiManager.fromCache(UiManager.java:117) com.mysql.merlin.ui.actions.BaseAction.getSortedGroups(BaseAction.java:683) com.mysql.merlin.ui.actions.monitor.dashboard.HeatChart.executeInner(HeatChart.java:53) com.mysql.merlin.ui.actions.BaseViewAction.timeLogExecInner(BaseViewAction.java:80) com.mysql.merlin.ui.actions.BaseViewAction.access$000(BaseViewAction.java:29) com.mysql.merlin.ui.actions.BaseViewAction$1.call(BaseViewAction.java:72) com.mysql.merlin.ui.actions.BaseViewAction$1.call(BaseViewAction.java:68) com.mysql.etools.monitor.pom.hib.HibernateExecutor$2.execute(HibernateExecutor.java:160) ...pom.hib.HibernateExecutor.asTransaction(HibernateExecutor.java:224) ...asTransaction(HibernateExecutor.java:180) ...asReadOnlyTransaction(HibernateExecutor.java:166) ...pom.hib.SchemaMaintenanceExecutor.asReadOnlyTransaction(SchemaMaintenanceExecutor.java:221) ...pom.hib.HibPersistence.asReadOnlyTransaction(HibPersistence.java:1559) com.mysql.merlin.ui.actions.BaseViewAction.openSessionInViewTxn(BaseViewAction.java:67) com.mysql.merlin.ui.actions.BaseViewAction.exec(BaseViewAction.java:50) com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:2031) com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:2030) com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:2014) com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:2029) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.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) ...DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) ...interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) ...DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) ...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:113) com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) ...DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:1) ...util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) ...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:81) 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.merlin.server.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) ...ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) ...StandardWrapperValve.invoke(StandardWrapperValve.java:233) ...StandardContextValve.invoke(StandardContextValve.java:175) ...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) ....Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) java.lang.Thread.run(Unknown Source)
[16 Mar 2010 23:24]
Enterprise Tools JIRA Robot
Carsten Segieth writes: after reading Shannon's comment about *displayname* changes I thought it might be 'interesting information' that in my tests the "displayname = ..." in the agent-instance.ini is set for all agents, so there are 'a lot of' such changes pretty fast after another.
[17 Mar 2010 12:35]
Enterprise Tools JIRA Robot
Carsten Segieth writes: Just got the NPE a 2nd time in the 2nd attempt of setting up the 'usual' agents platform tests with build 2.2.0.1651.
[17 Mar 2010 20:21]
Enterprise Tools JIRA Robot
Josh Sled writes: revno: 7981 revision-id: jsled@asynchronous.org-20100317201720-tk4qcm1l6pdeuqh5 parent: merlin@dl380-g5-a.mysql.com-20100315203154-yrvbnd8ql23x6u0b committer: Josh Sled <jsled@asynchronous.org> branch nick: local timestamp: Wed 2010-03-17 16:17:20 -0400 message: EM-3580: Make the inability for a [Hib]InventoryObject to ensure an attribute is supported an exceptional condition. Catch this condition in the one observed and "exp ected" race condition where the lazily-generated server display name is potentially generated and "saved" in a read-only page view context.
[20 Apr 2010 15:28]
MC Brown
A note has been added to the 2.2.0 changelog: Occasional Null Pointer Exception errors could be raised after an initial login to the dashboard due to problems determining the correct name to use for displaying the list of servers.