Skip to content

Commit 69555d0

Browse files
committed
Move bookmark out of the NetworkSession constructor
1 parent 927b6b5 commit 69555d0

File tree

7 files changed

+41
-23
lines changed

7 files changed

+41
-23
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,9 @@ class LeakLoggingNetworkSession extends NetworkSession
2828
{
2929
private final String stackTrace;
3030

31-
LeakLoggingNetworkSession( ConnectionProvider connectionProvider, AccessMode mode, String bookmark,
32-
Logging logging )
31+
LeakLoggingNetworkSession( ConnectionProvider connectionProvider, AccessMode mode, Logging logging )
3332
{
34-
super( connectionProvider, mode, bookmark, logging );
33+
super( connectionProvider, mode, logging );
3534
this.stackTrace = captureStackTrace();
3635
}
3736

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

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,10 @@ public class NetworkSession implements Session, SessionResourcesHandler
5353

5454
private final AtomicBoolean isOpen = new AtomicBoolean( true );
5555

56-
public NetworkSession( ConnectionProvider connectionProvider, AccessMode mode, String bookmark, Logging logging )
56+
public NetworkSession( ConnectionProvider connectionProvider, AccessMode mode, Logging logging )
5757
{
5858
this.connectionProvider = connectionProvider;
5959
this.mode = mode;
60-
this.lastBookmark = bookmark;
6160
this.logger = logging.getLog( "Session-" + hashCode() );
6261
}
6362

@@ -99,7 +98,8 @@ public StatementResult run( Statement statement )
9998
return run( currentConnection, statement, this );
10099
}
101100

102-
public static StatementResult run( Connection connection, Statement statement, SessionResourcesHandler resourcesHandler )
101+
public static StatementResult run( Connection connection, Statement statement,
102+
SessionResourcesHandler resourcesHandler )
103103
{
104104
InternalStatementResult result = new InternalStatementResult( connection, resourcesHandler, null, statement );
105105
connection.run( statement.text(), statement.parameters().asMap( Values.ofValue() ),
@@ -118,7 +118,7 @@ public synchronized void reset()
118118
if ( currentTransaction != null )
119119
{
120120
currentTransaction.markToClose();
121-
lastBookmark = currentTransaction.bookmark();
121+
setLastBookmark( currentTransaction.bookmark() );
122122
currentTransaction = null;
123123
}
124124
if ( currentConnection != null )
@@ -157,7 +157,7 @@ public void close()
157157
}
158158
}
159159
}
160-
160+
161161
syncAndCloseCurrentConnection();
162162
}
163163

@@ -170,7 +170,7 @@ public synchronized Transaction beginTransaction()
170170
@Override
171171
public synchronized Transaction beginTransaction( String bookmark )
172172
{
173-
lastBookmark = bookmark;
173+
setLastBookmark( bookmark );
174174
return beginTransaction();
175175
}
176176

@@ -186,6 +186,14 @@ public <T> T writeTransaction( Function<Transaction,T> work )
186186
return transaction( AccessMode.WRITE, work );
187187
}
188188

189+
void setLastBookmark( String bookmark )
190+
{
191+
if ( bookmark != null )
192+
{
193+
lastBookmark = bookmark;
194+
}
195+
}
196+
189197
@Override
190198
public String lastBookmark()
191199
{
@@ -210,11 +218,7 @@ public synchronized void onTransactionClosed( ExplicitTransaction tx )
210218
if ( currentTransaction != null && currentTransaction == tx )
211219
{
212220
closeCurrentConnection();
213-
String bookmark = currentTransaction.bookmark();
214-
if ( bookmark != null )
215-
{
216-
lastBookmark = bookmark;
217-
}
221+
setLastBookmark( currentTransaction.bookmark() );
218222
currentTransaction = null;
219223
}
220224
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,17 @@ public class SessionFactoryImpl implements SessionFactory
4040
@Override
4141
public Session newInstance( AccessMode mode, String bookmark )
4242
{
43+
NetworkSession session;
4344
if ( leakedSessionsLoggingEnabled )
4445
{
45-
return new LeakLoggingNetworkSession( connectionProvider, mode, bookmark, logging );
46+
session = new LeakLoggingNetworkSession( connectionProvider, mode, logging );
4647
}
47-
return new NetworkSession( connectionProvider, mode, bookmark, logging );
48+
else
49+
{
50+
session = new NetworkSession( connectionProvider, mode, logging );
51+
}
52+
session.setLastBookmark( bookmark );
53+
return session;
4854
}
4955

5056
@Override

driver/src/test/java/org/neo4j/driver/internal/LeakLoggingNetworkSessionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private static void finalize( Session session ) throws Exception
9898

9999
private static LeakLoggingNetworkSession newSession( Logging logging, boolean openConnection )
100100
{
101-
return new LeakLoggingNetworkSession( connectionProviderMock( openConnection ), READ, null, logging );
101+
return new LeakLoggingNetworkSession( connectionProviderMock( openConnection ), READ, logging );
102102
}
103103

104104
private static ConnectionProvider connectionProviderMock( final boolean openConnection )

driver/src/test/java/org/neo4j/driver/internal/NetworkSessionTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,9 @@ private static NetworkSession newSession( ConnectionProvider connectionProvider,
758758

759759
private static NetworkSession newSession( ConnectionProvider connectionProvider, AccessMode mode, String bookmark )
760760
{
761-
return new NetworkSession( connectionProvider, mode, bookmark, DEV_NULL_LOGGING );
761+
NetworkSession session = new NetworkSession( connectionProvider, mode, DEV_NULL_LOGGING );
762+
session.setLastBookmark( bookmark );
763+
return session;
762764
}
763765

764766
private static PooledConnection openConnectionMock()

driver/src/test/java/org/neo4j/driver/internal/RoutingDriverTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,18 +438,19 @@ private static class NetworkSessionWithAddressFactory extends SessionFactoryImpl
438438
@Override
439439
public Session newInstance( AccessMode mode, String bookmark )
440440
{
441-
return new NetworkSessionWithAddress( connectionProvider, mode, bookmark, logging );
441+
NetworkSessionWithAddress session = new NetworkSessionWithAddress( connectionProvider, mode, logging );
442+
session.setLastBookmark( bookmark );
443+
return session;
442444
}
443445
}
444446

445447
private static class NetworkSessionWithAddress extends NetworkSession
446448
{
447449
final BoltServerAddress address;
448450

449-
NetworkSessionWithAddress( ConnectionProvider connectionProvider, AccessMode mode, String bookmark,
450-
Logging logging )
451+
NetworkSessionWithAddress( ConnectionProvider connectionProvider, AccessMode mode, Logging logging )
451452
{
452-
super( connectionProvider, mode, bookmark, logging );
453+
super( connectionProvider, mode, logging );
453454
try ( PooledConnection connection = connectionProvider.acquireConnection( mode ) )
454455
{
455456
this.address = connection.boltServerAddress();

driver/src/test/java/org/neo4j/driver/internal/cluster/LoadBalancerTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.neo4j.driver.internal.spi.ConnectionPool;
3434
import org.neo4j.driver.internal.spi.PooledConnection;
3535
import org.neo4j.driver.v1.AccessMode;
36+
import org.neo4j.driver.v1.Session;
3637
import org.neo4j.driver.v1.Transaction;
3738
import org.neo4j.driver.v1.Value;
3839
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
@@ -174,7 +175,7 @@ public void shouldForgetAddressAndItsConnectionsOnServiceUnavailableWhileClosing
174175
Rediscovery rediscovery = mock( Rediscovery.class );
175176
LoadBalancer loadBalancer = new LoadBalancer( routingTable, connectionPool, rediscovery, DEV_NULL_LOGGER );
176177

177-
NetworkSession session = new NetworkSession( loadBalancer, AccessMode.WRITE, null, DEV_NULL_LOGGING );
178+
Session session = newSession( loadBalancer );
178179
// begin transaction to make session obtain a connection
179180
session.beginTransaction();
180181

@@ -206,6 +207,11 @@ private LoadBalancer setupLoadBalancer( PooledConnection writerConn, PooledConne
206207
return new LoadBalancer( routingTable, connPool, mock( Rediscovery.class ), DEV_NULL_LOGGER );
207208
}
208209

210+
private static Session newSession( LoadBalancer loadBalancer )
211+
{
212+
return new NetworkSession( loadBalancer, AccessMode.WRITE, DEV_NULL_LOGGING );
213+
}
214+
209215
private static PooledConnection newConnectionWithFailingSync( BoltServerAddress address )
210216
{
211217
PooledConnection connection = mock( PooledConnection.class );

0 commit comments

Comments
 (0)