Skip to content

Commit d715914

Browse files
authored
Revert "Introduce bolt_agent and update the default user_agent (#1410)" (#1416)
This reverts commit b654181.
1 parent ac2d21a commit d715914

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+83
-1388
lines changed

driver/src/main/java/org/neo4j/driver/Config.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
*/
1919
package org.neo4j.driver;
2020

21+
import static java.lang.String.format;
2122
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
22-
import static org.neo4j.driver.internal.util.DriverInfoUtil.boltAgent;
2323

2424
import java.io.File;
2525
import java.io.Serial;
@@ -345,7 +345,7 @@ public static final class ConfigBuilder {
345345
private long idleTimeBeforeConnectionTest = PoolSettings.DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST;
346346
private long maxConnectionLifetimeMillis = PoolSettings.DEFAULT_MAX_CONNECTION_LIFETIME;
347347
private long connectionAcquisitionTimeoutMillis = PoolSettings.DEFAULT_CONNECTION_ACQUISITION_TIMEOUT;
348-
private String userAgent = boltAgent();
348+
private String userAgent = format("neo4j-java/%s", driverVersion());
349349
private final SecuritySettings.SecuritySettingsBuilder securitySettingsBuilder =
350350
new SecuritySettings.SecuritySettingsBuilder();
351351
private long routingTablePurgeDelayMillis = RoutingSettings.STALE_ROUTING_TABLE_PURGE_DELAY_MS;
@@ -748,6 +748,23 @@ public ConfigBuilder withNotificationConfig(NotificationConfig notificationConfi
748748
return this;
749749
}
750750

751+
/**
752+
* Extracts the driver version from the driver jar MANIFEST.MF file.
753+
*/
754+
private static String driverVersion() {
755+
// "Session" is arbitrary - the only thing that matters is that the class we use here is in the
756+
// 'org.neo4j.driver' package, because that is where the jar manifest specifies the version.
757+
// This is done as part of the build, adding a MANIFEST.MF file to the generated jarfile.
758+
Package pkg = Session.class.getPackage();
759+
if (pkg != null && pkg.getImplementationVersion() != null) {
760+
return pkg.getImplementationVersion();
761+
}
762+
763+
// If there is no version, we're not running from a jar file, but from raw compiled class files.
764+
// This should only happen during development, so call the version 'dev'.
765+
return "dev";
766+
}
767+
751768
/**
752769
* Create a config instance from this builder.
753770
*

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
import org.neo4j.driver.internal.security.StaticAuthTokenManager;
6262
import org.neo4j.driver.internal.spi.ConnectionPool;
6363
import org.neo4j.driver.internal.spi.ConnectionProvider;
64-
import org.neo4j.driver.internal.util.DriverInfoUtil;
6564
import org.neo4j.driver.internal.util.Futures;
6665
import org.neo4j.driver.net.ServerAddressResolver;
6766

@@ -142,8 +141,7 @@ protected ConnectionPool createConnectionPool(
142141
Clock clock = createClock();
143142
ConnectionSettings settings =
144143
new ConnectionSettings(authTokenManager, config.userAgent(), config.connectionTimeoutMillis());
145-
var boltAgent = DriverInfoUtil.boltAgent();
146-
ChannelConnector connector = createConnector(settings, securityPlan, config, clock, routingContext, boltAgent);
144+
ChannelConnector connector = createConnector(settings, securityPlan, config, clock, routingContext);
147145
PoolSettings poolSettings = new PoolSettings(
148146
config.maxConnectionPoolSize(),
149147
config.connectionAcquisitionTimeoutMillis(),
@@ -181,17 +179,15 @@ protected ChannelConnector createConnector(
181179
SecurityPlan securityPlan,
182180
Config config,
183181
Clock clock,
184-
RoutingContext routingContext,
185-
String boltAgent) {
182+
RoutingContext routingContext) {
186183
return new ChannelConnectorImpl(
187184
settings,
188185
securityPlan,
189186
config.logging(),
190187
clock,
191188
routingContext,
192189
getDomainNameResolver(),
193-
config.notificationConfig(),
194-
boltAgent);
190+
config.notificationConfig());
195191
}
196192

197193
private InternalDriver createDriver(

driver/src/main/java/org/neo4j/driver/internal/async/connection/BoltProtocolUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.neo4j.driver.internal.messaging.v42.BoltProtocolV42;
3030
import org.neo4j.driver.internal.messaging.v44.BoltProtocolV44;
3131
import org.neo4j.driver.internal.messaging.v5.BoltProtocolV5;
32-
import org.neo4j.driver.internal.messaging.v53.BoltProtocolV53;
32+
import org.neo4j.driver.internal.messaging.v52.BoltProtocolV52;
3333

3434
public final class BoltProtocolUtil {
3535
public static final int BOLT_MAGIC_PREAMBLE = 0x6060B017;
@@ -41,7 +41,7 @@ public final class BoltProtocolUtil {
4141

4242
private static final ByteBuf HANDSHAKE_BUF = unreleasableBuffer(copyInt(
4343
BOLT_MAGIC_PREAMBLE,
44-
BoltProtocolV53.VERSION.toIntRange(BoltProtocolV5.VERSION),
44+
BoltProtocolV52.VERSION.toIntRange(BoltProtocolV5.VERSION),
4545
BoltProtocolV44.VERSION.toIntRange(BoltProtocolV42.VERSION),
4646
BoltProtocolV41.VERSION.toInt(),
4747
BoltProtocolV3.VERSION.toInt()))

driver/src/main/java/org/neo4j/driver/internal/async/connection/ChannelConnectorImpl.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242

4343
public class ChannelConnectorImpl implements ChannelConnector {
4444
private final String userAgent;
45-
private final String boltAgent;
4645
private final AuthTokenManager authTokenManager;
4746
private final RoutingContext routingContext;
4847
private final SecurityPlan securityPlan;
@@ -61,8 +60,7 @@ public ChannelConnectorImpl(
6160
Clock clock,
6261
RoutingContext routingContext,
6362
DomainNameResolver domainNameResolver,
64-
NotificationConfig notificationConfig,
65-
String boltAgent) {
63+
NotificationConfig notificationConfig) {
6664
this(
6765
connectionSettings,
6866
securityPlan,
@@ -71,8 +69,7 @@ public ChannelConnectorImpl(
7169
clock,
7270
routingContext,
7371
domainNameResolver,
74-
notificationConfig,
75-
boltAgent);
72+
notificationConfig);
7673
}
7774

7875
public ChannelConnectorImpl(
@@ -83,10 +80,8 @@ public ChannelConnectorImpl(
8380
Clock clock,
8481
RoutingContext routingContext,
8582
DomainNameResolver domainNameResolver,
86-
NotificationConfig notificationConfig,
87-
String boltAgent) {
83+
NotificationConfig notificationConfig) {
8884
this.userAgent = connectionSettings.userAgent();
89-
this.boltAgent = requireNonNull(boltAgent);
9085
this.authTokenManager = connectionSettings.authTokenProvider();
9186
this.routingContext = routingContext;
9287
this.connectTimeoutMillis = connectionSettings.connectTimeoutMillis();
@@ -150,6 +145,6 @@ private void installHandshakeCompletedListeners(
150145
// add listener that sends an INIT message. connection is now fully established. channel pipeline if fully
151146
// set to send/receive messages for a selected protocol version
152147
handshakeCompleted.addListener(new HandshakeCompletedListener(
153-
userAgent, boltAgent, routingContext, connectionInitialized, notificationConfig, clock));
148+
userAgent, routingContext, connectionInitialized, notificationConfig, clock));
154149
}
155150
}

driver/src/main/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListener.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,19 @@
3232

3333
public class HandshakeCompletedListener implements ChannelFutureListener {
3434
private final String userAgent;
35-
private final String boltAgent;
3635
private final RoutingContext routingContext;
3736
private final ChannelPromise connectionInitializedPromise;
3837
private final NotificationConfig notificationConfig;
3938
private final Clock clock;
4039

4140
public HandshakeCompletedListener(
4241
String userAgent,
43-
String boltAgent,
4442
RoutingContext routingContext,
4543
ChannelPromise connectionInitializedPromise,
4644
NotificationConfig notificationConfig,
4745
Clock clock) {
4846
requireNonNull(clock, "clock must not be null");
4947
this.userAgent = requireNonNull(userAgent);
50-
this.boltAgent = requireNonNull(boltAgent);
5148
this.routingContext = routingContext;
5249
this.connectionInitializedPromise = requireNonNull(connectionInitializedPromise);
5350
this.notificationConfig = notificationConfig;
@@ -74,7 +71,6 @@ public void operationComplete(ChannelFuture future) {
7471
authContext.setValidToken(authToken);
7572
protocol.initializeChannel(
7673
userAgent,
77-
boltAgent,
7874
authToken,
7975
routingContext,
8076
connectionInitializedPromise,
@@ -85,13 +81,7 @@ public void operationComplete(ChannelFuture future) {
8581
channel.eventLoop());
8682
} else {
8783
protocol.initializeChannel(
88-
userAgent,
89-
boltAgent,
90-
null,
91-
routingContext,
92-
connectionInitializedPromise,
93-
notificationConfig,
94-
clock);
84+
userAgent, null, routingContext, connectionInitializedPromise, notificationConfig, clock);
9585
}
9686
} else {
9787
connectionInitializedPromise.setFailure(future.cause());

driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocol.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import org.neo4j.driver.internal.messaging.v5.BoltProtocolV5;
4848
import org.neo4j.driver.internal.messaging.v51.BoltProtocolV51;
4949
import org.neo4j.driver.internal.messaging.v52.BoltProtocolV52;
50-
import org.neo4j.driver.internal.messaging.v53.BoltProtocolV53;
5150
import org.neo4j.driver.internal.spi.Connection;
5251

5352
public interface BoltProtocol {
@@ -62,16 +61,14 @@ public interface BoltProtocol {
6261
* Initialize channel after it is connected and handshake selected this protocol version.
6362
*
6463
* @param userAgent the user agent string.
65-
* @param boltAgent the bolt agent
6664
* @param authToken the authentication token.
6765
* @param routingContext the configured routing context
6866
* @param channelInitializedPromise the promise to be notified when initialization is completed.
69-
* @param notificationConfig the notification configuration
70-
* @param clock the clock to use
67+
* @param notificationConfig the notification configuration
68+
* @param clock the clock to use
7169
*/
7270
void initializeChannel(
7371
String userAgent,
74-
String boltAgent,
7572
AuthToken authToken,
7673
RoutingContext routingContext,
7774
ChannelPromise channelInitializedPromise,
@@ -192,8 +189,6 @@ static BoltProtocol forVersion(BoltProtocolVersion version) {
192189
return BoltProtocolV51.INSTANCE;
193190
} else if (BoltProtocolV52.VERSION.equals(version)) {
194191
return BoltProtocolV52.INSTANCE;
195-
} else if (BoltProtocolV53.VERSION.equals(version)) {
196-
return BoltProtocolV53.INSTANCE;
197192
}
198193
throw new ClientException("Unknown protocol version: " + version);
199194
}

driver/src/main/java/org/neo4j/driver/internal/messaging/request/HelloMessage.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,18 @@ public class HelloMessage extends MessageWithMetadata {
3232
public static final byte SIGNATURE = 0x01;
3333

3434
private static final String USER_AGENT_METADATA_KEY = "user_agent";
35-
private static final String BOLT_AGENT_METADATA_KEY = "bolt_agent";
3635
private static final String ROUTING_CONTEXT_METADATA_KEY = "routing";
3736
private static final String PATCH_BOLT_METADATA_KEY = "patch_bolt";
3837

3938
private static final String DATE_TIME_UTC_PATCH_VALUE = "utc";
4039

4140
public HelloMessage(
4241
String userAgent,
43-
String boltAgent,
4442
Map<String, Value> authToken,
4543
Map<String, String> routingContext,
4644
boolean includeDateTimeUtc,
4745
NotificationConfig notificationConfig) {
48-
super(buildMetadata(userAgent, boltAgent, authToken, routingContext, includeDateTimeUtc, notificationConfig));
46+
super(buildMetadata(userAgent, authToken, routingContext, includeDateTimeUtc, notificationConfig));
4947
}
5048

5149
@Override
@@ -79,18 +77,12 @@ public String toString() {
7977

8078
private static Map<String, Value> buildMetadata(
8179
String userAgent,
82-
String boltAgent,
8380
Map<String, Value> authToken,
8481
Map<String, String> routingContext,
8582
boolean includeDateTimeUtc,
8683
NotificationConfig notificationConfig) {
8784
Map<String, Value> result = new HashMap<>(authToken);
88-
if (userAgent != null) {
89-
result.put(USER_AGENT_METADATA_KEY, value(userAgent));
90-
}
91-
if (boltAgent != null) {
92-
result.put(BOLT_AGENT_METADATA_KEY, value(boltAgent));
93-
}
85+
result.put(USER_AGENT_METADATA_KEY, value(userAgent));
9486
if (routingContext != null) {
9587
result.put(ROUTING_CONTEXT_METADATA_KEY, value(routingContext));
9688
}

driver/src/main/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ public MessageFormat createMessageFormat() {
8181
@Override
8282
public void initializeChannel(
8383
String userAgent,
84-
String boltAgent,
8584
AuthToken authToken,
8685
RoutingContext routingContext,
8786
ChannelPromise channelInitializedPromise,
@@ -98,15 +97,13 @@ public void initializeChannel(
9897
if (routingContext.isServerRoutingEnabled()) {
9998
message = new HelloMessage(
10099
userAgent,
101-
null,
102100
((InternalAuthToken) authToken).toMap(),
103101
routingContext.toMap(),
104102
includeDateTimeUtcPatchInHello(),
105103
notificationConfig);
106104
} else {
107105
message = new HelloMessage(
108106
userAgent,
109-
null,
110107
((InternalAuthToken) authToken).toMap(),
111108
null,
112109
includeDateTimeUtcPatchInHello(),

driver/src/main/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public class BoltProtocolV51 extends BoltProtocolV5 {
4242
@Override
4343
public void initializeChannel(
4444
String userAgent,
45-
String boltAgent,
4645
AuthToken authToken,
4746
RoutingContext routingContext,
4847
ChannelPromise channelInitializedPromise,
@@ -58,9 +57,9 @@ public void initializeChannel(
5857

5958
if (routingContext.isServerRoutingEnabled()) {
6059
message = new HelloMessage(
61-
userAgent, null, Collections.emptyMap(), routingContext.toMap(), false, notificationConfig);
60+
userAgent, Collections.emptyMap(), routingContext.toMap(), false, notificationConfig);
6261
} else {
63-
message = new HelloMessage(userAgent, null, Collections.emptyMap(), null, false, notificationConfig);
62+
message = new HelloMessage(userAgent, Collections.emptyMap(), null, false, notificationConfig);
6463
}
6564

6665
var helloFuture = new CompletableFuture<Void>();

0 commit comments

Comments
 (0)