| 
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