Skip to content

Commit efdf8bd

Browse files
author
Zhen
committed
Move server info into result summary
Replaced session.server with resultSummary.server.version Replaced session.address with resultSummary.server.address
1 parent 3649855 commit efdf8bd

27 files changed

+355
-131
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import java.util.List;
2525
import java.util.Queue;
2626

27-
import org.neo4j.driver.internal.spi.Connection;
2827
import org.neo4j.driver.internal.spi.Collector;
28+
import org.neo4j.driver.internal.spi.Connection;
2929
import org.neo4j.driver.internal.summary.SummaryBuilder;
3030
import org.neo4j.driver.v1.Record;
3131
import org.neo4j.driver.v1.Statement;
@@ -37,6 +37,7 @@
3737
import org.neo4j.driver.v1.summary.Plan;
3838
import org.neo4j.driver.v1.summary.ProfiledPlan;
3939
import org.neo4j.driver.v1.summary.ResultSummary;
40+
import org.neo4j.driver.v1.summary.ServerInfo;
4041
import org.neo4j.driver.v1.summary.StatementType;
4142
import org.neo4j.driver.v1.summary.SummaryCounters;
4243
import org.neo4j.driver.v1.util.Function;
@@ -61,7 +62,7 @@ public class InternalStatementResult implements StatementResult
6162
{
6263
this.connection = connection;
6364
this.runResponseCollector = newRunResponseCollector();
64-
this.pullAllResponseCollector = newStreamResponseCollector( transaction, statement );
65+
this.pullAllResponseCollector = newStreamResponseCollector( transaction, statement, connection.server() );
6566
}
6667

6768
private Collector newRunResponseCollector()
@@ -91,9 +92,10 @@ public void resultAvailableAfter( long l )
9192
};
9293
}
9394

94-
private Collector newStreamResponseCollector( final ExplicitTransaction transaction, final Statement statement )
95+
private Collector newStreamResponseCollector( final ExplicitTransaction transaction, final Statement statement,
96+
final ServerInfo serverInfo )
9597
{
96-
final SummaryBuilder summaryBuilder = new SummaryBuilder( statement );
98+
final SummaryBuilder summaryBuilder = new SummaryBuilder( statement, serverInfo );
9799

98100
return new Collector.NoOperationCollector()
99101
{

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,6 @@ private void closeConnection()
194194
connection.close();
195195
}
196196

197-
@Override
198-
public String server()
199-
{
200-
return connection.server();
201-
}
202-
203197
@Override
204198
public Transaction beginTransaction()
205199
{

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.neo4j.driver.internal.spi.ConnectionPool;
2727
import org.neo4j.driver.internal.util.Clock;
2828
import org.neo4j.driver.v1.AccessMode;
29-
import org.neo4j.driver.v1.Config;
3029
import org.neo4j.driver.v1.Logging;
3130
import org.neo4j.driver.v1.Session;
3231
import org.neo4j.driver.v1.exceptions.ClientException;
@@ -70,7 +69,7 @@ public Session session()
7069
public Session session( final AccessMode mode )
7170
{
7271
Connection connection = acquireConnection( mode );
73-
return new RoutingNetworkSession( new NetworkSession( connection ), mode, connection.address(), loadBalancer );
72+
return new RoutingNetworkSession( new NetworkSession( connection ), mode, connection.boltServerAddress(), loadBalancer );
7473
}
7574

7675
private Connection acquireConnection( AccessMode role )

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,6 @@ public void close()
154154
}
155155
}
156156

157-
@Override
158-
public String server()
159-
{
160-
return delegate.server();
161-
}
162-
163157
public BoltServerAddress address()
164158
{
165159
return address;

driver/src/main/java/org/neo4j/driver/internal/net/ConcurrencyGuardingConnection.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.neo4j.driver.v1.Logger;
2727
import org.neo4j.driver.v1.Value;
2828
import org.neo4j.driver.v1.exceptions.ClientException;
29+
import org.neo4j.driver.v1.summary.ServerInfo;
2930

3031
/**
3132
* This class ensures there can only ever be one thread using a connection at
@@ -231,15 +232,15 @@ private void markAsInUse()
231232
}
232233

233234
@Override
234-
public String server()
235+
public ServerInfo server()
235236
{
236237
return delegate.server();
237238
}
238239

239240
@Override
240-
public BoltServerAddress address()
241+
public BoltServerAddress boltServerAddress()
241242
{
242-
return delegate.address();
243+
return delegate.boltServerAddress();
243244
}
244245

245246
@Override

driver/src/main/java/org/neo4j/driver/internal/net/SocketConnection.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@
3232
import org.neo4j.driver.internal.security.SecurityPlan;
3333
import org.neo4j.driver.internal.spi.Collector;
3434
import org.neo4j.driver.internal.spi.Connection;
35+
import org.neo4j.driver.internal.summary.InternalServerInfo;
3536
import org.neo4j.driver.v1.Logger;
3637
import org.neo4j.driver.v1.Logging;
3738
import org.neo4j.driver.v1.Value;
3839
import org.neo4j.driver.v1.exceptions.ClientException;
3940
import org.neo4j.driver.v1.exceptions.Neo4jException;
41+
import org.neo4j.driver.v1.summary.ServerInfo;
4042

4143
import static java.lang.String.format;
4244
import static org.neo4j.driver.internal.messaging.AckFailureMessage.ACK_FAILURE;
@@ -50,7 +52,7 @@ public class SocketConnection implements Connection
5052
private final SocketResponseHandler responseHandler;
5153
private AtomicBoolean isInterrupted = new AtomicBoolean( false );
5254
private AtomicBoolean isAckFailureMuted = new AtomicBoolean( false );
53-
private final Collector.InitCollector initCollector = new Collector.InitCollector();
55+
private InternalServerInfo serverInfo;
5456

5557
private final SocketClient socket;
5658

@@ -59,6 +61,7 @@ public class SocketConnection implements Connection
5961
public SocketConnection( BoltServerAddress address, SecurityPlan securityPlan, Logging logging )
6062
{
6163
this.logger = logging.getLog( format( "conn-%s", UUID.randomUUID().toString() ) );
64+
this.socket = new SocketClient( address, securityPlan, logger );
6265

6366
if( logger.isDebugEnabled() )
6467
{
@@ -69,15 +72,34 @@ public SocketConnection( BoltServerAddress address, SecurityPlan securityPlan, L
6972
this.responseHandler = new SocketResponseHandler();
7073
}
7174

72-
this.socket = new SocketClient( address, securityPlan, logger );
73-
socket.start();
75+
this.socket.start();
76+
}
77+
78+
// for mocked socket testing
79+
SocketConnection( SocketClient socket, Logger logger )
80+
{
81+
this.socket = socket;
82+
this.logger = logger;
83+
84+
if( logger.isDebugEnabled() )
85+
{
86+
this.responseHandler = new LoggingResponseHandler( logger );
87+
}
88+
else
89+
{
90+
this.responseHandler = new SocketResponseHandler();
91+
}
92+
93+
this.socket.start();
7494
}
7595

7696
@Override
7797
public void init( String clientName, Map<String,Value> authToken )
7898
{
99+
Collector.InitCollector initCollector = new Collector.InitCollector();
79100
queueMessage( new InitMessage( clientName, authToken ), initCollector );
80101
sync();
102+
this.serverInfo = new InternalServerInfo( socket.address(), initCollector.server() );
81103
}
82104

83105
@Override
@@ -267,15 +289,15 @@ public boolean isAckFailureMuted()
267289
}
268290

269291
@Override
270-
public String server()
292+
public ServerInfo server()
271293
{
272-
return initCollector.server( );
294+
return this.serverInfo;
273295
}
274296

275297
@Override
276-
public BoltServerAddress address()
298+
public BoltServerAddress boltServerAddress()
277299
{
278-
return this.socket.address();
300+
return this.serverInfo.boltServerAddress();
279301
}
280302

281303
@Override

driver/src/main/java/org/neo4j/driver/internal/net/SocketResponseHandler.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,24 +84,24 @@ public void handleFailureMessage( String code, String message )
8484
public void handleSuccessMessage( Map<String,Value> meta )
8585
{
8686
Collector collector = collectors.remove();
87-
collectServer( collector, meta.get( "server" ));
87+
collectServerVersion( collector, meta.get( "server" ) );
8888
collectFields( collector, meta.get( "fields" ) );
8989
collectType( collector, meta.get( "type" ) );
9090
collectStatistics( collector, meta.get( "stats" ) );
9191
collectPlan( collector, meta.get( "plan" ) );
9292
collectProfile( collector, meta.get( "profile" ) );
9393
collectNotifications( collector, meta.get( "notifications" ) );
94-
collectResultAvailableAfter( collector, meta.get("result_available_after"));
95-
collectResultConsumedAfter( collector, meta.get("result_consumed_after"));
94+
collectResultAvailableAfter( collector, meta.get("result_available_after") );
95+
collectResultConsumedAfter( collector, meta.get("result_consumed_after") );
9696
collectBookmark( collector, meta.get( "bookmark" ) );
9797
collector.doneSuccess();
9898
}
9999

100-
private void collectServer( Collector collector, Value server )
100+
private void collectServerVersion( Collector collector, Value serverVersion )
101101
{
102-
if (server != null)
102+
if ( serverVersion != null )
103103
{
104-
collector.server( server.asString() );
104+
collector.serverVersion( serverVersion.asString() );
105105
}
106106
}
107107

driver/src/main/java/org/neo4j/driver/internal/net/pooling/PooledConnection.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.neo4j.driver.v1.Logger;
2929
import org.neo4j.driver.v1.Value;
3030
import org.neo4j.driver.v1.exceptions.Neo4jException;
31+
import org.neo4j.driver.v1.summary.ServerInfo;
32+
3133
/**
3234
* The state of a pooledConnection from a pool point of view could be one of the following:
3335
* Created,
@@ -233,15 +235,15 @@ public boolean isAckFailureMuted()
233235
}
234236

235237
@Override
236-
public String server()
238+
public ServerInfo server()
237239
{
238240
return delegate.server();
239241
}
240242

241243
@Override
242-
public BoltServerAddress address()
244+
public BoltServerAddress boltServerAddress()
243245
{
244-
return delegate.address();
246+
return delegate.boltServerAddress();
245247
}
246248

247249
@Override
@@ -257,7 +259,7 @@ public void dispose()
257259

258260
/**
259261
* If something goes wrong with the delegate, we want to figure out if this "wrong" is something that means
260-
* the connection is screwed (and thus should be evicted from the pool), or if it's something that we can
262+
* the connection cannot be reused (and thus should be evicted from the pool), or if it's something that we can
261263
* safely recover from.
262264
* @param e the exception the delegate threw
263265
*/

driver/src/main/java/org/neo4j/driver/internal/net/pooling/PooledConnectionValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public Boolean apply( PooledConnection pooledConnection )
4343
{
4444
// once the pooledConn has marked to have unrecoverable errors, there is no way to remove the error
4545
// and we should close the conn without bothering to reset the conn at all
46-
return pool.hasAddress( pooledConnection.address() ) &&
46+
return pool.hasAddress( pooledConnection.boltServerAddress() ) &&
4747
!pooledConnection.hasUnrecoverableErrors() &&
4848
reset( pooledConnection ) &&
4949
(pooledConnection.idleTime() <= poolSettings.idleTimeBeforeConnectionTest() ||

driver/src/main/java/org/neo4j/driver/internal/spi/Collector.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void doneIgnored()
5454
}
5555

5656
@Override
57-
public void server( String server )
57+
public void serverVersion( String server )
5858
{
5959
this.server = server;
6060
}
@@ -160,7 +160,7 @@ public void resultAvailableAfter( long l ) {}
160160
public void resultConsumedAfter( long l ) {}
161161

162162
@Override
163-
public void server( String server ){}
163+
public void serverVersion( String server ){}
164164
}
165165

166166
// TODO: This should be modified to simply have head/record/tail methods
@@ -193,6 +193,6 @@ public void server( String server ){}
193193

194194
void resultConsumedAfter( long l );
195195

196-
void server( String server );
196+
void serverVersion( String server );
197197
}
198198

driver/src/main/java/org/neo4j/driver/internal/spi/Connection.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.neo4j.driver.internal.net.BoltServerAddress;
2424
import org.neo4j.driver.v1.Logger;
2525
import org.neo4j.driver.v1.Value;
26+
import org.neo4j.driver.v1.summary.ServerInfo;
2627

2728
/**
2829
* A connection is an abstraction provided by an underlying transport implementation,
@@ -121,15 +122,15 @@ public interface Connection extends AutoCloseable
121122
boolean isAckFailureMuted();
122123

123124
/**
124-
* Returns the version of the server connected to.
125-
* @return The version of the server connected to.
125+
* Returns the basic information of the server connected to.
126+
* @return The basic information of the server connected to.
126127
*/
127-
String server();
128+
ServerInfo server();
128129

129130
/**
130131
* Returns the BoltServerAddress connected to
131132
*/
132-
BoltServerAddress address();
133+
BoltServerAddress boltServerAddress();
133134

134135
/**
135136
* Returns the logger of this connection
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* Copyright (c) 2002-2016 "Neo Technology,"
3+
* Network Engine for Objects in Lund AB [http://neotechnology.com]
4+
*
5+
* This file is part of Neo4j.
6+
*
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
*/
19+
package org.neo4j.driver.internal.summary;
20+
21+
import org.neo4j.driver.internal.net.BoltServerAddress;
22+
import org.neo4j.driver.v1.summary.ServerInfo;
23+
24+
public class InternalServerInfo implements ServerInfo
25+
{
26+
private BoltServerAddress address;
27+
private String version;
28+
29+
public InternalServerInfo(BoltServerAddress address, String version)
30+
{
31+
this.address = address;
32+
this.version = version;
33+
}
34+
35+
public BoltServerAddress boltServerAddress()
36+
{
37+
return this.address;
38+
}
39+
40+
@Override
41+
public String address()
42+
{
43+
return this.address.toString();
44+
}
45+
46+
@Override
47+
public String version()
48+
{
49+
return version;
50+
}
51+
}

0 commit comments

Comments
 (0)