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

Mike Jumper commented on GUACAMOLE-1938:
----------------------------------------

{quote}
it appears the Guacamole "load balancing" algorithm ... does not try other 
connections if a particular connection does not work (such as an invalid 
connection address or timeout because it is down).
{quote}

It does, actually:

https://github.com/apache/guacamole-client/blob/83f0f193bd08f328fe43147bbe6787d721628509/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java#L703

Perhaps it's just not patient enough while waiting for those failures?

> Try other servers for load balancing group if a server times out/other 
> connectivity event
> -----------------------------------------------------------------------------------------
>
>                 Key: GUACAMOLE-1938
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-1938
>             Project: Guacamole
>          Issue Type: Improvement
>          Components: guacamole-auth-jdbc
>    Affects Versions: 1.5.4
>            Reporter: sbcbus
>            Priority: Trivial
>         Attachments: Screenshot 2024-04-04 at 3.04.23 PM.png
>
>
> Apologies if this issue exists somewhere, but I searched and posted on the 
> mailing list.
> From trying myself with some test cases, receiving issue reports via my 
> users, and discussions on the mailing list, it appears the Guacamole "load 
> balancing" algorithm only handles the state where other users are connected 
> and* does not try other connections if a particular connection does not work 
> (such as an invalid connection address or timeout because it is down).*
> I would love for this functionality to exist to greatly reduce scenarios such 
> as when one machine out of many is down and users seem to always get routed 
> to that machine (either via affinity, or the LB algorithm – which as another 
> request it would be nice if that could be a bit randomized to avoid always 
> being taken to the same machine) even if many other working ones exist.
> In the scenario with a machine that isn't responding, I get a "connection is 
> closed because server is taking too long to respond", but others are not 
> tried.
> Screenshot is attached, and in the logs I get this:
> {noformat}
> Exception in thread "Thread-3" java.lang.IllegalStateException: Message will 
> not be sent because the WebSocket session has been closed
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:449)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:307)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:249)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:191)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:36)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:152)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:172)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.access$100(GuacamoleWebSocketTunnelEndpoint.java:53)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:238)
> {noformat}



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

Reply via email to