Shinyproxy: [Informe de error] Error de AJAX en la nueva versión de ShinyProxy (versión 2.2.0+)

Creado en 28 mar. 2019  ·  46Comentarios  ·  Fuente: openanalytics/shinyproxy

En la nueva versión de lanzamiento (2.2.0) de ShinyProxy, todas las aplicaciones que usan DT con el modo de procesamiento del servidor se romperán. El navegador se queja de errores de Ajax mientras que el registro de ShinyProxy dice que los métodos de solicitud 'Publicar' no son compatibles .

Capturas de pantalla

屏幕快照 2019-03-28 下午11 24 18
屏幕快照 2019-03-28 下午11 24 32

Una aplicación de ejemplo

library(shiny)
ui <- fluidPage(DT::DTOutput('tbl'))
server <- function(input, output, session) {
  output$tbl <- DT::renderDT(iris, server = TRUE)
}
shinyApp(ui, server)

De hecho, configuré un ejemplo de docker-compose para esto, consulte https://github.com/shrektan/shinyproxy-docker-compose-example

bug

Comentario más útil

¡Gracias! Podemos reproducir esto y estamos trabajando en ello.

Todos 46 comentarios

¡Gracias! Podemos reproducir esto y estamos trabajando en ello.

@fmichielssen Gracias por la solución rápida. Puedo confirmar que tanto DT como fileInput() funcionan bien con la compilación de desarrollo.

¡Gracias por la confirmación, @shrektan! Publicado como parte de ShinyProxy 2.2.1

Acabo de hacer una nueva instalación con 2.2.1 y recibo el mismo error que @shrektan informó:

Screen Shot 2019-03-31 at 2 27 42 PM

Luego, en shinyproxy.log, obtengo:

2019-03-31 21:27:33.548 ERROR 9925 --- [XNIO-2 I/O-3] io.undertow.proxy                        : UT005028: Proxy request to /proxy_endpoint/b77c8f8f-8dc9-45c3-a858-e12c7e33e159/session/cf6134effe616504495d1d75171f0546/dataobj/de_main_table failed

io.undertow.server.TruncatedResponseException: null
    at io.undertow.client.http.HttpRequestConduit.truncateWrites(HttpRequestConduit.java:711) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.terminateWrites(AbstractFixedLengthStreamSinkConduit.java:256) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at org.xnio.conduits.ConduitStreamSinkChannel.shutdownWrites(ConduitStreamSinkChannel.java:178) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
    at io.undertow.channels.DetachableStreamSinkChannel.shutdownWrites(DetachableStreamSinkChannel.java:79) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:754) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:410) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:343) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:815) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:338) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:525) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:301) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) [containerproxy-0.8.1.jar!/:0.8.1]
    at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
    at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:582) [xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:466) [xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]

Lo interesante es que esto afecta a otro paquete: shinyWidgets. Tengo un montón de entradas que se generan usando insertUI, y los valores en la lista desplegable resaltada a continuación se obtienen de una base de datos (dinámica). Cuando se ejecuta localmente, todo funciona muy bien (y obtengo los valores reales). Al implementar en shinyproxy, obtengo NA1, NA2, NA3 ... súper extraño.

Screen Shot 2019-03-31 at 2 30 48 PM

Debo mencionar que las cosas estaban funcionando bien en 2.1.0. En caso de que esto marque la diferencia, estoy usando shinyproxy detrás de nginx, con un certificado LetsEncrypt.

@bogdanrau ¿Podría proporcionar una aplicación de ejemplo ficticia (similar a la que nos proporcionó

Hola @tverbeke, me preguntaba si ahora podríamos implementar 2.2.1, ¿está arreglado?

Hola @dylancis : el problema original definitivamente se solucionó como lo confirmaron nuestras pruebas y @shrektan. Para el problema informado por @bogdanrau , todavía no tenemos un ejemplo reproducible o (confirmación de otro usuario, todavía hay un problema).

@tverbeke , acabo de probar la aplicación de muestra que proporcionó @shrektan y recibo ese error. La única diferencia que puedo ver es que estoy usando .deb como servicio, en lugar de usar el archivo .jar. ¿Alguien está usando el archivo .deb?

funciona bien aquí con 2.2.1 .

funciona bien aquí con 2.2.1 .

¿Y eso es usar el instalador deb o el archivo jar? Creé una nueva máquina virtual desde cero usando el archivo .deb y todavía tenía los mismos problemas por cualquier motivo.

¿Qué es el archivo deb?

@shrektan : si miras la página de descarga de shinyproxy (https://www.shinyproxy.io/downloads/), puedes descargar un archivo independiente de la plataforma (.jar) o un archivo deb específico de Ubuntu que instalas con dpkg. Elegí eso frente al archivo independiente de la plataforma.

Recibo el mismo error como @bogdanrau.
Mi configuración: estoy usando shinyproxy 2.2.1 (.jar independiente de la plataforma) detrás de nginx.
He notado que este error ocurre según el método de autenticación elegido en ShinyProxy. Cuando utilizo el ejemplo de @shrektan (docker pull shrektan / rdocker4working) junto con nginx, ShinyProxy 2.2.1 y la autenticación: simple, todo funciona bien. Cuando cambio a la autenticación: keycloak, aparece el error. La autenticación de Keycloak en sí parece funcionar.

Puedo confirmar que también estoy usando keycloak con nginx.

También tengo este problema con la versión> 2.1.0 (la última vez que se sabe que funciona), incluso la 2.2.1 no funciona para mí.
Ejecuto un shinyproxy dockerizado que recupera el jar independiente de la plataforma detrás de un proxy inverso Traefik v1.7.12.
Estoy usando keycloak v6.0.1 para autenticación / autorización.
Tuve que volver a la versión 2.1 para poder ver las tablas de datos con ajax habilitado (servidor = TRUE) cuando está deshabilitado, funciona con versiones más nuevas.

¿Hay novedades o soluciones para ese error?

Ejecuto exactamente el mismo problema y puedo confirmar que el problema ocurre en combinación con la autenticación de keycloak .

Estoy usando shinyproxy-2.3.0.jar en un entorno acoplado en una máquina Ubuntu 18.04.2 LTS. Nginx se utiliza como proxy inverso en combinación con un certificado ssl letsencrypt.

Ejemplo-aplicación-brillante:

library(shiny)
library(DT)

ui <- fluidPage(DT::dataTableOutput('tbl'))
server <- function(input, output, session) {
  output$tbl <- DT::renderDataTable(data.frame(Col_1=c(1:10), Col_2=c(11:20)))
}
shinyApp(ui, server)

Intentar ejecutar el ejemplo superior con shinyproxy y keycloak-auth (por cierto, ejecutándose en el mismo servidor) conduce al mencionado error 503 Servicio no disponible AJAX. Turning server = FALSE resuelve ese error, pero está fuera de discusión para tablas grandes.

Exactamente la misma máquina (docker, shinyproxy, configuración de nginx) con auth simple o ldap en application.yml se está ejecutando sin ningún problema .

el mismo problema con billy34
en ShinyProxy 2.3.0, use DT :: renderDataTable todavía tiene el mismo error 503 de ajax
use keycloak v7.0.0 para autenticación / autorización
pero revertir a 2.1 funcionará bien

Aplicación de ejemplo

library(shiny)
ui <- fluidPage(DT::dataTableOutput('tbl'))
server <- function(input, output, session) {
output$tbl <- DT::renderDataTable({
DT::datatable(iris, class = 'cell-border stripe')
})
}

Tengo el mismo TruncatedResponseException mencionado por @bogdanrau con la carga de archivos en RStudio ejecutándose dentro de Shiny Proxy> 2.1 dockerizado (usando un método de autenticación simple). https://github.com/openanalytics/shinyproxy/issues/170

Solo agrego un 'yo también'. El problema es con el backend de autorización de Keycloak y no aparece de otra manera. Volver a 2.1 funciona como se esperaba.

Encontrando esto también con KeyCloak Auth y cualquier versión de ShinyProxy> 2.1.0

Encontré el mismo problema en nginx (ssl habilitado) y el servicio de autenticación de keycloak. Sin embargo, DT se muestra perfectamente sin keycloak.
¡Por favor ver adjunto!

Error-Traceback

Http-Response

Encontré el mismo problema en nginx (ssl habilitado) y el servicio de autenticación de keycloak. Sin embargo, DT se muestra perfectamente sin keycloak.
¡Por favor ver adjunto!

Error-Traceback

Http-Response

Jarra de ShinyProxy 2.3.0 de shinyproxy.io

Pudimos reproducirlo con Keycloak. Habrá una solución en la próxima versión.

Pudimos reproducirlo con Keycloak. Habrá una solución en la próxima versión.

¡Gracias por revertir!

Obteniendo el mismo error, sin ningún tipo de autenticación. Al realizar una solicitud POST de tipo de contenido: multipart / form-data. Alguna idea de cuál es la diferencia entre las dos versiones de que viene este error. Sugiera alguna solución en caso de que revertir no sea una opción. Por cierto, estoy ejecutando frasco detrás de shinyproxy
Gracias.

@tverbeke, ¿ podría enviar una instantánea de la rama <dev> con este problema solucionado? quizás las primeras pruebas puedan descubrir algo más que pueda necesitar una solución antes de actualizar la rama <stable> .
Gracias por adelantado.

@jaysnm, la solución está presente en la rama de desarrollo de containerproxy.

@tverbeke es desafortunado que el desarrollo de la rama de compilación de containerproxy haya fallado (ver adjunto). También he construido una rama de
Gracias.

image

@jaysnm Necesita compilar con Oracle Java por el momento. El constructor de la clase sun.security.krb5.KrbTgsReq es diferente entre Oracle Java y OpenJDK y lo sabemos.

Con la versión oficial 2.3.1 esto finalmente funciona bien para mí. ¿Es hora de cerrar este número 140?

Gracias por los comentarios, @ Dusan-Dingarac

Hola, tengo el mismo problema después de actualizar ShinyProxy 2.3.1 a 2.4.1, ¿podemos volver a abrir el error?

en el navegador:
DataTables warning: table id=DataTables_Table_0 - Ajax error. For more information about this error, please see http://datatables.net/tn/7

en shinyproxy
at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] │ │ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] │ │ 2020-10-23 15:33:30.211 DEBUG 1 --- [ XNIO-1 I/O-2] io.undertow.request.error-response : Setting error code 503 for exchange HttpServerExchange{ POST /system-recommendation-dashboard/pr │ │ oxy_endpoint/3913e3ea-8e4d-4c7a-9bf7-4418b3064b26/session/2baa425f53c271bc590b7d1a0c335a89/dataobj/tab_Cov_Linea_O} │ │ java.lang.RuntimeException: null │ │ at io.undertow.server.HttpServerExchange.setStatusCode(HttpServerExchange.java:1416) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler.handleFailure(ProxyHandler.java:668) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:769) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:414) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:347) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:821) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:353) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] │ │ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final]

Tengo el mismo problema con DT sin ShinyProxy con el equilibrio de carga usando traefik como proxy inverso. ¿Quizás vinculado a DT y al equilibrio de carga?
Necesito investigar de mi lado
¿Has visto este problema https://github.com/rstudio/DT/issues/849 ?

También estoy usando traefik como balanceador de carga pero volví a 2.3.1 y funciona bien, con 2.4.0 y 2.4.1 da ese error.

Hola @giordyb

Acabo de probar el código de ejemplo en la primera publicación de este problema con ShinyProxy 2.4.1 y todavía me funciona.
¿Puede compartir la siguiente información?

  • el código de la aplicación Shiny que estás usando
  • la configuración de Traefik
  • tal vez un archivo docker-compose para que pueda probar fácilmente su configuración

Necesito al menos las dos primeras piezas, de lo contrario no podré reproducir el problema.
Gracias

Solo agregue mis dos centavos aquí. Para garantizar que DT funcione detrás de un balanceador de carga (Traefik), recientemente creé un balanceador de carga DT de repositorio simple basado en el enjambre de Docker, con configuraciones detalladas ... Creo que con un poco de esfuerzo, puede convertirlo en un reproductor reproducible ejemplo para ShinyProxy sobre este problema ...

@giordyb Resolví mi problema con traefik y balanceo de carga. Sigo usando traefik 1.7 (1.7.26) y todavía hay un problema con la configuración de adherencia. Estaba usando la etiqueta "traefik.backend.loadbalancer.stickiness" como se documenta, pero sin éxito. El uso de la etiqueta obsoleta "traefik.backend.loadbalancer.sticky = true" está funcionando. No sé si es una pista para este problema, pero quién sabe.

@ billy34 gracias, estoy ejecutando traefik 2.2, intenté habilitar la sesión pegajosa pero no hizo ninguna diferencia. Publicaré mi código y la configuración traefik en breve

@LEDfan Estoy ejecutando traefik en kubernetes (en un clúster de varios nodos), por lo que es un poco complicado replicar nuestro entorno con un docker-compose.
Pude crear un entorno más pequeño con un solo nodo de kubernetes debajo de la ventana acoplable (ventana acoplable para mac) y todavía aparecen errores.

aquí está el código de la aplicación (es solo una muestra, pero también contiene errores):
_editar: vea la siguiente publicación para el código_

Probé esta versión de esta aplicación con esta configuración de traefik bajo shinyproxy 2.3.0 y funciona, si intento lo mismo en 2.4.1 obtengo el error

Otra cosa que intenté es omitir traefik mediante el reenvío de puertos directamente al contenedor shinyproxy, incluso al hacer esto aparece el error, por lo que realmente dudo que sea un problema traefik.

@LEDfan

Hice algunas pruebas más, parece que traefik no tiene nada que ver con eso.

Creé un repositorio que replica mi entorno (https://github.com/giordyb/test_shinyproxy.git)

en la ventana acoplable para mac con kubernetes, creé 2 implementaciones de proxy brillante (2.3.1 y 2.4.1) que sirven a la misma aplicación de contenedor de R. brillante.
No hay ningún traefik involucrado, se accede a los pods proxy brillantes a través de un reenvío de puertos kube-proxy.

en 2.3.1 la solicitud a las obras de la tabla de datos

en 2.4.1 falla la misma solicitud

y obtengo esto en el registro del contenedor shinyproxy
2020-10-26 15:17:46.359 ERROR 1 --- [ XNIO-1 I/O-2] io.undertow.proxy : UT005028: Proxy request to /proxy_endpoint/884afa30-73a0-444f-b04f-3ae85b6de6bd/session/aacc55466aefc00eabd04b31f9891242/dataobj/tab_Cov_Linea_O failed │ │ io.undertow.server.TruncatedResponseException: null │ │ at io.undertow.client.http.HttpRequestConduit.truncateWrites(HttpRequestConduit.java:711) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.terminateWrites(AbstractFixedLengthStreamSinkConduit.java:256) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at org.xnio.conduits.ConduitStreamSinkChannel.shutdownWrites(ConduitStreamSinkChannel.java:178) ~[xnio-api-3.8.0.Final.jar!/:3.8.0.Final] │ │ at io.undertow.channels.DetachableStreamSinkChannel.shutdownWrites(DetachableStreamSinkChannel.java:79) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:754) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:414) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:347) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:821) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:353) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] │ │ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] │ │ 2020-10-26 15:17:46.361 DEBUG 1 --- [ XNIO-1 I/O-2] io.undertow.request.error-response : Setting error code 503 for exchange HttpServerExchange{ POST /proxy_endpoint/884afa30-73a0-444f-b04f-3ae85b6de6bd/session/aacc55466aefc00eabd04b31f9891242 │ │ java.lang.RuntimeException: null │ │ at io.undertow.server.HttpServerExchange.setStatusCode(HttpServerExchange.java:1416) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler.handleFailure(ProxyHandler.java:668) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:769) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:414) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:347) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:821) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:353) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] │ │ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] │ │ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] │ │ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final]

¿Hay algo más que pueda hacer por mi parte para solucionar el problema aún más?

Hola @giordyb

Gracias por su implementación e informe de ejemplo. Investigué el problema hoy y es un tema bastante extraño.
El problema se debe a que el registro de depuración está habilitado. Hay una clase DispatcherServlet que registrará las partes de las solicitudes enviadas a través de ShinyProxy. Sin embargo, esto causa problemas con algunas solicitudes de proxy, porque parte de esas solicitudes solo se pueden leer una vez. Por lo tanto, la aplicación Shiny recibió una solicitud no válida.

La solución es deshabilitar el registro de depuración para la clase org.springframework.web.servlet.DispatcherServlet la siguiente manera:

logging:
  level:
     root: DEBUG
     org:
        springframework:
           web:
              servlet:
                 DispatcherServlet: INFO

Este será el valor predeterminado en la próxima versión de ShinyProxy, por lo que esta solución ya no es necesaria.

Hola @LEDfan ,

gracias por investigar esto tan rápidamente. Agregué la configuración de registro como sugirió y ahora todo funciona como se esperaba, así que soy un campista feliz.

¡muchas gracias por su ayuda!

Tengo el mismo problema con kubernetes detrás de NGINX y Azure Active Directory. Las tablas de datos se muestran correctamente con 2.3.1 pero no con 2.4.1. Probé compilaciones con JDK8 y con JDK11.

Hemos eliminado todas las configuraciones de registro de application.yml y hemos configurado NGINX para ejecutar sesiones 'pegajosas', pero hasta ahora no hemos tenido suerte.

Hemos publicado una versión simplificada de nuestros registros de pod de application.yml y shinyproxy en la página de soporte de la comunidad. https://support.openanalytics.eu/t/datatables-ajax-error-with-shinyproxy-v-2-4-1/1763 .

Hola @smlehman , gracias por tu información adicional.

¿Podría proporcionar una aplicación Shiny de ejemplo (Dockerfile y fuentes R) usando DataTables?
Tengo una aplicación, pero no da ningún problema en la configuración de Kubernetes (usando nginx también). ¡Gracias!

Hola @LEDfan
Cosa segura. Para darle una imagen completa, he creado un pequeño repositorio con todos los archivos básicos que estamos usando. También incluí el archivo README en el que estoy trabajando para ayudar a las personas interesadas en usar la aplicación, ya que podría proporcionar contexto adicional sobre nuestra configuración.

https://github.com/smlehman/shinyproxy-debugDT
Avíseme si hay algo más que pueda ayudar con la resolución de problemas.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Emelieh21 picture Emelieh21  ·  5Comentarios

benkates picture benkates  ·  3Comentarios

erossini picture erossini  ·  3Comentarios

thomas-chauvet picture thomas-chauvet  ·  5Comentarios

xtrasimplicity picture xtrasimplicity  ·  5Comentarios