Skip to content

Commit f06f4f5

Browse files
committed
Update BoltConnectionProvider
The BoltConnectionProvider will now accept `address` and some other additional parameters in its methods.
1 parent 95d8eb0 commit f06f4f5

File tree

13 files changed

+700
-182
lines changed

13 files changed

+700
-182
lines changed

bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/NettyBoltConnectionProvider.java

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -58,56 +58,39 @@
5858
public final class NettyBoltConnectionProvider implements BoltConnectionProvider {
5959
private final LoggingProvider logging;
6060
private final System.Logger log;
61-
6261
private final ConnectionProvider connectionProvider;
63-
64-
private BoltServerAddress address;
65-
66-
private RoutingContext routingContext;
67-
private BoltAgent boltAgent;
68-
private String userAgent;
69-
private int connectTimeoutMillis;
70-
private CompletableFuture<Void> closeFuture;
71-
private MetricsListener metricsListener;
62+
private final MetricsListener metricsListener;
7263
private final Clock clock;
7364
private final ValueFactory valueFactory;
7465

66+
private CompletableFuture<Void> closeFuture;
67+
7568
public NettyBoltConnectionProvider(
7669
EventLoopGroup eventLoopGroup,
7770
Clock clock,
7871
DomainNameResolver domainNameResolver,
7972
LocalAddress localAddress,
8073
LoggingProvider logging,
81-
ValueFactory valueFactory) {
74+
ValueFactory valueFactory,
75+
MetricsListener metricsListener) {
8276
Objects.requireNonNull(eventLoopGroup);
8377
this.clock = Objects.requireNonNull(clock);
8478
this.logging = Objects.requireNonNull(logging);
8579
this.log = logging.getLog(getClass());
8680
this.connectionProvider = ConnectionProviders.netty(
8781
eventLoopGroup, clock, domainNameResolver, localAddress, logging, valueFactory);
8882
this.valueFactory = Objects.requireNonNull(valueFactory);
83+
this.metricsListener = NoopMetricsListener.getInstance();
84+
InternalLoggerFactory.setDefaultFactory(new NettyLogging(logging));
8985
}
9086

9187
@Override
92-
public CompletionStage<Void> init(
88+
public CompletionStage<BoltConnection> connect(
9389
BoltServerAddress address,
9490
RoutingContext routingContext,
9591
BoltAgent boltAgent,
9692
String userAgent,
9793
int connectTimeoutMillis,
98-
MetricsListener metricsListener) {
99-
this.address = address;
100-
this.routingContext = routingContext;
101-
this.boltAgent = boltAgent;
102-
this.userAgent = userAgent;
103-
this.connectTimeoutMillis = connectTimeoutMillis;
104-
this.metricsListener = NoopMetricsListener.getInstance();
105-
InternalLoggerFactory.setDefaultFactory(new NettyLogging(logging));
106-
return CompletableFuture.completedStage(null);
107-
}
108-
109-
@Override
110-
public CompletionStage<BoltConnection> connect(
11194
SecurityPlan securityPlan,
11295
DatabaseName databaseName,
11396
Supplier<CompletionStage<AuthToken>> authTokenStageSupplier,
@@ -180,8 +163,20 @@ public CompletionStage<BoltConnection> connect(
180163
}
181164

182165
@Override
183-
public CompletionStage<Void> verifyConnectivity(SecurityPlan securityPlan, AuthToken authToken) {
166+
public CompletionStage<Void> verifyConnectivity(
167+
BoltServerAddress address,
168+
RoutingContext routingContext,
169+
BoltAgent boltAgent,
170+
String userAgent,
171+
int connectTimeoutMillis,
172+
SecurityPlan securityPlan,
173+
AuthToken authToken) {
184174
return connect(
175+
address,
176+
routingContext,
177+
boltAgent,
178+
userAgent,
179+
connectTimeoutMillis,
185180
securityPlan,
186181
null,
187182
() -> CompletableFuture.completedStage(authToken),
@@ -196,8 +191,20 @@ public CompletionStage<Void> verifyConnectivity(SecurityPlan securityPlan, AuthT
196191
}
197192

198193
@Override
199-
public CompletionStage<Boolean> supportsMultiDb(SecurityPlan securityPlan, AuthToken authToken) {
194+
public CompletionStage<Boolean> supportsMultiDb(
195+
BoltServerAddress address,
196+
RoutingContext routingContext,
197+
BoltAgent boltAgent,
198+
String userAgent,
199+
int connectTimeoutMillis,
200+
SecurityPlan securityPlan,
201+
AuthToken authToken) {
200202
return connect(
203+
address,
204+
routingContext,
205+
boltAgent,
206+
userAgent,
207+
connectTimeoutMillis,
201208
securityPlan,
202209
null,
203210
() -> CompletableFuture.completedStage(authToken),
@@ -215,8 +222,20 @@ public CompletionStage<Boolean> supportsMultiDb(SecurityPlan securityPlan, AuthT
215222
}
216223

217224
@Override
218-
public CompletionStage<Boolean> supportsSessionAuth(SecurityPlan securityPlan, AuthToken authToken) {
225+
public CompletionStage<Boolean> supportsSessionAuth(
226+
BoltServerAddress address,
227+
RoutingContext routingContext,
228+
BoltAgent boltAgent,
229+
String userAgent,
230+
int connectTimeoutMillis,
231+
SecurityPlan securityPlan,
232+
AuthToken authToken) {
219233
return connect(
234+
address,
235+
routingContext,
236+
boltAgent,
237+
userAgent,
238+
connectTimeoutMillis,
220239
securityPlan,
221240
null,
222241
() -> CompletableFuture.completedStage(authToken),

bolt-api-pooled/src/main/java/org/neo4j/driver/internal/bolt/pooledimpl/PooledBoltConnectionProvider.java

Lines changed: 69 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,15 @@ public class PooledBoltConnectionProvider implements BoltConnectionProvider {
6666
private final long maxLifetime;
6767
private final long idleBeforeTest;
6868
private final Clock clock;
69-
private MetricsListener metricsListener;
70-
private CompletionStage<Void> closeStage;
71-
private BoltServerAddress address;
72-
private String poolId;
69+
private final MetricsListener metricsListener;
70+
private final BoltServerAddress address;
71+
private final RoutingContext routingContext;
72+
private final BoltAgent boltAgent;
73+
private final String userAgent;
74+
private final int connectTimeoutMillis;
75+
private final String poolId;
7376

77+
private CompletionStage<Void> closeStage;
7478
private long minAuthTimestamp;
7579

7680
public PooledBoltConnectionProvider(
@@ -80,7 +84,13 @@ public PooledBoltConnectionProvider(
8084
long maxLifetime,
8185
long idleBeforeTest,
8286
Clock clock,
83-
LoggingProvider logging) {
87+
LoggingProvider logging,
88+
MetricsListener metricsListener,
89+
BoltServerAddress address,
90+
RoutingContext routingContext,
91+
BoltAgent boltAgent,
92+
String userAgent,
93+
int connectTimeoutMillis) {
8494
this.boltConnectionProvider = boltConnectionProvider;
8595
this.pooledConnectionEntries = new ArrayList<>();
8696
this.pendingAcquisitions = new ArrayDeque<>(100);
@@ -90,19 +100,13 @@ public PooledBoltConnectionProvider(
90100
this.idleBeforeTest = idleBeforeTest;
91101
this.clock = Objects.requireNonNull(clock);
92102
this.log = logging.getLog(getClass());
93-
}
94-
95-
@Override
96-
public CompletionStage<Void> init(
97-
BoltServerAddress address,
98-
RoutingContext routingContext,
99-
BoltAgent boltAgent,
100-
String userAgent,
101-
int connectTimeoutMillis,
102-
MetricsListener metricsListener) {
103+
this.metricsListener = Objects.requireNonNull(metricsListener);
103104
this.address = Objects.requireNonNull(address);
105+
this.routingContext = Objects.requireNonNull(routingContext);
106+
this.boltAgent = Objects.requireNonNull(boltAgent);
107+
this.userAgent = Objects.requireNonNull(userAgent);
108+
this.connectTimeoutMillis = connectTimeoutMillis;
104109
this.poolId = poolId(address);
105-
this.metricsListener = Objects.requireNonNull(metricsListener);
106110
metricsListener.registerPoolMetrics(
107111
poolId,
108112
address,
@@ -120,13 +124,16 @@ public CompletionStage<Void> init(
120124
.count();
121125
}
122126
});
123-
return boltConnectionProvider.init(
124-
address, routingContext, boltAgent, userAgent, connectTimeoutMillis, metricsListener);
125127
}
126128

127129
@SuppressWarnings({"ReassignedVariable"})
128130
@Override
129131
public CompletionStage<BoltConnection> connect(
132+
BoltServerAddress ignoredAddress,
133+
RoutingContext ignoredRoutingContext,
134+
BoltAgent ignoredBoltAgent,
135+
String ignoredUserAgent,
136+
int ignoredConnectTimeoutMillis,
130137
SecurityPlan securityPlan,
131138
DatabaseName databaseName,
132139
Supplier<CompletionStage<AuthToken>> authTokenStageSupplier,
@@ -334,6 +341,11 @@ private void connect(
334341
var entry = connectionEntryWithMetadata.connectionEntry;
335342
boltConnectionProvider
336343
.connect(
344+
address,
345+
routingContext,
346+
boltAgent,
347+
userAgent,
348+
connectTimeoutMillis,
337349
securityPlan,
338350
databaseName,
339351
empty.get()
@@ -502,8 +514,20 @@ private CompletionStage<Void> livenessCheckStage(ConnectionEntry entry) {
502514
}
503515

504516
@Override
505-
public CompletionStage<Void> verifyConnectivity(SecurityPlan securityPlan, AuthToken authToken) {
517+
public CompletionStage<Void> verifyConnectivity(
518+
BoltServerAddress ignoredAddress,
519+
RoutingContext ignoredRoutingContext,
520+
BoltAgent ignoredBoltAgent,
521+
String ignoredUserAgent,
522+
int ignoredConnectTimeoutMillis,
523+
SecurityPlan securityPlan,
524+
AuthToken authToken) {
506525
return connect(
526+
address,
527+
routingContext,
528+
boltAgent,
529+
userAgent,
530+
connectTimeoutMillis,
507531
securityPlan,
508532
null,
509533
() -> CompletableFuture.completedStage(authToken),
@@ -518,8 +542,20 @@ public CompletionStage<Void> verifyConnectivity(SecurityPlan securityPlan, AuthT
518542
}
519543

520544
@Override
521-
public CompletionStage<Boolean> supportsMultiDb(SecurityPlan securityPlan, AuthToken authToken) {
545+
public CompletionStage<Boolean> supportsMultiDb(
546+
BoltServerAddress ignoredAddress,
547+
RoutingContext ignoredRoutingContext,
548+
BoltAgent ignoredBoltAgent,
549+
String ignoredUserAgent,
550+
int ignoredConnectTimeoutMillis,
551+
SecurityPlan securityPlan,
552+
AuthToken authToken) {
522553
return connect(
554+
address,
555+
routingContext,
556+
boltAgent,
557+
userAgent,
558+
connectTimeoutMillis,
523559
securityPlan,
524560
null,
525561
() -> CompletableFuture.completedStage(authToken),
@@ -537,8 +573,20 @@ public CompletionStage<Boolean> supportsMultiDb(SecurityPlan securityPlan, AuthT
537573
}
538574

539575
@Override
540-
public CompletionStage<Boolean> supportsSessionAuth(SecurityPlan securityPlan, AuthToken authToken) {
576+
public CompletionStage<Boolean> supportsSessionAuth(
577+
BoltServerAddress ignoredAddress,
578+
RoutingContext ignoredRoutingContext,
579+
BoltAgent ignoredBoltAgent,
580+
String ignoredUserAgent,
581+
int ignoredConnectTimeoutMillis,
582+
SecurityPlan securityPlan,
583+
AuthToken authToken) {
541584
return connect(
585+
address,
586+
routingContext,
587+
boltAgent,
588+
userAgent,
589+
connectTimeoutMillis,
542590
securityPlan,
543591
null,
544592
() -> CompletableFuture.completedStage(authToken),

0 commit comments

Comments
 (0)