final Stopwatch watch = Stopwatch.createUnstarted();
final List<CompletableFuture<?>> futures = new ArrayList<CompletableFuture<?>>();
try (CqlSession session = CqlSession.builder().withConfigLoader(DriverConfigLoader.fromClasspath("app.cassandra.conf")).build()) {
watch.reset();
watch.start();
for (int i = 0; i < 10000; i++) {
final int v = i + 1;
final SimpleStatement stmt = SimpleStatement.builder("INSERT INTO some_table (id, value) VALUES (?, ?)").build();
CompletableFuture<AsyncResultSet> f = session.prepareAsync(stmt).toCompletableFuture().thenCompose(p -> { return session.executeAsync(p.bind(1L, v)).toCompletableFuture(); });
futures.add(f);
}
futures.forEach(CompletableFuture::join);
watch.stop();
System.out.println(String.format("Elapsed: %d ms.", watch.elapsed(TimeUnit.MILLISECONDS)));
}
The above code is producing the following exception every time.
java.util.concurrent.CompletionException: com.datastax.oss.driver.api.core.AllNodesFailedException: All 1 node(s) tried for the query failed (showing first 1, use getErrors() for more: /172.31.64.12:9042: com.datastax.oss.driver.api.core.connection.BusyConnectionException: Connection has exceeded its maximum of 1024 simultaneous requests)
at java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:326)
at java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:338)
at java.util.concurrent.CompletableFuture.uniRelay(CompletableFuture.java:911)
at java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:899)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
at com.datastax.oss.driver.internal.core.cql.CqlRequestHandler.setFinalError(CqlRequestHandler.java:442)
at com.datastax.oss.driver.internal.core.cql.CqlRequestHandler.sendRequest(CqlRequestHandler.java:276)
at com.datastax.oss.driver.internal.core.cql.CqlRequestHandler.access$800(CqlRequestHandler.java:95)
at com.datastax.oss.driver.internal.core.cql.CqlRequestHandler$NodeResponseCallback.operationComplete(CqlRequestHandler.java:516)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:485)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
at io.netty.util.concurrent.DefaultPromise.setFailure(DefaultPromise.java:112)
at io.netty.channel.DefaultChannelPromise.setFailure(DefaultChannelPromise.java:89)
at com.datastax.oss.driver.internal.core.channel.InFlightHandler.write(InFlightHandler.java:124)
at com.datastax.oss.driver.internal.core.channel.InFlightHandler.write(InFlightHandler.java:108)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723)
at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1026)
at io.netty.channel.AbstractChannel.write(AbstractChannel.java:299)
at com.datastax.oss.driver.internal.core.channel.DefaultWriteCoalescer$Flusher.runOnEventLoop(DefaultWriteCoalescer.java:106)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:495)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.datastax.oss.driver.api.core.AllNodesFailedException: All 1 node(s) tried for the query failed (showing first 1, use getErrors() for more: /172.31.64.12:9042: com.datastax.oss.driver.api.core.connection.BusyConnectionException: Connection has exceeded its maximum of 1024 simultaneous requests)
at com.datastax.oss.driver.api.core.AllNodesFailedException.fromErrors(AllNodesFailedException.java:39)
at com.datastax.oss.driver.api.core.AllNodesFailedException.fromErrors(AllNodesFailedException.java:56)
... 23 more
Client: Mac OS X AdoptJDK 1.8
Server: CentOS-7