GUACAMOLE-102: Remove redundant iterations through connections.
Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/56f6c4bb Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/56f6c4bb Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/56f6c4bb Branch: refs/heads/master Commit: 56f6c4bb2ff93e3af4538d3f8011a89716f292e3 Parents: 075e880 Author: Nick Couchman <[email protected]> Authored: Wed May 31 20:18:25 2017 -0400 Committer: Nick Couchman <[email protected]> Committed: Mon Jun 5 15:34:21 2017 -0400 ---------------------------------------------------------------------- .../RestrictedGuacamoleTunnelService.java | 27 +++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/56f6c4bb/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java index 49af081..590648c 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java @@ -48,6 +48,11 @@ public class RestrictedGuacamoleTunnelService extends AbstractGuacamoleTunnelService { /** + * Logger for this class. + */ + private static final Logger logger = LoggerFactory.getLogger(RestrictedGuacamoleTunnelService.class); + + /** * The environment of the Guacamole server. */ @Inject @@ -176,14 +181,6 @@ public class RestrictedGuacamoleTunnelService // Get username String username = user.getIdentifier(); - // Remove connections where weight < 0 - Iterator<ModeledConnection> i = connections.iterator(); - while(i.hasNext()) { - Integer weight = i.next().getConnectionWeight(); - if (weight != null && weight.intValue() < 0) - i.remove(); - } - // Sort connections in ascending order of usage ModeledConnection[] sortedConnections = connections.toArray(new ModeledConnection[connections.size()]); Arrays.sort(sortedConnections, new Comparator<ModeledConnection>() { @@ -195,12 +192,22 @@ public class RestrictedGuacamoleTunnelService // Check if weight of a is null, assign 1 if it is. if (a.getConnectionWeight() == null) weightA = 1; + // If weight is less than 1, host will be disabled + // but for sorting we set it to 1 to avoid divide + // by 0. + else if (a.getConnectionWeight().intValue() < 1) + weightA = 1; else weightA = a.getConnectionWeight().intValue() + 1; // Check if weight of b is null, assign 1 if it is. if (b.getConnectionWeight() == null) weightB = 1; + // If weight is less than 1, host will be disabled, + // but for sorting we set it to 1 to avoid divide + // by 0. + else if (b.getConnectionWeight().intValue() < 1) + weightB = 1; else weightB = b.getConnectionWeight().intValue() + 1; @@ -220,8 +227,10 @@ public class RestrictedGuacamoleTunnelService for (ModeledConnection connection : sortedConnections) { // If connection weight is zero or negative, this host is disabled and should not be used. - if (connection.getConnectionWeight() < 1) + if (connection.getConnectionWeight() != null && connection.getConnectionWeight().intValue() < 1) { + logger.warn("Weight for {} is non-null and < 1, connection will be skipped.", connection.getName()); continue; + } // Attempt to aquire connection according to per-user limits Seat seat = new Seat(username, connection.getIdentifier());
