Perhaps you could just throw and catch a stacktrace in both cases, logging to stdout; then force the error and see what you get?
On 7 Nov 2016 3:01 p.m., "Erik de Hair" <[email protected]> wrote: > > On 11/07/2016 02:07 PM, Martin Grigorov wrote: > >> On Mon, Nov 7, 2016 at 12:04 PM, Erik de Hair <[email protected]> wrote: >> >> On 11/07/2016 09:57 AM, Martin Grigorov wrote: >>> >>> There's another frequently occurring exception in the log that occurs >>>> when using the autocomplete field: >>>> >>>> java.lang.IllegalStateExceptiongetOutputStream() has already been >>>> called >>>> for this response org.apache.catalina.connector. >>>> Response#getWriter(Response.java:678) >>>> >>>> This is a bug, but I am not sure where exactly. >>>> >>>>> An application should not try to write both to the Servlet's writer and >>>>> outputStream in the same response. >>>>> >>>>> The easiest way to debug is to put a breakpoint at >>>>> >>>> ResponseFacade#getWriter() and ResponseFacade#getOutputStream() and see >>>> what happens. >>>> >>>> The TextChoiceProvider is writing to the outputstream. Is that what you >>>> >>> wanted to know? >>> >>> I believe this is not the cause. >> The previous stacktrace shows that a redirect is attempted. I don't expect >> a redirect after sending the JSON response for the Select2 component. >> I guess the http request didn't fail with the previous exception after you >> released the breakpoint ? >> > You're right. That's not throwing any exception. I don't know how to debug > this. When I put a breakpoint on getWriter() only, it behaves differently > because the ajax request times out (I believe) and I get a different > exception. > >> >> "http-bio-8080-exec-10@22498" daemon prio=5 tid=0x44 nid=NA runnable >>> java.lang.Thread.State: RUNNABLE >>> at org.apache.catalina.connector.ResponseFacade.getOutputStream >>> (ResponseFacade.java:196) >>> at org.apache.wicket.protocol.http.servlet.ServletWebResponse. >>> write(ServletWebResponse.java:135) >>> at org.apache.wicket.protocol.http.HeaderBufferingWebResponse.w >>> rite(HeaderBufferingWebResponse.java:196) >>> at org.apache.wicket.request.Response$StreamAdapter.write(Respo >>> nse.java:148) >>> at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) >>> at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282) >>> at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) >>> - locked <0x57e8> (a java.io.OutputStreamWriter) >>> at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:135) >>> at java.io.OutputStreamWriter.write(OutputStreamWriter.java:220) >>> at java.io.Writer.write(Writer.java:157) >>> at org.apache.wicket.ajax.json.JSONWriter.key(JSONWriter.java: >>> 212) >>> at org.wicketstuff.select2.TextChoiceProvider.toJson(TextChoice >>> Provider.java:38) >>> at org.wicketstuff.select2.AbstractSelect2Choice.onResourceRequ >>> ested(AbstractSelect2Choice.java:473) >>> at org.wicketstuff.select2.Select2Choice.onResourceRequested(Se >>> lect2Choice.java:36) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAcc >>> essorImpl.java:-1) >>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >>> ssorImpl.java:62) >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> at java.lang.reflect.Method.invoke(Method.java:498) >>> at org.apache.wicket.RequestListenerInterface.internalInvoke(Re >>> questListenerInterface.java:258) >>> at org.apache.wicket.RequestListenerInterface.invoke(RequestLis >>> tenerInterface.java:216) >>> at org.apache.wicket.core.request.handler.ListenerInterfaceRequ >>> estHandler.invokeListener(ListenerInterfaceRequestHandler.java:243) >>> at org.apache.wicket.core.request.handler.ListenerInterfaceRequ >>> estHandler.respond(ListenerInterfaceRequestHandler.java:236) >>> at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor >>> .respond(RequestCycle.java:890) >>> at org.apache.wicket.request.RequestHandlerStack.execute(Reques >>> tHandlerStack.java:64) >>> at org.apache.wicket.request.cycle.RequestCycle.execute(Request >>> Cycle.java:261) >>> at org.apache.wicket.request.cycle.RequestCycle.processRequest( >>> RequestCycle.java:218) >>> at org.apache.wicket.request.cycle.RequestCycle.processRequestA >>> ndDetach(RequestCycle.java:289) >>> at org.apache.wicket.protocol.http.WicketFilter.processRequestC >>> ycle(WicketFilter.java:259) >>> at org.apache.wicket.protocol.http.WicketFilter.processRequest( >>> WicketFilter.java:201) >>> at org.apache.wicket.protocol.http.WicketFilter.doFilter(Wicket >>> Filter.java:282) >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:241) >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:208) >>> at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChai >>> n(AbstractShiroFilter.java:449) >>> at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(Abst >>> ractShiroFilter.java:365) >>> at org.apache.shiro.subject.support.SubjectCallable.doCall( >>> SubjectCallable.java:90) >>> at org.apache.shiro.subject.support.SubjectCallable.call(Subjec >>> tCallable.java:83) >>> at org.apache.shiro.subject.support.DelegatingSubject.execute( >>> DelegatingSubject.java:383) >>> at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInt >>> ernal(AbstractShiroFilter.java:362) >>> at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(O >>> ncePerRequestFilter.java:125) >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:241) >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:208) >>> at org.apache.catalina.core.StandardWrapperValve.invoke(Standar >>> dWrapperValve.java:220) >>> at org.apache.catalina.core.StandardContextValve.invoke(Standar >>> dContextValve.java:122) >>> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(A >>> uthenticatorBase.java:503) >>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHo >>> stValve.java:170) >>> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo >>> rtValve.java:103) >>> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogVa >>> lve.java:950) >>> at org.apache.catalina.core.StandardEngineValve.invoke(Standard >>> EngineValve.java:116) >>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd >>> apter.java:421) >>> at org.apache.coyote.http11.AbstractHttp11Processor.process(Abs >>> tractHttp11Processor.java:1070) >>> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler >>> .process(AbstractProtocol.java:611) >>> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run( >>> JIoEndpoint.java:314) >>> - locked <0x5836> (a org.apache.tomcat.util.net.SocketWrapper) >>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >>> Executor.java:1142) >>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >>> lExecutor.java:617) >>> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable. >>> run(TaskThread.java:61) >>> at java.lang.Thread.run(Thread.java:745) >>> >>> org.apache.catalina.connector.ResponseFacade#getWriter(Respo >>>>> >>>>>> nseFacade.java:213) >>>>>> org.apache.wicket.protocol.http.servlet.ServletWebResponse#s >>>>>> endRedirect(ServletWebResponse.java:280) >>>>>> org.apache.wicket.protocol.http.HeaderBufferingWebResponse#s >>>>>> endRedirect(HeaderBufferingWebResponse.java:117) >>>>>> org.apache.wicket.request.handler.render.WebPageRenderer#red >>>>>> irectTo(WebPageRenderer.java:176) >>>>>> org.apache.wicket.request.handler.render.WebPageRenderer#res >>>>>> pond(WebPageRenderer.java:242) >>>>>> org.apache.wicket.core.request.handler.RenderPageRequestHand >>>>>> ler#respond(RenderPageRequestHandler.java:175) >>>>>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor >>>>>> #respond(RequestCycle.java:890) >>>>>> org.apache.wicket.request.RequestHandlerStack#execute(Reques >>>>>> tHandlerStack.java:64) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:310) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:319) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:319) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:319) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:319) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:319) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:319) >>>>>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >>>>>> nRequestHandler(RequestCycle.java:319) >>>>>> org.apache.wicket.request.cycle.RequestCycle#processRequest( >>>>>> RequestCycle.java:233) >>>>>> org.apache.wicket.request.cycle.RequestCycle#processRequestA >>>>>> ndDetach(RequestCycle.java:289) >>>>>> org.apache.wicket.protocol.http.WicketFilter#processRequestC >>>>>> ycle(WicketFilter.java:259) >>>>>> org.apache.wicket.protocol.http.WicketFilter#processRequest( >>>>>> WicketFilter.java:201) >>>>>> org.apache.wicket.protocol.http.WicketFilter#doFilter(Wicket >>>>>> Filter.java:282) >>>>>> org.apache.catalina.core.ApplicationFilterChain#internalDoFi >>>>>> lter(ApplicationFilterChain.java:241) >>>>>> org.apache.catalina.core.ApplicationFilterChain#doFilter(App >>>>>> licationFilterChain.java:208) >>>>>> org.apache.shiro.web.servlet.AbstractShiroFilter#executeChai >>>>>> n(AbstractShiroFilter.java:449) >>>>>> org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(Abst >>>>>> ractShiroFilter.java:365) >>>>>> org.apache.shiro.subject.support.SubjectCallable#doCall(Subj >>>>>> ectCallable.java:90) >>>>>> org.apache.shiro.subject.support.SubjectCallable#call(Subjec >>>>>> tCallable.java:83) >>>>>> org.apache.shiro.subject.support.DelegatingSubject#execute(D >>>>>> elegatingSubject.java:383) >>>>>> org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInt >>>>>> ernal(AbstractShiroFilter.java:362) >>>>>> org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(O >>>>>> ncePerRequestFilter.java:125) >>>>>> org.apache.catalina.core.ApplicationFilterChain#internalDoFi >>>>>> lter(ApplicationFilterChain.java:241) >>>>>> org.apache.catalina.core.ApplicationFilterChain#doFilter(App >>>>>> licationFilterChain.java:208) >>>>>> org.apache.catalina.core.StandardWrapperValve#invoke(Standar >>>>>> dWrapperValve.java:220) >>>>>> org.apache.catalina.core.StandardContextValve#invoke(Standar >>>>>> dContextValve.java:122) >>>>>> org.apache.catalina.authenticator.AuthenticatorBase#invoke(A >>>>>> uthenticatorBase.java:503) >>>>>> org.apache.catalina.core.StandardHostValve#invoke(StandardHo >>>>>> stValve.java:170) >>>>>> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorRepo >>>>>> rtValve.java:103) >>>>>> org.apache.catalina.valves.AccessLogValve#invoke(AccessLogVa >>>>>> lve.java:950) >>>>>> org.apache.catalina.core.StandardEngineValve#invoke(Standard >>>>>> EngineValve.java:116) >>>>>> org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAd >>>>>> apter.java:421) >>>>>> org.apache.coyote.ajp.AjpProcessor#process(AjpProcessor.java:190) >>>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler >>>>>> #process(AbstractProtocol.java:611) >>>>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor#run(J >>>>>> IoEndpoint.java:314) >>>>>> java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPool >>>>>> Executor.java:1142) >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoo >>>>>> lExecutor.java:617) >>>>>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#r >>>>>> un(TaskThread.java:61) >>>>>> java.lang.Thread#run(Thread.java:745) >>>>>> >>>>>> The autocomplete works as expected so it doesn't trouble the user. >>>>>> Anybody else getting this exception or does it depend on our >>>>>> configuration? >>>>>> >>>>>> Erik >>>>>> >>>>>> >>>>>> >>>>>> >
