The file that contains the error is synapse-nhttp-transport/ServerHandler.java:209 int bytesWritten = outBuf.produceContent(encoder); where the outBuf is ContentOutputBuffer outBuf = (ContentOutputBuffer) context.getAttribute(RESPONSE_SOURCE_BUFFER);
In this case when the outBuf is null, I think a possible solution to fix this is to just close the connection. What do you think? Thanks, Daniel -----Original Message----- From: Ruwan Linton [mailto:[email protected]] Sent: Thursday, September 24, 2009 11:53 AM To: [email protected] Subject: Re: HttpCoreNIOListener$1 - System may be unstable: IOReactor encountered a runtime exception : null Let me get back to you after testing this scenario. Thanks for the input Daniel. You may also raise a JIRA issue for this. Thanks, Ruwan On Thu, Sep 24, 2009 at 10:31 PM, Moise, Daniel <[email protected]>wrote: > Hi Ruwan, > > I've tried the last changes in the 1.3 branch, and the problem is still > there. To test it, we've just run a 'telnet localhost 8280'. > Based on your answer, it seems that you guys have a solution for this. > Could you send me a patch or the changes for that. You don't have to > necessarily check them in the branch for now. > > Thanks, > Daniel > > -----Original Message----- > From: Ruwan Linton [mailto:[email protected]] > Sent: Wednesday, September 23, 2009 6:04 PM > To: [email protected] > Subject: Re: HttpCoreNIOListener$1 - System may be unstable: IOReactor > encountered a runtime exception : null > > Hi Daniel, > > This should be fixed now on the trunk, were you trying this on the > trunk? > Can you please verify this on a SNAPSHOT build? > > This will be available with the 1.3 release. > > Thanks, > Ruwan > > On Wed, Sep 23, 2009 at 11:24 PM, Moise, Daniel > <[email protected]>wrote: > > > Hi, > > > > I've found the same problem as the one listed below - every time a > > malformed request is given to Synapse, an infinite loop will be > > triggered making the Synapse server sluggish, and consuming the entire > > log file (in case the output is redirected). I've noticed that the > > problem might get fixed. Could you please let me know if the problem > was > > fixes, and if yes in which release. > > > > Thanks, > > Daniel > > > > > > Hi All > > > > I guess this boils down to how we deal with broken, > > partial, and even > > possibly malicious requests in the NIO transport.. I > > will fix the issue > > pointed to by Andreas and Murali ASAP as I consider > this > > critical. > > > > Murali - I believe you should plan on updating to > > Synapse 1.3 in the > > near future. There are a few issues we have fixed over > > the past year > > that should be very important for any production > > deployment. As I > > believe your environment / configuration is > > straightforward, so the > > migration should be quite trivial too - Could you also > > raise an issue on > > the JIRA? > > > > This runtime exception is caught in > > BaseIOReactor#writable and delegated to the > > registered exception handler (in our case an anonymous > > inner class of > > HttpCoreNIOListener with the following implementation: > > > > ioReactor.setExceptionHandler(new > > IOReactorExceptionHandler() { > > public boolean handle(IOException > > ioException) { > > log.warn("System may be unstable: > > IOReactor encountered a > > checked exception : " > > + ioException.getMessage(), > > ioException); > > return true; > > } > > > > public boolean handle(RuntimeException > > runtimeException) { > > log.warn("System may be unstable: > > IOReactor encountered a > > runtime exception : " > > + > > runtimeException.getMessage(), runtimeException); > > return true; > > } > > }); > > > > I wondering a bit about the return value. Taken from > the > > JavaDoc of the > > interface IOReactorExceptionHandler#handle > > > > True if it is safe to ignore the exception and continue > > execution of the I/O > > reactor; if the I/O reactor must throw {...@link > > RuntimeException} and terminate > > > > Hmm, is it really safe to proceed here? We do not test > > any detail of the > > RuntimeException. To me this looks wrong. > > > > Yes, we return true since the later versions of > HttpCore > > dump some > > information and try to continue in the face of RT > > exceptions. What I > > feel is that we need to enhance the NIO transport to be > > stable in the > > face of broken, partial and malicious requests so that > > RT exceptions > > will not be thrown in such cases, and we will drop the > > connection with a > > WARN > > > > cheers > > asankha > > > > -- > > Asankha C. Perera > > AdroitLogic, http://adroitlogic.org > > > > http://esbmagic.blogspot.com > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: > > [email protected] > > > > > > > -- > Ruwan Linton > Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb > WSO2 <http://wso2.org/esb%0AWSO2> Inc.; http://wso2.org > email: [email protected]; cell: +94 77 341 3097 > blog: http://ruwansblog.blogspot.com > -- Ruwan Linton Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb WSO2 Inc.; http://wso2.org email: [email protected]; cell: +94 77 341 3097 blog: http://ruwansblog.blogspot.com
