Skip to content

Commit 0bb32e7

Browse files
author
Zhen Li
committed
Tests for allowing more statements and tx after reset
1 parent 2af94d0 commit 0bb32e7

File tree

2 files changed

+49
-13
lines changed

2 files changed

+49
-13
lines changed

driver/src/main/java/org/neo4j/driver/internal/NetworkSession.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ public void run()
5959

6060
private ExplicitTransaction currentTransaction;
6161
private AtomicBoolean isOpen = new AtomicBoolean( true );
62-
private AtomicBoolean markedToClose = new AtomicBoolean( false );
6362

6463
NetworkSession( Connection connection, Logger logger )
6564
{
@@ -106,19 +105,17 @@ public StatementResult run( Statement statement )
106105

107106
public void reset()
108107
{
108+
ensureSessionIsOpen();
109109
ensureNoUnrecoverableError();
110110
ensureConnectionIsOpen();
111111

112-
if( markedToClose.compareAndSet( false, true ) )
113-
{
114-
connection.resetAsync();
115-
}
112+
connection.resetAsync();
116113
}
117114

118115
@Override
119116
public boolean isOpen()
120117
{
121-
return isOpen.get() && !markedToClose.get();
118+
return isOpen.get();
122119
}
123120

124121
@Override
@@ -206,13 +203,15 @@ public TypeSystem typeSystem()
206203

207204
private void ensureConnectionIsValidBeforeRunningSession()
208205
{
206+
ensureSessionIsOpen();
209207
ensureNoUnrecoverableError();
210208
ensureNoOpenTransactionBeforeRunningSession();
211209
ensureConnectionIsOpen();
212210
}
213211

214212
private void ensureConnectionIsValidBeforeOpeningTransaction()
215213
{
214+
ensureSessionIsOpen();
216215
ensureNoUnrecoverableError();
217216
ensureNoOpenTransactionBeforeOpeningTransaction();
218217
ensureConnectionIsOpen();

driver/src/test/java/org/neo4j/driver/v1/integration/SessionIT.java

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,7 @@
2121
import org.junit.Rule;
2222
import org.junit.Test;
2323

24-
import org.neo4j.driver.v1.AuthToken;
25-
import org.neo4j.driver.v1.AuthTokens;
26-
import org.neo4j.driver.v1.Driver;
27-
import org.neo4j.driver.v1.GraphDatabase;
28-
import org.neo4j.driver.v1.Session;
29-
import org.neo4j.driver.v1.StatementResult;
24+
import org.neo4j.driver.v1.*;
3025
import org.neo4j.driver.v1.exceptions.ClientException;
3126
import org.neo4j.driver.v1.exceptions.Neo4jException;
3227
import org.neo4j.driver.v1.util.TestNeo4j;
@@ -126,7 +121,6 @@ public void shouldKillLongRunningStatement() throws Throwable
126121
assertTrue( startTime > 0 );
127122
assertTrue( endTime - startTime > killTimeout * 1000 ); // get reset by session.reset
128123
assertTrue( endTime - startTime < executionTimeout * 1000 / 2 ); // finished before execution finished
129-
assertFalse( session.isOpen() );
130124
}
131125
catch ( Exception e )
132126
{
@@ -201,4 +195,47 @@ public void run()
201195
}
202196
} ).start();
203197
}
198+
199+
@Test
200+
public void shouldAllowMoreStatementAfterSessionReset()
201+
{
202+
// Given
203+
try( Driver driver = GraphDatabase.driver( neo4j.uri() );
204+
Session session = driver.session() )
205+
{
206+
207+
session.run( "Return 1" ).consume();
208+
209+
// When reset the state of this session
210+
session.reset();
211+
212+
// Then can run successfully more statements without any error
213+
session.run( "Return 2" ).consume();
214+
}
215+
}
216+
217+
@Test
218+
public void shouldAllowMoreTxAfterSessionReset()
219+
{
220+
// Given
221+
try( Driver driver = GraphDatabase.driver( neo4j.uri() );
222+
Session session = driver.session() )
223+
{
224+
try( Transaction tx = session.beginTransaction() )
225+
{
226+
tx.run("Return 1");
227+
tx.success();
228+
}
229+
230+
// When reset the state of this session
231+
session.reset();
232+
233+
// Then can run more Tx
234+
try( Transaction tx = session.beginTransaction() )
235+
{
236+
tx.run("Return 2");
237+
tx.success();
238+
}
239+
}
240+
}
204241
}

0 commit comments

Comments
 (0)