[ 
https://issues.apache.org/jira/browse/SYNCOPE-1995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18111532#comment-18111532
 ] 

Francesco Chicchiriccò commented on SYNCOPE-1995:
-------------------------------------------------

I was also able to reproduce the indicated issue by using the Public Demo at 
[https://syncope-vm.apache.org/syncope-console/]

When setting up an SSH tunnel to forward {{localhost:9080}} at 
{{{}syncope-vm{}}}, however, I could not generate the error.

My suspects point to the configuration of the HTTP reverse proxy sitting in 
front of the Tomcat instance running the Apache Syncope standalone distribution.

The configuration is as follows:
{code:sh}
RewriteEngine On
RewriteCond %{HTTP:UPGRADE} websocket [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8090%{REQUEST_URI} [P]

<Location "/syncope-console/wicket/websocket">
  RewriteEngine On
  RewriteRule /syncope-console/wicket/websocket 
ws://localhost:9080/syncope-console/wicket/websocket [P,L]
  ProxyPass ws://localhost:9080/syncope-console/wicket/websocket
  ProxyPassReverse ws://localhost:9080/syncope-console/wicket/websocket
</Location>
<Location "/syncope-console">
  ProxyPass http://localhost:9080/syncope-console
  ProxyPassReverse http://localhost:9080/syncope-console
</Location>
{code}

According to the docs, it should be possible to rewrite the above as

{code:sh}
<Location "/syncope-console">
  ProxyPass http://localhost:9080/syncope-console upgrade=websocket
  ProxyPassReverse http://localhost:9080/syncope-console
</Location>
{code}

Not sure if this might improve the situation.

> Console is throwing exception in slow environments on pages with websockets 
> enabled
> -----------------------------------------------------------------------------------
>
>                 Key: SYNCOPE-1995
>                 URL: https://issues.apache.org/jira/browse/SYNCOPE-1995
>             Project: Syncope
>          Issue Type: Bug
>          Components: console
>    Affects Versions: 4.0.8, 4.1.2
>            Reporter: Andrea Patricelli
>            Priority: Major
>             Fix For: 4.1.3, 5.0.0
>
>
> # Login into Syncope console, also the playground environment
>  # Open browser dev tools and, under Network, set instead of "No throttling" 
> the value "3G", in order to slow down the XHR calls. This is the key point.
>  # Navigate into Engagements for example and, once you see something 
> clickable (even with page fully loaded, click on entries (task jobs). 
> Continue clicking on jobs alternating them until you'll get something like 
> this exception
> {code:java}
> Unexpected RuntimeExceptionLast cause: Component 
> 'body:content:tabbedPanel:panel:firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable:body:rows:5'
>  has been removed from page.
> StacktraceRoot 
> cause:org.apache.wicket.core.request.handler.ComponentNotFoundException: 
> Component 
> 'body:content:tabbedPanel:panel:firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable:body:rows:5'
>  has been removed from page.
>      at 
> org.apache.wicket.core.request.handler.ListenerRequestHandler.respond(ListenerRequestHandler.java:166)
>      at 
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:913)
>      at 
> org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:63)
>      at 
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:294)
>      at 
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:255)
>      at 
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:277)
>      at 
> org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:67)
>      at 
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:208)
>      at 
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:307)
>      at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
>      at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
>      at 
> org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
>      at 
> org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
>      at 
> org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:490)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:351)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:83)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:129)
>      at 
> org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
>      at 
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:125)
>      at 
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
>      at 
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
>      at 
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
>      at 
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
>      at 
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181)
>      at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
>      at 
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
>      at 
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
>      at 
> org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
>      at 
> org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
>  {code}
>  The more jobs there are the easiest is to get this exception.
> By disabling console websockets on console with 
> {code:java}
> wicket.external.websocket.enabled=true
> wicket.external.websocket.registerServerEndpoint.enabled=false {code}
> the issue is solved, but auto refresh of the job status thus is disabled.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to