Shinyproxy: [버그 리포트] ShinyProxy(버전 2.3.0)μ—μ„œ AJAX 였λ₯˜ 503(μ„œλΉ„μŠ€ 이용 λΆˆκ°€)

에 λ§Œλ“  2019λ…„ 08μ›” 28일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: openanalytics/shinyproxy

ShinyProxy의 μƒˆ 릴리슀 버전(2.3.0)μ—μ„œλŠ” μ„œλ²„ 처리 λͺ¨λ“œμ—μ„œ DTλ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  앱이 μ€‘λ‹¨λ©λ‹ˆλ‹€. λΈŒλΌμš°μ € ν”„λ‘œκ·Έλž˜λ¨Έ 도ꡬ가 "jquery.min.js:4 POST http://myip/app_direct/retire/session/cbc7bf01da3a023b6db378384c240836/dataobj/shiny_table?w=&nonce=22377961e7available5d "라고 ν‘œμ‹œλ˜λŠ” λ™μ•ˆ λΈŒλΌμš°μ €μ—μ„œ Ajax 였λ₯˜λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같은 κ²½κ³  μƒμž:
λ§ˆμ΄ν”„ ι‘―η€Ί
DataTables κ²½κ³ : ν…Œμ΄λΈ” ID = DataTables_Table_0 - Ajax 였λ₯˜μž…λ‹ˆλ‹€. 이 였λ₯˜μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ http://datatables.net/tn/7 을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

https://github.com/openanalytics/shinyproxy/issues/140 κ³Ό 같이

λ‚΄ ν™˜κ²½:
OS: μš°λΆ„νˆ¬ μš°λΆ„νˆ¬ 18.04.3 LTS
인증: keycloak 7.0.0
λ¦¬λ²„μŠ€ν”„λ‘μ‹œ: Nginx
예-λΉ›λ‚˜λŠ”-μ•±:

λ„μ„œκ΄€(λΉ›λ‚˜λŠ”)
라이브러리(DT)

UI <- 유체 νŽ˜μ΄μ§€(DT::dataTableOutput('tbl'))
μ„œλ²„ <- κΈ°λŠ₯(μž…λ ₯, 좜λ ₯, μ„Έμ…˜) {
output$tbl <- DT::renderDataTable(data.frame(Col_1=c(1:10), Col_2=c(11:20)))
}
ShinyApp(UI, μ„œλ²„)

application.ymlμ—μ„œ κ°„λ‹¨ν•œ auth λ˜λŠ” ldap으둜 μ •ν™•νžˆ λ™μΌν•œ μ‹œμŠ€ν…œ(docker,shinyproxy,nginx μ„€μ •)이 문제 없이 μ‹€ν–‰λ©λ‹ˆλ‹€.

μ•„λž˜μ˜ shinyproxy.log:
2019-08-28 11:46:21.991 INFO 14337 --- [XNIO-2 task-3] eocontainerproxy.service.UserService : λ‘œκ·ΈμΈν•œ μ‚¬μš©μž [user: test1]
2019-08-28 11:46:25.142 INFO 14337 --- [XNIO-2 task-6] csdocker.client.DefaultDockerClient: μ‹œμž‘ μ»¨ν…Œμ΄λ„ˆ ID: f24f391a707d19228f5e97da1e7f8e2781230
2019-08-28 11:46:28.068 INFO 14337 --- [XNIO-2 task-6] eocontainerproxy.service.ProxyService : ν”„λ‘μ‹œ ν™œμ„±ν™” [μ‚¬μš©μž: test1] [사양: μ‚¬μš© 쀑지] [id: 4199b4a8-60dd-43e7- ad8e-0bfac025cc76]
2019-08-28 11:46:28.828 였λ₯˜ 14337 --- [XNIO-2 I/O-3] io.undertow.proxy: UT005028: /proxy_endpoint/4199b4a8-60dd-4507-ad80에 λŒ€ν•œ ν”„λ‘μ‹œ μš”μ²­ /4fba467e8b4976c85ad4be80ee538d7d/dataobj/shiny_table μ‹€νŒ¨

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

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 쀑간에 μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μΆœμ‹œλ₯Ό μ€€λΉ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  13 λŒ“κΈ€

μ‹ κ³  κ°μ‚¬ν•©λ‹ˆλ‹€! 이것은 μ‹€μ œλ‘œ #140의 λ³΅μ œλ³Έμž…λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€, 버그 μˆ˜μ •μ„ κΈ°λ‹€λ¦¬μ‹­μ‹œμ˜€

이 버그에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” 쀑간에 μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μΆœμ‹œλ₯Ό μ€€λΉ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

@tverbeke μ»€λ°‹μ΄λ‚˜ PR을 κ³΅μœ ν•  수 μžˆλ‚˜μš”? μš°λ¦¬λŠ” 이것이 μ •λ§λ‘œ ν•„μš”ν•˜κ³  λͺ‡ 가지 해킹을 μ‹œλ„ν–ˆμ§€λ§Œ μ œλŒ€λ‘œ ν•΄κ²°ν•  수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

μ»€λ°‹μ΄λ‚˜ μž‘μ—… 쀑인 λΆ„κΈ°λ₯Ό 지적해 μ£Όμ‹œλ©΄ 맀우 도움이 될 κ²ƒμž…λ‹ˆλ‹€. @tverbeke

@tverbeke μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? 맀우 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

이것은 κ΄€λ ¨ μ»€λ°‹μž…λ‹ˆλ‹€. https://github.com/openanalytics/containerproxy/commit/c99298934470b2ecee35c9eb9ad67e49fc7acd46

https://github.com/openanalytics/shinyproxy/issues/184 이것이 μ–΄λ–»κ²Œ ν•΄κ²°λ˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 인증이 μ—†μŒμœΌλ‘œ μ„€μ •λœ 경우 Keyclock 인증 없이 λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 버그에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

적극적으둜 λ¬Έμ œμ— λŒ€ν•΄ μƒκΈ°μ‹œμΌœ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ—¬λŸ¬ 문제, 특히 μ€‘λ³΅μœΌλ‘œ 마감된 이 λ¬Έμ œμ— μœ μ‚¬ν•œ μ˜κ²¬μ„ κ²Œμ‹œν•˜λŠ” 것은 생산성이 λ–¨μ–΄μ§€λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€...

https://github.com/openanalytics/shinyproxy/issues/184 이것이 μ–΄λ–»κ²Œ ν•΄κ²°λ˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 인증이 μ—†μŒμœΌλ‘œ μ„€μ •λœ 경우 Keyclock 인증 없이 λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œλ‘œ #184λŠ” 이 μˆ˜μ • 사항이 도움이 λ˜μ§€ μ•Šμ„ 수 μžˆλŠ” λ‹€λ₯Έ 문제인 것 κ°™μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 μ˜κ²¬μ€ keycloak 인증의 μ‚¬μš©μ„ μ–ΈκΈ‰ν•˜λŠ” _ν˜„μž¬ 문제_(및 #140)와 관련이 μžˆμŠ΅λ‹ˆλ‹€.

μ—¬λŸ¬ λŒ“κΈ€ μ£„μ†‘ν•©λ‹ˆλ‹€. λ‚΄ 생각은 문제의 원인이 POST μš”μ²­μ΄κΈ° λ•Œλ¬Έμ— λ™μΌν•œ 였λ₯˜λ‘œ μ‹€νŒ¨ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λΉ„μŠ·ν•œ μ’…λ₯˜μ˜ μ†”λ£¨μ…˜μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
#184의 해법을 κΈ°λŒ€ν•©λ‹ˆλ‹€β˜ΊοΈ

μ•ˆλ…•ν•˜μ„Έμš”, 이 였λ₯˜κ°€ λ‹€μ‹œ λ°œμƒν•©λ‹ˆλ‹€. 2.4.1μ—μ„œ 2.3.1둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν–ˆλŠ”λ° 였λ₯˜κ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€.

@KZARCA @LEDfan 의 μˆ˜μ • 사항은 λ‹€μŒ λ¦΄λ¦¬μŠ€μ— μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰