Shinyproxy: [Bug Report] ShinyProxy 新版本(2.2.0+ 版本)出现 AJAX 错误

创建于 2019-03-28  ·  46评论  ·  资料来源: openanalytics/shinyproxy

在 ShinyProxy 的新发布版本 (2.2.0) 中,所有使用 DT 和服务器处理模式的 App 都会崩溃。 浏览器抱怨 Ajax 错误,而 ShinyProxy 日志显示Request Methods 'Post' not supported

屏幕截图

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

示例应用

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

我实际上为此设置了一个 docker-compose 示例,请参阅https://github.com/shrektan/shinyproxy-docker-compose-example

最有用的评论

谢谢! 我们可以重现这一点并正在努力。

所有46条评论

谢谢! 我们可以重现这一点并正在努力。

@fmichielssen感谢您的快速修复。 我可以确认 DT 和fileInput()在开发版本中都可以正常工作。

感谢您的确认,@shrektan! 作为 ShinyProxy 2.2.1 的一部分发布

刚刚用 2.2.1 进行了全新安装,我收到了与@shrektan报告的相同的错误:

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

然后,在 Shinyproxy.log 中,我得到:

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]

有趣的是,这会影响另一个包:shinyWidgets。 我有一堆使用 insertUI 生成的输入,下面突出显示的下拉列表中的值是从数据库(动态)中提取的。 在本地运行时,一切运行良好(我得到了实际值)。 部署到 Shinyproxy 时,我得到 NA1、NA2、NA3...超级奇怪。

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

我应该提到事情在 2.1.0 上运行良好。 如果这有所作为,我在 nginx 后面使用了 Shinyproxy,并带有 LetsEncrypt 证书。

@bogdanrau您能否提供一个虚拟示例应用程序(类似于@shrektan提供的应用程序),让我们能够快速复制?

@tverbeke我想知道我们现在是否可以部署 2.2.1 - 它修复了吗?

你好@dylancis :我们的测试和@shrektan 确认了原来的问题肯定已经解决了。 对于@bogdanrau报告的问题,我们还没有可重现的示例或(来自其他用户的确认仍然存在问题)。

@tverbeke ,我刚刚尝试了@shrektan提供的示例应用程序,但出现了该错误。 我能看到的唯一区别是我使用 .deb 作为服务,而不是使用 .jar 文件。 有人使用 .deb 文件吗?

在这里使用2.2.1

在这里使用2.2.1

那是使用 deb 安装程序还是 jar 文件? 我仅使用 .deb 文件从头开始创建了一个新的 VM,但无论出于何种原因仍然遇到相同的问题。

deb 文件是什么?

@shrektan :如果您查看 Shinyproxy 下载页面 (https://www.shinyproxy.io/downloads/),您可以下载与平台无关的文件 (.jar) 或特定于您安装的 Ubuntu 的 deb 文件与 dpkg。 我选择了与平台无关的文件。

我收到与@bogdanrau 相同的错误。
我的设置:我在 nginx 后面使用了 Shinyproxy 2.2.1(与平台无关的 .jar)。
我注意到此错误的发生取决于 ShinyProxy 中选择的身份验证方法。 当我将@shrektan (

可以确认我也在 nginx 中使用 keycloak。

我也有这个问题,版本 >2.1.0(最后一次可以使用),即使 2.2.1 对我也不起作用。
我运行了一个 dockerized Shinyproxy,它在 Traefik 反向代理 v1.7.12 后面获取独立于平台的 jar。
我正在使用 keycloak v6.0.1 进行身份验证/授权。
我必须恢复到 2.1 版才能看到启用了 ajax (server=TRUE) 的数据表,当禁用它时,它适用于较新的版本。

是否有针对该错误的任何消息或解决方法?

我遇到了完全相同的问题,并且可以确认该问题是与keycloak auth结合发生的。

我在 Ubuntu 18.04.2 LTS 机器上的 dockerized 环境中使用 Shinyproxy-2.3.0.jar。 Nginx 与 letencrypt ssl 证书结合用作反向代理。

示例闪亮应用程序:

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)

尝试使用 Shinyproxy 和 keycloak-auth(顺便说一句,在同一台服务器上运行)运行上面的示例会导致提到的 503 Service Unavailable AJAX 错误。 设置 server=FALSE 解决了这个错误,但对于大表来说是不可能的。

完全相同的机器(docker、shinyproxy、nginx 设置)在 application.yml 中使用简单的 authldap运行没有任何问题

billy34 也有同样的问题
在 ShinyProxy 2.3.0 中,使用 DT::renderDataTable 仍然有相同的 ajax 错误 503
使用 keycloak v7.0.0 进行身份验证/授权
但反向到 2.1 会正常工作

示例应用程序

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

我有@bogdanrau提到的相同TruncatedResponseException ,将文件上传到在 dockerized Shiny Proxy > 2.1 中运行的 RStudio(使用简单的身份验证方法)。 https://github.com/openanalytics/shinyproxy/issues/170

只需添加一个“我也是”。 问题在于 Keycloak 授权后端,否则不会出现。 恢复到 2.1 按预期工作。

使用 KeyCloak Auth 和任何 ShinyProxy 版本 > 2.1.0 也会遇到这种情况

在 nginx(启用 ssl)和 keycloak 身份验证服务中遇到同样的问题。 然而,DT 显示完美,没有keycloak。
请参照附件!

Error-Traceback

Http-Response

在 nginx(启用 ssl)和 keycloak 身份验证服务中遇到同样的问题。 然而,DT 显示完美,没有keycloak。
请参照附件!

Error-Traceback

Http-Response

来自 Shinyproxy.io 的 ShinyProxy 2.3.0 jar

我们能够使用 Keycloak 进行复制。 下一个版本将进行修复。

我们能够使用 Keycloak 进行复制。 下一个版本将进行修复。

谢谢回帖!

得到同样的错误,没有任何类型的身份验证。 发出内容类型的 POST 请求时:multipart/form-data。 知道此错误即将到来的两个版本之间有什么区别。 请提出一些解决方案,以防恢复不是一种选择。 顺便说一句,我在 Shinyproxy 后面运行烧瓶
谢谢。

@tverbeke您能否在解决此问题的情况下推送<dev>分支的快照? 也许早期的测试可能会在更新<stable>分支之前发现其他可能需要修复的东西。
提前致谢。

@jaysnm修复存在于 containerproxy 的开发分支中。

@tverbeke不幸的是,容器开发分支失败(请参见附件)。 我还建立了 Shinyproxy 的开发分支,希望 pom.xml 上的 containerproxy 0.8.4-SNAPSHOT 能够提供所谓的修复。 还没有修复。 在这一点上,我认为这与此问题所跟踪的内容有所不同。
谢谢。

image

@jaysnm

使用官方版本 2.3.1,这对我来说终于正常了。 是时候关闭这个问题 #140 了吗?

感谢您的反馈,@Dusan-Dingarac

嗨,我从 ShinyProxy 2.3.1 升级到 2.4.1 后遇到了同样的问题,我们可以重新打开错误吗?

在浏览器上:
DataTables warning: table id=DataTables_Table_0 - Ajax error. For more information about this error, please see http://datatables.net/tn/7

在闪亮代理上
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]

我在与DT相同的问题,而ShinyProxy使用traefik作为反向代理负载均衡。 也许与 DT 和负载平衡有关?
需要在我这边调查
你见过这个问题https://github.com/rstudio/DT/issues/849吗?

我也使用 traefik 作为负载均衡器,但我回到 2.3.1 并且它工作正常,2.4.0 和 2.4.1 它给出了那个错误。

@giordyb

我刚刚用 ShinyProxy 2.4.1 测试了这个问题的第一篇文章中的示例代码,它仍然适用于我。
您能否分享以下信息:

  • 您正在使用的 Shiny 应用程序的代码
  • Traefik 的配置
  • 也许是一个 docker-compose 文件,这样我就可以轻松测试您的设置

我至少需要前两个部分,否则我将无法重现该问题。
谢谢

只需在这里加上我的两分钱。 为了确保 DT 在负载均衡器 (Traefik) 后面工作,我最近创建了一个基于 Docker swarm 的简单 repo DT-load-balancer ,有详细的设置......我想只要稍微努力,你就可以把它变成一个可重现的关于这个问题的 ShinyProxy 的例子......

@giordyb我用 traefik 和负载平衡解决了我的问题。 我还在用traefik 1.7(1.7.26),粘性配置还是有问题。 我使用标签“traefik.backend.loadbalancer.stickiness”作为记录但没有成功。 使用已弃用的标签“traefik.backend.loadbalancer.sticky=true”正在工作。 不知道这是否是这个问题的线索,但谁知道呢。

@billy34谢谢,我正在运行 traefik 2.2,我尝试启用粘性会话,但没有任何区别。 我将很快发布我的代码和 traefik 配置

@LEDfan我在 kubernetes 下(在多节点集群上)运行 traefik,所以用 docker-compose 复制我们的环境有点棘手。
我能够在 docker (docker for mac) 下使用单个 kubernetes 节点创建一个较小的环境,但它仍然出错。

这是应用程序的代码(它只是一个示例,但也会出错):
_edit:代码见下一篇文章_

我在shinyproxy 2.3.0下使用traefik的这个配置测试了这个应用程序的这个版本并且它可以工作,如果我在2.4.1上尝试同样的事情我得到错误

我尝试的另一件事是通过直接将端口转发到 Shinyproxy 容器来绕过 traefik,即使这样做也会显示错误,所以我真的怀疑这是 traefik 问题。

@LEDfan

我又做了一些测试,看起来 traefik 与它无关。

我创建了一个复制我的环境的 repo (https://github.com/giordyb/test_shinyproxy.git)

在运行 kubernetes 的 docker for mac 上,我创建了 2 个闪亮的代理部署(2.3.1 和 2.4.1),它们为相同的闪亮 R 容器应用程序提供服务。
不涉及 traefik,闪亮的代理 pod 是通过 kube-proxy port-forward 访问的。

在 2.3.1 下对数据表的请求有效

在 2.4.1 下同样的请求失败

我在 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]

我还能做些什么来进一步解决问题?

@giordyb

感谢您提供示例部署和报告。 我今天研究了这个问题,这是一个很奇怪的问题。
该问题是由于启用了调试日志记录引起的。 有一类DispatcherServlet将记录通过 ShinyProxy 发送的请求部分。 但是,这会导致某些代理请求出现问题,因为这些请求的一部分只能读取一次。 因此,Shiny 应用程序收到了无效请求。

解决方案是禁用org.springframework.web.servlet.DispatcherServlet类的调试日志记录,如下所示:

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

这将是下一个 ShinyProxy 版本中的默认设置,因此不再需要此解决方法。

@LEDfan

感谢您如此迅速地调查此事。 我按照你的建议添加了日志配置,现在一切都按预期工作,所以我是一个快乐的露营者。

非常感谢您的帮助!

我在 NGINX 和 Azure Active Directory 后面的 kubernetes 中遇到了同样的问题。 数据表在 2.3.1 中正确显示,但在 2.4.1 中不显示。 我试过用 JDK8 和 JDK11 构建。

我们已经从application.yml删除了所有日志配置,并将 NGINX 设置为运行“粘性”会话,但到目前为止还没有运气。

在社区支持页面上发布了我们的application.yml和 Shinyproxy pod 日志的简化版本。 https://support.openanalytics.eu/t/datatables-ajax-error-with-shinyproxy-v-2-4-1/1763

@smlehman ,感谢您提供额外信息。

您能否提供一个使用 DataTables 的 Shiny 应用程序示例(Dockerfile 和 R 源)?
我有一个应用程序,但它在 Kubernetes 设置上没有任何问题(也使用 nginx)。 谢谢!

嗨@LEDfan
肯定的事。 为了向您展示全貌,我创建了一个包含我们正在使用的所有基本文件的小型存储库。 我还包含了我正在编写的自述文件,以支持对使用该应用程序感兴趣的人,因为它可能提供有关我们设置的其他上下文。

https://github.com/smlehman/shinyproxy-debugDT
让我知道是否还有其他有助于故障排除的方法。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jat255 picture jat255  ·  6评论

jat255 picture jat255  ·  4评论

chienyuchuan picture chienyuchuan  ·  8评论

jat255 picture jat255  ·  3评论

algo-se picture algo-se  ·  6评论