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]
                

Reply via email to