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