Esta sección fue analizado por especialistas así se garantiza la veracidad de nuestro post.
Solución:
La razón más común que he tenido para una “tubería rota” es que una máquina (de un par que se comunica a través de un zócalo) cerró su extremo del zócalo antes de que se completara la comunicación. Aproximadamente la mitad de ellos se debieron a que el programa que se comunicaba en ese socket había terminado.
Si el programa que envía los bytes los envía e inmediatamente apaga el socket o se cierra solo, es posible que el socket deje de funcionar antes de que los bytes hayan sido transmitidos y leídos.
Intente poner pausas en cualquier lugar donde esté cerrando el socket y antes de permitir que el programa finalice para ver si eso ayuda.
FYI: “tubería” y “enchufe” son términos que a veces se usan indistintamente.
Estoy de acuerdo con @arcy, el problema está en el lado del cliente, en mi caso fue debido a nginx, permítanme elaborar, estoy usando nginx como interfaz (para poder distribuir la carga, SSL, etc.) y usando proxy_pass http://127.0.0.1:8080
para reenviar las solicitudes apropiadas a tomcat.
Hay un valor predeterminado para la variable nginx proxy_read_timeout
de 60 eso debería ser suficiente, pero en algunos momentos pico mi configuración fallaba con el java.io.IOException: tubería rota cambiar el valor ayudará hasta que se pueda solucionar la causa raíz (60s debería ser suficiente).
NOTA: Hice una nueva respuesta para poder ampliar un poco más mi caso (fue la única mención que encontré sobre este error en Internet después de buscar mucho)
Básicamente, lo que sucede es que su usuario está cerrando la pestaña del navegador o navegando a una página diferente antes de que se complete la comunicación. Su servidor web (Jetty) genera esta excepción porque no puede enviar los bytes restantes.
org.eclipse.jetty.io.EofException: null
! at org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:914)
! at org.eclipse.jetty.http.HttpGenerator.complete(HttpGenerator.java:798)
! at org.eclipse.jetty.server.AbstractHttpConnection.completeResponse(AbstractHttpConnection.java:642)
!
Esto no es un error en el lado de la lógica de su aplicación. Esto se debe simplemente al comportamiento del usuario. No hay nada malo en su código per se.
Hay dos cosas que puede hacer:
- Ignore esta excepción específica para no registrarla.
- Haga que su código sea más eficiente/empaquetado para que transmita menos datos. (¡No siempre es una opción!)
Reseñas y calificaciones
Ten en cuenta difundir esta noticia si lograste el éxito.