[noPoll] Fixed -- Re: Websocket disconnect issues

Francis Brosnan Blázquez francis.brosnan en aspl.es
Lun Mayo 16 10:47:08 CEST 2016


Hi Rahul,
Just let you know I've pushed some additional changes to noPoll's
github (rev 265 )
that should fix this issue. I've also added additional reg tests
(test_31, 32, 33, 34, and 35)
to simulate different stop/pause conditions and got them all working,
Let's us know if this fixes your issue,
Best Regards,
> Hello Rahul,
> 
> Received. I'll you know something,
> 
> Best Regards,
> 
> > Hello Francis,
> > 
> >  
> > 
> > My test scenario just hit the condition. The connection however got
> > broken with the following error message:
> > 
> >  
> > 
> > Failed to get next 2 bytes to read header from the wire, failed to
> > received content, shutting down id=2 the connection, errno=0 (No
> > error)
> > 
> >  
> > 
> > Since the number of bytes read was not printed, I am guessing it
> > was 1. 
> > 
> > The receive call did not actually fail but possibly delivered 1
> > byte.
> > 
> >  
> > 
> > Regards,
> > 
> >  
> > 
> > Rahul
> > 
> >  
> > 
> >  
> > 
>  
> From: Kale, Rahul 
> Sent: Friday, April 22, 2016 10:04 AM
> To: 'francis.brosnan en aspl.es'
> Cc: nopoll en lists.aspl.es
> Subject: RE: Fixed -- Re: [noPoll] Websocket disconnect issues
> 
> 
>  
>  
> 
> Hello,
> 
>  
> 
> I am currently running the test scenario but the failure condition
> has not happened yet
> 
> in the first 12 hours. Sometimes it takes 2-3 days to reproduce. I
> will let you
> 
> know when it happens next.
> 
>  
> 
> Besides the SSL twist, even for plain TCP connection I believe this
> situation can occur.
> 
> Due to maximum transmission unit (MTU) limitations the sender can
> break up messages
> 
> at arbitrary byte boundaries. If the receiver is slow to read, or if
> the network
> 
> bandwidth is limited, a fast sender will accumulate data to send. It
> will send
> 
> piled up data (multiple websocket messages in our case) in chunks of
> MTU size
> 
> and end up breaking messages at arbitrary byte boundaries.
> 
>  
> 
> You are totally correct in saying that the OS will not deliver bytes
> collected
> 
> from the wire to user space in a broken fashion. But the OS on the
> sender can put the
> 
> bytes on the wire in arbitrary pieces (TCP segments) depending on
> transient network conditions, 
> 
> acks received, TCP sliding window size, round trip time, MTU size
> etc. 
> 
> I am no expert at this, but the few TCP protocols I have implemented
> I have always had to account for this
> 
> before the application achieved 24/7 reliability.  For non-blocking
> sockets this is not trivial to achieve.
> 
> For blocking sockets, it is much easier.
> 
>  
> 
> I am glad that you are considering fixing this properly. It will make
> the nopoll
> 
> library more robust for everyone :)
> 
>  
> 
>  
> 
> Thanks,
> 
>  
> 
> Rahul
> 
>  
> 
>  
> From: Francis Brosnan Blázquez [mailto:francis.brosnan en aspl.es> Sent: Friday, April 22, 2016 5:52 AM
> To: Kale, Rahul
> Cc: nopoll en lists.aspl.es
> Subject: Re: Fixed -- Re: [noPoll] Websocket disconnect issues
> 
> 
>  
>  
> 
> Hi Raul,
> 
> It is going to take us a bit to deeply resolve the issue and
> more precisely, to support websockets peers sending byte
> by byte important parts of the headers that should be received
> at once...
> 
> In any case, I was wondering if you did have time to check
> latest modifications... did them resolve the issue? Is it more
> stable your test case?
> 
> Please, let us know how the latest changes performs in your
> scenario,
> 
> Best Regards,
> 
> 
> 
> Hello,
> 
> Thanks very much for your excellent analysis. It is indeed surprising
> that such a small packet seems to be delivered in chunks
> occasionally. Perhaps the fact that this is via SSL is compounding
> the issue. The original websocket provided on the server side is
> proxied via Apache Webserver which adds an SSL layer.
> 
> I see that the noPoll code is already handling broken headers for the
> first two bytes and also for 4 bytes of mask. I was assuming that you
> have already faced similar issues in the past.
> 
> I really appreciate your efforts in chasing these issues and fixing
> them promptly.
> 
> Regards,
> 
> Rahul
> 
> 
> 
> 
> This message is subject to the following terms and conditions: MAIL
> DISCLAIMER<http://www.barco.com/en/maildisclaimer>
> 
>  
> 
>   
> -- 
> Francis Brosnan Blázquez - ASPL
> 91 134 14 22 - 91 134 14 45 - 91 116 07 57
>  
> http://aspl.es
> http://asplhosting.com
> http://twitter.com/aspl_es
> http://twitter.com/asplhosting
>  
> AVISO LEGAL
>  
> Este mensaje se dirige exclusivamente a su destinatario. Los datos
> incluidos en el presente correo son confidenciales y sometidos a
> secreto
> profesional, se prohíbe divulgarlos, en virtud de las leyes vigentes.
> Si
> usted no lo es y lo ha recibido por error o tiene conocimiento del
> mismo
> por cualquier motivo, le rogamos que nos lo comunique por este medio
> y
> proceda a destruirlo o borrarlo.
>  
> En virtud de lo dispuesto en la Ley Orgánica 15/1999, de 13 de
> diciembre, de Protección de Datos de Carácter Personal, le informamos
> de
> que sus datos de carácter personal, recogidos de fuentes accesibles
> al
> público o datos que usted nos ha facilitado previamente, proceden de
> bases de datos propiedad de Advanced Software Production Line, S.L.
> (ASPL). No obstante, usted puede ejercitar sus derechos de acceso,
> rectificación, cancelación y oposición dispuestos en la mencionada
> Ley
> Orgánica, notificándolo por escrito a:
> ASPL - Protección Datos, C/Antonio Suárez 10 A-102, 28802, Alcalá de
> Henares (Madrid).
> 
>  
> 
> 
>  
> This message is subject to the following terms and conditions: MAIL
> DISCLAIMER
> _______________________________________________
> noPoll mailing list
> noPoll en lists.aspl.es
> http://lists.aspl.es/cgi-bin/mailman/listinfo/nopoll
>  
>  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.aspl.es/pipermail/nopoll/attachments/20160516/813f17bb/attachment.html>


Más información sobre la lista de distribución noPoll