[ 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)