[ https://issues.apache.org/jira/browse/TINKERPOP-2486?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephen Mallette closed TINKERPOP-2486. --------------------------------------- Fix Version/s: 3.6.0 Assignee: Stephen Mallette Resolution: Fixed > Client does not load balance requests across available connections > ------------------------------------------------------------------ > > Key: TINKERPOP-2486 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2486 > Project: TinkerPop > Issue Type: Bug > Components: driver > Affects Versions: 3.4.8, 3.4.9 > Reporter: Divij Vaidya > Assignee: Stephen Mallette > Priority: Major > Fix For: 3.6.0 > > > The client does not load balance requests across connections in a threadpool > which cause a request failing with timeout even when a connection is > available. To verify this, the following test fails: > {code:java} > @Test > public void shouldBalanceConcurrentRequestsAcrossConnections() throws > InterruptedException { > final int connPoolSize = 16; > final Cluster cluster = TestClientFactory.build() > .minConnectionPoolSize(connPoolSize) > .maxConnectionPoolSize(connPoolSize) > .create(); > final Client.ClusteredClient client = cluster.connect(); > client.init(); > try { > final RequestMessage.Builder request = > client.buildMessage(RequestMessage.build(Tokens.OPS_EVAL)) > .add(Tokens.ARGS_GREMLIN, "Thread.sleep(5000)"); > final Callable<Connection> sendQueryCallable = () -> > client.chooseConnection(request.create()); > final List<Callable<Connection>> listOfTasks = new ArrayList<>(); > for (int i=0; i<connPoolSize; i++) { > listOfTasks.add(sendQueryCallable); > } > Set<String> channels = new HashSet<>(); > final List<Future<Connection>> executorSubmitFutures = > executorServiceForTesting.invokeAll(listOfTasks); > executorSubmitFutures.parallelStream().map(fut -> { > try { > return fut.get(); > } catch (InterruptedException e) { > e.printStackTrace(); > } catch (ExecutionException e) { > e.printStackTrace(); > } > return null; > }).forEach(conn -> channels.add(conn.getChannelId())); > > System.out.println(channels.size()); > } finally { > cluster.close(); > } > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)