Bug #46229 Stack trace when trying to open "last" link on a log page
Submitted: 16 Jul 2009 14:49 Modified: 6 Nov 2009 11:36
Reporter: Carsten Segieth Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Enterprise Monitor: Web Severity:S3 (Non-critical)
Version:2.1.0.1077 OS:Any
Assigned to: Josh Sled CPU Architecture:Any

[16 Jul 2009 14:49] Carsten Segieth
Description:
When I try to open the 'last' link on my 'Infrastructure Logs' I get this stack trace:

Error Message
fromIndex(400) > toIndex(31)

Toggle Stack Trace
fromIndex(400) > toIndex(31)
java.util.SubList.<init>(Unknown Source)
java.util.RandomAccessSubList.<init>(Unknown Source)
java.util.AbstractList.subList(Unknown Source)
com.mysql.etools.monitor.bo.log.FileAppender.getLogContents(FileAppender.java:592)
com.mysql.etools.monitor.bo.log.Logging.collectLogEntries(Logging.java:187)
com.mysql.etools.monitor.bo.log.Logging.collectLogEntries(Logging.java:196)
com.mysql.etools.monitor.bo.log.Logging.collectLogEntries(Logging.java:196)
com.mysql.etools.monitor.bo.log.Logging.getLogContents(Logging.java:419)
com.mysql.merlin.ui.actions.settings.logs.ShowLog.executeInner(ShowLog.java:387)
com.mysql.merlin.ui.actions.BaseViewAction.timeLogExecInner(BaseViewAction.java:70)
com.mysql.merlin.ui.actions.BaseViewAction.access$000(BaseViewAction.java:29)
com.mysql.merlin.ui.actions.BaseViewAction$1.call(BaseViewAction.java:62)
com.mysql.merlin.ui.actions.BaseViewAction$1.call(BaseViewAction.java:61)
com.mysql.etools.monitor.pom.hib.HibernateExecutor$2.execute(HibernateExecutor.java:142)
com.mysql.etools.monitor.pom.hib.HibernateExecutor.asTransaction(HibernateExecutor.java:188)
com.mysql.etools.monitor.pom.hib.HibernateExecutor.asReadOnlyTransaction(HibernateExecutor.java:148)
com.mysql.etools.monitor.pom.hib.SchemaMaintenanceExecutor.asReadOnlyTransaction(SchemaMaintenanceExecutor.java:214)
com.mysql.etools.monitor.pom.hib.HibPersistence.asReadOnlyTransaction(HibPersistence.java:1379)
com.mysql.merlin.ui.actions.BaseViewAction.openSessionInViewTxn(BaseViewAction.java:60)
com.mysql.merlin.ui.actions.BaseViewAction.exec(BaseViewAction.java:46)
com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:1909)
com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:1908)
com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:1892)
com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:1907)
sun.reflect.GeneratedMethodAccessor180.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: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.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)

I have a setting of 100 rows per page, the main 'Logs' page show "477 Entries" for this log, but when opening the "Infrastructure Logs" I see only 31 lines on the page (see attached printout) where "[ 1 to 100 of 477 ] 1 2 3 4 5 next »last »" is shown in the header.

How to repeat:
- fresh install of svc mgr 1077
- I use German-Swiss as locale and Switzerland(Zürich) for the time zome
- started ~50 agents, a lot are 'remote' monitoring and lead to "E2101: ChildDoesNotExistAndAttributeException: [null, os.cpu, all, cpu_sys]" with a lot of corresponding messages "Last message repeated <nnn> times".
- open Settings-->Logs page
- open the "Infrastructure Log"
[17 Jul 2009 8:50] Enterprise Tools JIRA Robot
Carsten Segieth writes: 
verified with a fresh 1078 install where this time only 1 agent had scheduled all rules up to now. This time there were ~168 entries in the log and with a "100" as filter I get "Error Message: fromIndex(100) > toIndex(27)"
[15 Sep 2009 14:03] Enterprise Tools JIRA Robot
Josh Sled writes: 
revno: 7473
revision-id: jsled@asynchronous.org-20090914181348-zbiulsrhgibti6cv
parent: jsled@asynchronous.org-20090911201346-gqjnpymqws117sys
committer: Josh Sled <jsled@asynchronous.org>
branch nick: 2.1-bugs
timestamp: Mon 2009-09-14 14:13:48 -0400
message:
  EM-3457: bounds saftey on "last" log link; this solves the symptom, not the problem
[1 Oct 2009 15:00] Enterprise Tools JIRA Robot
Keith Russell writes: 
Patch installed in versions => 2.1.1.1104 & versions => 2.2.0.1501.
[3 Nov 2009 16:31] Enterprise Tools JIRA Robot
Carsten Segieth writes: 
tested OK in 2.1.1.1104
[6 Nov 2009 11:36] Tony Bedford
An entry has been added to the 2.1.1 changelog:

If the Last link was clicked on the Infrastructure logs page, the following error was generated:

Error Message
fromIndex(400) > toIndex(31)