Uploaded image for project: 'Sakai'
  1. Sakai
  2. SAK-42348

ClusterEventTracking.postEvent throwing ArrayIndexOutOfBoundsException consistently

    Details

    • Type: Bug
    • Status: Verified
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 20.0
    • Fix Version/s: 20.0
    • Component/s: None
    • Labels:
      None
    • Environment:
      Trunk nightly
    • 19 status:
      Won't Fix
    • 12 status:
      Won't Fix
    • Test Plan:
      Hide

      Please add a Test Plan here.

      Show
      Please add a Test Plan here.

      Description

      I'm seeing this both locally, and on trunk nightly. Simply navigating around sites/tools will produce stack traces in the logs:

      Example 1:

      15-Aug-2019 10:32:00.204 WARN [https-jsse-nio-8088-exec-20] org.sakaiproject.event.impl.ClusterEventTracking.postEvent postEvent, notifyObservers(), event: 0:site.usersite.invalidate@0ee7ccf1-b796-41de-960b-fefb7fac9f91[m, 2]
      java.lang.ArrayIndexOutOfBoundsException: 3
              at org.sakaiproject.announcement.impl.AnnouncementObserver.getChannel(AnnouncementObserver.java:62)
              at org.sakaiproject.announcement.impl.AnnouncementObserver.update(AnnouncementObserver.java:44)
              at java.util.Observable.notifyObservers(Observable.java:159)
              at org.sakaiproject.event.impl.BaseEventTrackingService.notifyObservers(BaseEventTrackingService.java:109)
              at org.sakaiproject.event.impl.ClusterEventTracking.postEvent(ClusterEventTracking.java:330)
              at org.sakaiproject.event.impl.BaseEventTrackingService.post(BaseEventTrackingService.java:284)
              at org.sakaiproject.site.impl.BaseSiteService.setSiteSecurity(BaseSiteService.java:2300)
              at org.sakaiproject.authz.impl.BaseAuthzGroupService.updateSiteSecurity(BaseAuthzGroupService.java:1164)
              at org.sakaiproject.authz.impl.BaseAuthzGroupService.completeSave(BaseAuthzGroupService.java:713)
              at org.sakaiproject.authz.impl.BaseAuthzGroupService.completeExistingGroupSave(BaseAuthzGroupService.java:655)
              at org.sakaiproject.authz.impl.BaseAuthzGroupService.save(BaseAuthzGroupService.java:637)
              at org.sakaiproject.site.util.SiteParticipantHelper.addParticipantsFromMembers(SiteParticipantHelper.java:408)
              at org.sakaiproject.site.util.SiteParticipantHelper.prepareParticipants(SiteParticipantHelper.java:622)
              at org.sakaiproject.site.util.SiteParticipantHelper.prepareParticipants(SiteParticipantHelper.java:541)
              at org.sakaiproject.site.tool.ParticipantFilterHandler.prepareParticipantsWithFilter(ParticipantFilterHandler.java:113)
              at org.sakaiproject.site.tool.SiteAction.getParticipantList(SiteAction.java:10948)
              at org.sakaiproject.site.tool.SiteAction.buildContextForTemplate(SiteAction.java:2032)
              at org.sakaiproject.site.tool.SiteAction.buildMainPanelContext(SiteAction.java:1372)
              at org.sakaiproject.site.tool.SiteAction.buildMainPanelContext(SiteAction.java:1305)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at org.sakaiproject.cheftool.VelocityPortletPaneledAction.toolModeDispatch(VelocityPortletPaneledAction.java:399)
              at org.sakaiproject.site.tool.SiteAction.toolModeDispatch(SiteAction.java:14968)
              at org.sakaiproject.cheftool.ToolServlet.doGet(ToolServlet.java:234)
              at org.sakaiproject.cheftool.VelocityPortletPaneledAction.doGet(VelocityPortletPaneledAction.java:1155)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
              at org.sakaiproject.vm.ComponentServlet.service(ComponentServlet.java:56)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:426)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
              at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
              at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:356)
              at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
              at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:513)
              at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1490)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.doToolBuffer(SiteHandler.java:1229)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.bufferContent(SiteHandler.java:1063)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.doSite(SiteHandler.java:492)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:268)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:156)
              at org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:856)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:475)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
              at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
              at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
              at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
              at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
              at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
              at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
              at java.lang.Thread.run(Thread.java:748)
      

      Example 2:

      15-Aug-2019 10:31:54.592 WARN [https-jsse-nio-8088-exec-17] org.sakaiproject.event.impl.ClusterEventTracking.postEvent postEvent, notifyObservers(), event: 0:pres.begin@/presence/0ee7ccf1-b796-41de-960b-fefb7fac9f91-presence[m, 2]
      java.lang.ArrayIndexOutOfBoundsException: 3
              at org.sakaiproject.announcement.impl.AnnouncementObserver.getChannel(AnnouncementObserver.java:62)
              at org.sakaiproject.announcement.impl.AnnouncementObserver.update(AnnouncementObserver.java:44)
              at java.util.Observable.notifyObservers(Observable.java:159)
              at org.sakaiproject.event.impl.BaseEventTrackingService.notifyObservers(BaseEventTrackingService.java:109)
              at org.sakaiproject.event.impl.ClusterEventTracking.postEvent(ClusterEventTracking.java:330)
              at org.sakaiproject.event.impl.BaseEventTrackingService.post(BaseEventTrackingService.java:303)
              at org.sakaiproject.presence.impl.BasePresenceService.setPresence(BasePresenceService.java:303)
              at org.sakaiproject.presence.impl.BasePresenceService.setPresence(BasePresenceService.java:282)
              at org.sakaiproject.presence.cover.PresenceService.setPresence(PresenceService.java:93)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.doSite(SiteHandler.java:567)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:268)
              at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:156)
              at org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:856)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:475)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
              at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
              at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
              at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
              at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
              at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
              at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
              at java.lang.Thread.run(Thread.java:748)
      

      Example 3:

      15-Aug-2019 10:31:54.355 WARN [https-jsse-nio-8088-exec-16] org.sakaiproject.event.impl.ClusterEventTracking.postEvent postEvent, notifyObservers(), event: 0:user.login@[m, 2]
      java.lang.ArrayIndexOutOfBoundsException: 3
              at org.sakaiproject.announcement.impl.AnnouncementObserver.getChannel(AnnouncementObserver.java:62)
              at org.sakaiproject.announcement.impl.AnnouncementObserver.update(AnnouncementObserver.java:44)
              at java.util.Observable.notifyObservers(Observable.java:159)
              at org.sakaiproject.event.impl.BaseEventTrackingService.notifyObservers(BaseEventTrackingService.java:109)
              at org.sakaiproject.event.impl.ClusterEventTracking.postEvent(ClusterEventTracking.java:330)
              at org.sakaiproject.event.impl.BaseEventTrackingService.post(BaseEventTrackingService.java:284)
              at org.sakaiproject.event.impl.UsageSessionServiceAdaptor.login(UsageSessionServiceAdaptor.java:541)
              at org.sakaiproject.event.impl.UsageSessionServiceAdaptor.login(UsageSessionServiceAdaptor.java:490)
              at org.sakaiproject.login.impl.LoginServiceComponent.authenticate(LoginServiceComponent.java:93)
              at org.sakaiproject.login.tool.SkinnableLogin.doPost(SkinnableLogin.java:350)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:426)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
              at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
              at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:356)
              at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
              at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.help(ActiveToolComponent.java:583)
              at org.sakaiproject.portal.charon.SkinnableCharonPortal.doLogin(SkinnableCharonPortal.java:966)
              at org.sakaiproject.portal.charon.handlers.ReLoginHandler.doGet(ReLoginHandler.java:65)
              at org.sakaiproject.portal.charon.handlers.ReLoginHandler.doPost(ReLoginHandler.java:50)
              at org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1172)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:475)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
              at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
              at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
              at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
              at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
              at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
              at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
              at java.lang.Thread.run(Thread.java:748)
      

      I haven't investigated what's causing this, or if it affects 19.x.

        Gliffy Diagrams

          Zeplin

            Attachments

              Issue Links

                Activity

                  People

                  Assignee:
                  bergarvi Bernardo Garcia Vila
                  Reporter:
                  bjones86 Brian Jones
                  Votes:
                  0 Vote for this issue
                  Watchers:
                  5 Start watching this issue

                    Dates

                    Created:
                    Updated:
                    Resolved:

                      Git Integration