spring-mvc-chat icon indicating copy to clipboard operation
spring-mvc-chat copied to clipboard

Join Chat, Leave Chat, Join Chat, Post Message causes IllegalArgumentException: Invalid message index

Open rwinch opened this issue 13 years ago • 3 comments

To reproduce

  • Start the application
  • Type http://localhost:8080/spring-mvc-chat/ into the browser (I use Chrome) and press enter
  • Type in a user (I use "a") and press "Join Chat"
  • Press the "Leave Chat" button
  • Type in a different user (I use "b") and press "Join Chat"
  • Type in a message (I use "1") and press "Post"
  • The result is an exception similar to the following (message index = 2 and messages.size() = 1):
15:43:04 [http-bio-8080-exec-10] DEBUG o.s.web.servlet.DispatcherServlet - Could not complete request
java.lang.IllegalArgumentException: Invalid message index
    at org.springframework.util.Assert.isTrue(Assert.java:65) ~[spring-core-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.samples.async.chat.InMemoryChatRepository.getMessages(InMemoryChatRepository.java:35) ~[InMemoryChatRepository.class:na]
    at org.springframework.samples.async.chat.ChatController.getMessages(ChatController.java:39) ~[ChatController.class:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_32]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_32]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_32]
    at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_32]
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) ~[spring-web-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) ~[spring-web-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) ~[spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:757) ~[spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:698) ~[spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) ~[spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) ~[spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) ~[spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:911) [spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:807) [spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) [servlet-api.jar:na]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:792) [spring-webmvc-3.2.0.BUILD-SNAPSHOT.jar:3.2.0.BUILD-SNAPSHOT]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) [servlet-api.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) [catalina.jar:7.0.32]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.32]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) [catalina.jar:7.0.32]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) [catalina.jar:7.0.32]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [catalina.jar:7.0.32]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) [catalina.jar:7.0.32]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) [catalina.jar:7.0.32]
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) [catalina.jar:7.0.32]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) [catalina.jar:7.0.32]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) [catalina.jar:7.0.32]
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) [tomcat-coyote.jar:7.0.32]
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) [tomcat-coyote.jar:7.0.32]
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) [tomcat-coyote.jar:7.0.32]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_32]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_32]
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_32]

rwinch avatar Oct 29 '12 21:10 rwinch

Using Tomcat 7.0.32 or higher?

cmadsen avatar Aug 23 '13 12:08 cmadsen

@cmadsen - In all honesty I'm not entirely sure what version I was using. Are you trying to reproduce this or having similar issues?

rwinch avatar Aug 23 '13 15:08 rwinch

I got a similar stack trace until I switched to tomcat 7.0.32

cmadsen avatar Aug 26 '13 07:08 cmadsen