|
18 | 18 | */
|
19 | 19 | package org.neo4j.driver.integration;
|
20 | 20 |
|
| 21 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
21 | 22 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
| 23 | +import static org.junit.jupiter.api.Assertions.assertTrue; |
22 | 24 | import static org.neo4j.driver.SessionConfig.builder;
|
23 | 25 |
|
24 | 26 | import org.junit.jupiter.api.Test;
|
25 | 27 | import org.junit.jupiter.api.extension.RegisterExtension;
|
26 | 28 | import org.neo4j.driver.AccessMode;
|
| 29 | +import org.neo4j.driver.Config; |
27 | 30 | import org.neo4j.driver.Driver;
|
28 | 31 | import org.neo4j.driver.GraphDatabase;
|
29 | 32 | import org.neo4j.driver.Session;
|
| 33 | +import org.neo4j.driver.internal.spi.ConnectionPool; |
30 | 34 | import org.neo4j.driver.testutil.DatabaseExtension;
|
31 | 35 | import org.neo4j.driver.testutil.ParallelizableIT;
|
32 | 36 |
|
| 37 | +import java.util.Map; |
| 38 | +import java.util.concurrent.CompletableFuture; |
| 39 | + |
33 | 40 | @ParallelizableIT
|
34 | 41 | class DriverCloseIT {
|
35 | 42 | @RegisterExtension
|
@@ -84,6 +91,23 @@ void useSessionAfterDriverIsClosed() {
|
84 | 91 | assertThrows(IllegalStateException.class, () -> session.run("CREATE ()"));
|
85 | 92 | }
|
86 | 93 |
|
| 94 | + @Test |
| 95 | + void shouldInterruptStreamConsumptionAndEndRetriesOnDriverClosure() { |
| 96 | + var fetchSize = 5; |
| 97 | + var config = Config.builder() |
| 98 | + .withFetchSize(fetchSize) |
| 99 | + .build(); |
| 100 | + var driver = GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config); |
| 101 | + var session = driver.session(); |
| 102 | + |
| 103 | + var exception = assertThrows(IllegalStateException.class, () -> session.executeRead(tx -> { |
| 104 | + var result = tx.run("UNWIND range(0, $limit) AS x RETURN x", Map.of("limit", fetchSize * 3)); |
| 105 | + CompletableFuture.runAsync(driver::close); |
| 106 | + return result.list(); |
| 107 | + })); |
| 108 | + assertEquals(ConnectionPool.CONNECTION_POOL_CLOSED_ERROR_MESSAGE, exception.getMessage()); |
| 109 | + } |
| 110 | + |
87 | 111 | private static Driver createDriver() {
|
88 | 112 | return GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager());
|
89 | 113 | }
|
|
0 commit comments