Shinyproxy: [Rapport de bogue] Erreur AJAX dans la nouvelle version de ShinyProxy (version 2.2.0+)

CrĂ©Ă© le 28 mars 2019  Â·  46Commentaires  Â·  Source: openanalytics/shinyproxy

Dans la nouvelle version (2.2.0) de ShinyProxy, toutes les applications qui utilisent DT avec le mode de traitement du serveur seront interrompues. Le navigateur se plaint d'erreurs Ajax tandis que le journal ShinyProxy indique que les méthodes de demande 'Post' ne sont pas prises en charge .

Captures d'Ă©cran

ć±ćč•ćż«ç…§ 2019-03-28 例捈11 24 18
ć±ćč•ćż«ç…§ 2019-03-28 例捈11 24 32

Un exemple d'application

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

En fait, j'ai configuré un exemple de docker-compose pour cela, voir https://github.com/shrektan/shinyproxy-docker-compose-example

bug

Commentaire le plus utile

Merci! Nous pouvons reproduire cela et nous y travaillons.

Tous les 46 commentaires

Merci! Nous pouvons reproduire cela et nous y travaillons.

@shrektan merci d'avoir signalé le problÚme.
Un correctif a été commis :
https://github.com/openanalytics/containerproxy/commit/6455abdaed031297baf600f5e71e2242b689d940

Pouvez-vous s'il vous plaßt essayer cette version de développement et voir si cela résout le problÚme ?
https://nexus.openanalytics.eu/nexus/content/repositories/snapshots/eu/openanalytics/shinyproxy/2.2.1-SNAPSHOT/shinyproxy-2.2.1-20190329.093240-2.jar

@fmichielssen Merci pour la solution rapide. Je peux confirmer que DT et fileInput() fonctionnent bien avec la version dev.

Merci pour la confirmation, @shrektan ! L'a publié dans le cadre de ShinyProxy 2.2.1

Je viens de faire une nouvelle installation avec 2.2.1 et j'obtiens la mĂȘme erreur que

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

Ensuite, dans shinyproxy.log, j'obtiens :

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]

Ce qui est intéressant, c'est que cela affecte un autre paquet : shinyWidgets. J'ai un tas d'entrées qui sont générées à l'aide de insertUI, et les valeurs de la liste déroulante surlignée ci-dessous sont extraites d'une base de données (dynamique). Lors de l'exécution en local, tout fonctionne trÚs bien (et j'obtiens les valeurs réelles). Lors du déploiement sur shinyproxy, j'obtiens NA1, NA2, NA3... super étrange.

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

Je dois mentionner que les choses fonctionnaient bien sur 2.1.0. Au cas oĂč cela ferait une diffĂ©rence, j'utilise shinyproxy derriĂšre nginx, avec un certificat LetsEncrypt.

@bogdanrau Pourriez-vous fournir un exemple d'application factice (semblable à celui fourni par @shrektan ) qui nous permette de nous reproduire rapidement ?

Hey @tverbeke Je me demandais si nous pouvions maintenant déployer 2.2.1 - est-ce corrigé ?

Bonjour @dylancis : le problÚme d'origine est définitivement résolu comme le confirment nos tests et par @shrektan. Pour le problÚme signalé par @bogdanrau , nous n'avons pas encore d'exemple reproductible ou (confirmation d'un autre utilisateur qu'il y a toujours un problÚme).

@tverbeke , je viens d'essayer l'exemple d'application fourni par @shrektan et

fonctionne bien ici avec 2.2.1 .

fonctionne bien ici avec 2.2.1 .

Et cela utilise le programme d'installation deb ou le fichier jar ? J'ai crĂ©Ă© une nouvelle machine virtuelle Ă  partir de zĂ©ro en utilisant simplement le fichier .deb et j'ai toujours eu les mĂȘmes problĂšmes pour une raison quelconque.

c'est quoi le fichier deb ?

@shrektan : si vous regardez la page de téléchargement de shinyproxy (https://www.shinyproxy.io/downloads/), vous pouvez télécharger soit un fichier indépendant de la plateforme (.jar), soit un fichier deb spécifique à Ubuntu que vous installez avec dpkg. J'ai choisi cela par rapport au fichier indépendant de la plate-forme.

J'obtiens la mĂȘme erreur que @bogdanrau.
Ma configuration : j'utilise shinyproxy 2.2.1 (.jar indépendant de la plate-forme) derriÚre nginx.
J'ai remarquĂ© que cette erreur se produit en fonction de la mĂ©thode d'authentification choisie dans ShinyProxy. Lorsque j'utilise l'exemple de @shrektan (docker pull shrektan/rdocker4working) avec nginx, ShinyProxy 2.2.1 et l'authentification : simple, tout fonctionne bien. Lorsque je passe Ă  l'authentification : keycloak, j'obtiens l'erreur. L'authentification Keycloak elle-mĂȘme semble fonctionner.

Je peux confirmer que j'utilise Ă©galement keycloak avec nginx.

J'ai aussi ce problĂšme avec la version >2.1.0 (derniĂšre connue pour fonctionner) mĂȘme 2.2.1 ne fonctionne pas pour moi.
J'exécute un shinyproxy dockerisé qui récupÚre le pot indépendant de la plate-forme derriÚre un proxy inverse Traefik v1.7.12 .
J'utilise keycloak v6.0.1 pour l'authentification/l'autorisation.
J'ai dû revenir à la version 2.1 pour pouvoir voir les tables de données avec ajax activé (serveur = VRAI) lorsqu'il est désactivé, cela fonctionne avec les versions plus récentes.

Y a-t-il des nouvelles ou des solutions de contournement pour ce bogue ?

Je rencontre exactement le mĂȘme problĂšme et je peux confirmer que le problĂšme se produit en combinaison avec keycloak auth .

J'utilise shinyproxy-2.3.0.jar dans un environnement dockerisé sur une machine Ubuntu 18.04.2 LTS. Nginx est utilisé comme proxy inverse en combinaison avec un certificat sslletsencrypt.

Exemple d'application 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)

Essayer d'exĂ©cuter l'exemple supĂ©rieur avec shinyproxy et keycloak-auth (d'ailleurs exĂ©cutĂ© sur le mĂȘme serveur) conduit Ă  l'erreur AJAX 503 Service Unavailable. Tourner server=FALSE rĂ©sout cette erreur mais est hors de question pour les grandes tables.

Exactement la mĂȘme machine (docker,shinyproxy,paramĂštre nginx) avec une authentification simple ou ldap dans application.yml s'exĂ©cute sans aucun problĂšme .

le mĂȘme problĂšme avec billy34
dans ShinyProxy 2.3.0, utilisez DT :: renderDataTable a toujours la mĂȘme erreur ajax 503
utiliser keycloak v7.0.0 pour l'authentification/autorisation
mais inverser Ă  2.1 fonctionnera bien

Exemple d'application

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

J'ai le mĂȘme TruncatedResponseException mentionnĂ© par @bogdanrau avec le tĂ©lĂ©chargement de fichiers sur RStudio exĂ©cutĂ© Ă  l'intĂ©rieur de Shiny Proxy > 2.1 (en utilisant une mĂ©thode d'authentification simple). https://github.com/openanalytics/shinyproxy/issues/170

J'ajoute juste un "moi aussi". Le problÚme concerne le backend d'autorisation Keycloak et ne s'affiche pas autrement. Revenir à 2.1 fonctionne comme prévu.

Rencontrer cela Ă©galement avec KeyCloak Auth et toute version ShinyProxy > 2.1.0

RencontrĂ© le mĂȘme problĂšme dans nginx (ssl activĂ©) et le service d'authentification keycloak. Cependant, DT s'affiche parfaitement sans keycloak.
Veuillez trouver ci-joint!

Error-Traceback

Http-Response

RencontrĂ© le mĂȘme problĂšme dans nginx (ssl activĂ©) et le service d'authentification keycloak. Cependant, DT s'affiche parfaitement sans keycloak.
Veuillez trouver ci-joint!

Error-Traceback

Http-Response

Pot ShinyProxy 2.3.0 de shinyproxy.io

Nous avons pu reproduire avec Keycloak. Un correctif sera dans la prochaine version.

Nous avons pu reproduire avec Keycloak. Un correctif sera dans la prochaine version.

Merci pour votre retour !

Obtenir la mĂȘme erreur, sans aucun type d'authentification. Lors d'une requĂȘte POST de type content : multipart/form-data. Toute idĂ©e de la diffĂ©rence entre les deux versions que cette erreur est Ă  venir. S'il vous plaĂźt suggĂ©rer une solution au cas oĂč le retour n'est pas une option. Au fait, je cours un flacon derriĂšre shinyproxy
Merci.

@tverbeke pourriez-vous gentiment <dev> avec ce problĂšme rĂ©solu ? peut-ĂȘtre que les premiers tests pourraient dĂ©couvrir quelque chose d'autre qui pourrait nĂ©cessiter un correctif avant de mettre Ă  jour la branche <stable> .
Merci d'avance.

@jaysnm le correctif est présent dans la branche de développement de containerproxy.

@tverbeke, il est regrettable que la branche de développement de la construction de containerproxy ait échoué (veuillez consulter la piÚce jointe). J'ai également construit une branche de
Merci.

image

@jaysnm Vous devez compiler avec Oracle Java pour le moment. Le constructeur de la classe sun.security.krb5.KrbTgsReq est différent entre Oracle Java et OpenJDK et nous en sommes conscients.

Avec la version officielle 2.3.1, cela fonctionne enfin trÚs bien pour moi. Il est temps de clore ce numéro 140 ?

Merci pour le retour, @Dusan-Dingarac

Salut, j'ai le mĂȘme problĂšme aprĂšs la mise Ă  niveau de ShinyProxy 2.3.1 vers 2.4.1, pouvons-nous rouvrir le bogue ?

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

sur 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]

J'ai le mĂȘme problĂšme avec DT sans ShinyProxy avec l'Ă©quilibrage de charge en utilisant traefik comme proxy inverse. Peut-ĂȘtre liĂ© Ă  DT et Ă  l'Ă©quilibrage de charge ?
Besoin d'enquĂȘter de mon cĂŽtĂ©
Avez-vous vu ce problĂšme https://github.com/rstudio/DT/issues/849 ?

J'utilise Ă©galement traefik comme Ă©quilibreur de charge mais je suis revenu Ă  2.3.1 et cela fonctionne bien, avec 2.4.0 et 2.4.1, cela donne cette erreur.

Salut @giordyb

Je viens de tester l'exemple de code dans le premier post de ce numéro avec ShinyProxy 2.4.1 et cela fonctionne toujours pour moi.
Pouvez-vous partager les informations suivantes :

  • le code de l'application Shiny que vous utilisez
  • la configuration de Traefik
  • peut-ĂȘtre un fichier docker-compose pour que je puisse facilement tester votre configuration

J'ai besoin d'au moins les deux premiers morceaux, sinon je ne pourrai pas reproduire le numéro.
Merci

Ajoutez juste mes deux cents ici. Afin de m'assurer que DT fonctionne derriÚre un équilibreur de charge (Traefik), j'ai récemment créé un simple repo DT-load-balancer basé sur Docker swarm, avec des configurations détaillées... Je pense qu'avec un petit effort, vous pouvez le transformer en un exemple pour ShinyProxy à propos de ce problÚme...

@giordyb J'ai résolu mon problÚme avec traefik et l'équilibrage de charge. J'utilise toujours traefik 1.7 (1.7.26) et il y a toujours un problÚme avec la configuration de l'adhérence. J'utilisais l'étiquette "traefik.backend.loadbalancer.stickiness" comme documentée mais sans succÚs. L'utilisation de l'étiquette obsolÚte "traefik.backend.loadbalancer.sticky=true" fonctionne. Je ne sais pas si c'est un indice pour ce problÚme mais qui sait.

@ billy34 merci, j'exécute traefik 2.2, j'ai essayé d'activer la session persistante mais cela n'a fait aucune différence. Je posterai mon code et ma config traefik sous peu

@LEDfan J'exĂ©cute traefik sous kubernetes (sur un cluster multi-nƓuds), il est donc un peu difficile de rĂ©pliquer notre environnement avec un docker-compose.
J'ai pu crĂ©er un environnement plus petit avec un seul nƓud kubernetes sous docker (docker pour mac) et il y a toujours des erreurs.

voici le code de l'application (ce n'est qu'un exemple mais il y a aussi des erreurs) :
_edit : voir le prochain post pour le code_

J'ai testĂ© cette version de cette application avec cette config de traefik sous shinyproxy 2.3.0 et ça marche, si j'essaye la mĂȘme chose sur 2.4.1 j'obtiens l'erreur

Une autre chose que j'ai essayĂ©e est de contourner traefik en transfĂ©rant le port directement vers le conteneur shinyproxy, mĂȘme en faisant cela, l'erreur apparaĂźt, donc je doute vraiment qu'il s'agisse d'un problĂšme de traefik.

@LEDfan

J'ai fait d'autres tests, on dirait que traefik n'a rien à voir avec ça.

J'ai créé un référentiel qui réplique mon environnement (https://github.com/giordyb/test_shinyproxy.git)

sur docker pour mac exĂ©cutant kubernetes, j'ai crĂ©Ă© 2 dĂ©ploiements de proxy brillant (2.3.1 et 2.4.1) qui servent la mĂȘme application de conteneur R brillant.
Il n'y a pas de traefik impliqué, les pods proxy brillants sont accessibles via un transfert de port kube-proxy.

sous 2.3.1 la demande au datatable fonctionne

sous 2.4.1 la mĂȘme demande Ă©choue

et je reçois ceci dans le journal du conteneur 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]

y a-t-il autre chose que je puisse faire de mon cÎté pour résoudre davantage le problÚme ?

Salut @giordyb

Merci pour votre exemple de déploiement et de rapport. J'ai examiné la question aujourd'hui et c'est une question assez étrange.
Le problĂšme est dĂ» Ă  l'activation de la journalisation du dĂ©bogage. Il existe une classe DispatcherServlet qui enregistrera les parties des requĂȘtes envoyĂ©es via ShinyProxy. Cependant, cela pose problĂšme avec certaines requĂȘtes proxy, car une partie de ces requĂȘtes ne peut ĂȘtre lue qu'une seule fois. Par consĂ©quent, l'application Shiny a reçu une demande invalide.

La solution consiste à désactiver la journalisation de débogage pour la classe org.springframework.web.servlet.DispatcherServlet comme suit :

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

Ce sera la valeur par défaut dans la prochaine version de ShinyProxy, de sorte que cette solution de contournement n'est plus nécessaire.

Salut @LEDfan ,

merci d'avoir examiné cela si rapidement. J'ai ajouté la configuration de journalisation comme vous l'avez suggéré et maintenant tout fonctionne comme prévu, je suis donc un campeur heureux.

Merci beaucoup pour votre aide!

J'ai le mĂȘme problĂšme avec kubernetes derriĂšre NGINX et Azure Active Directory. Les tableaux de donnĂ©es s'affichent correctement avec 2.3.1 mais pas avec 2.4.1. J'ai essayĂ© des builds avec JDK8 et JDK11.

Nous avons supprimé toutes les configurations de journalisation de application.yml et avons configuré NGINX pour exécuter des sessions "résistantes", mais sans succÚs jusqu'à présent.

Nous avons publié une version simplifiée de nos journaux de pod application.yml et shinyproxy sur la page d'assistance de la communauté. https://support.openanalytics.eu/t/datatables-ajax-error-with-shinyproxy-v-2-4-1/1763 .

Salut @smlehman , merci pour vos informations supplémentaires.

Pourriez-vous s'il vous plaßt fournir un exemple d'application Shiny (sources Dockerfile et R) utilisant DataTables ?
J'ai une application, mais cela ne pose aucun problĂšme sur une configuration Kubernetes (en utilisant Ă©galement nginx). Merci!

Salut @LEDfan
Chose sûre. Pour vous donner une image complÚte, j'ai créé un petit dépÎt avec tous les fichiers de base que nous utilisons. J'ai également inclus le fichier README sur lequel je travaille pour aider les personnes intéressées à utiliser l'application, car il pourrait fournir un contexte supplémentaire sur notre configuration.

https://github.com/smlehman/shinyproxy-debugDT
Faites-moi savoir s'il y a autre chose qui pourrait aider au dépannage.

Cette page vous a été utile?
0 / 5 - 0 notes