Skip to content

Commit ea7ec0a

Browse files
committed
Update internal driver clock usage
This update migrates driver internal implementation to `java.time.Clock` and deletes `org.neo4j.driver.internal.util.Clock`.
1 parent 1c9a650 commit ea7ec0a

40 files changed

+199
-269
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import io.netty.util.concurrent.EventExecutorGroup;
2828
import io.netty.util.internal.logging.InternalLoggerFactory;
2929
import java.net.URI;
30+
import java.time.Clock;
3031
import java.util.Objects;
3132
import java.util.function.Supplier;
3233
import org.neo4j.driver.AuthToken;
@@ -59,7 +60,6 @@
5960
import org.neo4j.driver.internal.security.SecurityPlans;
6061
import org.neo4j.driver.internal.spi.ConnectionPool;
6162
import org.neo4j.driver.internal.spi.ConnectionProvider;
62-
import org.neo4j.driver.internal.util.Clock;
6363
import org.neo4j.driver.internal.util.Futures;
6464
import org.neo4j.driver.net.ServerAddressResolver;
6565

@@ -336,7 +336,7 @@ private static ServerAddressResolver createResolver(Config config) {
336336
* Creates new {@link Clock}.
337337
*/
338338
protected Clock createClock() {
339-
return Clock.SYSTEM;
339+
return Clock.systemUTC();
340340
}
341341

342342
/**

driver/src/main/java/org/neo4j/driver/internal/async/NetworkConnection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import io.netty.channel.Channel;
2727
import io.netty.channel.ChannelHandler;
28+
import java.time.Clock;
2829
import java.util.concurrent.CompletableFuture;
2930
import java.util.concurrent.CompletionStage;
3031
import java.util.concurrent.TimeUnit;
@@ -45,7 +46,6 @@
4546
import org.neo4j.driver.internal.metrics.MetricsListener;
4647
import org.neo4j.driver.internal.spi.Connection;
4748
import org.neo4j.driver.internal.spi.ResponseHandler;
48-
import org.neo4j.driver.internal.util.Clock;
4949

5050
/**
5151
* This connection represents a simple network connection to a remote server. It wraps a channel obtained from a connection pool. The life cycle of this

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.netty.resolver.AddressResolverGroup;
3030
import java.net.InetSocketAddress;
3131
import java.net.SocketAddress;
32+
import java.time.Clock;
3233
import org.neo4j.driver.AuthToken;
3334
import org.neo4j.driver.AuthTokens;
3435
import org.neo4j.driver.Logging;
@@ -40,7 +41,6 @@
4041
import org.neo4j.driver.internal.cluster.RoutingContext;
4142
import org.neo4j.driver.internal.security.InternalAuthToken;
4243
import org.neo4j.driver.internal.security.SecurityPlan;
43-
import org.neo4j.driver.internal.util.Clock;
4444

4545
public class ChannelConnectorImpl implements ChannelConnector {
4646
private final String userAgent;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@
2525
import io.netty.channel.Channel;
2626
import io.netty.channel.ChannelInitializer;
2727
import io.netty.handler.ssl.SslHandler;
28+
import java.time.Clock;
2829
import javax.net.ssl.SSLContext;
2930
import javax.net.ssl.SSLEngine;
3031
import javax.net.ssl.SSLParameters;
3132
import org.neo4j.driver.Logging;
3233
import org.neo4j.driver.internal.BoltServerAddress;
3334
import org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher;
3435
import org.neo4j.driver.internal.security.SecurityPlan;
35-
import org.neo4j.driver.internal.util.Clock;
3636

3737
public class NettyChannelInitializer extends ChannelInitializer<Channel> {
3838
private final BoltServerAddress address;

driver/src/main/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.netty.bootstrap.Bootstrap;
2929
import io.netty.channel.Channel;
3030
import io.netty.channel.EventLoopGroup;
31+
import java.time.Clock;
3132
import java.util.HashMap;
3233
import java.util.Iterator;
3334
import java.util.Map;
@@ -50,7 +51,6 @@
5051
import org.neo4j.driver.internal.metrics.MetricsListener;
5152
import org.neo4j.driver.internal.spi.Connection;
5253
import org.neo4j.driver.internal.spi.ConnectionPool;
53-
import org.neo4j.driver.internal.util.Clock;
5454
import org.neo4j.driver.internal.util.Futures;
5555
import org.neo4j.driver.net.ServerAddress;
5656

driver/src/main/java/org/neo4j/driver/internal/async/pool/NettyChannelHealthChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.netty.channel.pool.ChannelHealthChecker;
2727
import io.netty.util.concurrent.Future;
2828
import io.netty.util.concurrent.Promise;
29+
import java.time.Clock;
2930
import java.util.Optional;
3031
import java.util.concurrent.atomic.AtomicReference;
3132
import org.neo4j.driver.Logger;
@@ -34,7 +35,6 @@
3435
import org.neo4j.driver.internal.async.connection.AuthorizationStateListener;
3536
import org.neo4j.driver.internal.handlers.PingResponseHandler;
3637
import org.neo4j.driver.internal.messaging.request.ResetMessage;
37-
import org.neo4j.driver.internal.util.Clock;
3838

3939
public class NettyChannelHealthChecker implements ChannelHealthChecker, AuthorizationStateListener {
4040
private final PoolSettings poolSettings;

driver/src/main/java/org/neo4j/driver/internal/async/pool/NetworkConnectionFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
package org.neo4j.driver.internal.async.pool;
2020

2121
import io.netty.channel.Channel;
22+
import java.time.Clock;
2223
import org.neo4j.driver.Logging;
2324
import org.neo4j.driver.internal.async.NetworkConnection;
2425
import org.neo4j.driver.internal.metrics.MetricsListener;
2526
import org.neo4j.driver.internal.spi.Connection;
26-
import org.neo4j.driver.internal.util.Clock;
2727

2828
public class NetworkConnectionFactory implements ConnectionFactory {
2929
private final Clock clock;

driver/src/main/java/org/neo4j/driver/internal/cluster/ClusterRoutingTable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static java.util.Arrays.asList;
2323
import static org.neo4j.driver.internal.util.LockUtil.executeWithLock;
2424

25+
import java.time.Clock;
2526
import java.util.ArrayList;
2627
import java.util.Collections;
2728
import java.util.HashSet;
@@ -34,7 +35,6 @@
3435
import org.neo4j.driver.AccessMode;
3536
import org.neo4j.driver.internal.BoltServerAddress;
3637
import org.neo4j.driver.internal.DatabaseName;
37-
import org.neo4j.driver.internal.util.Clock;
3838

3939
public class ClusterRoutingTable implements RoutingTable {
4040
private static final int MIN_ROUTERS = 1;

driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static org.neo4j.driver.internal.messaging.request.MultiDatabaseUtil.supportsMultiDatabase;
2323
import static org.neo4j.driver.internal.messaging.request.MultiDatabaseUtil.supportsRouteMessage;
2424

25+
import java.time.Clock;
2526
import java.util.List;
2627
import java.util.Set;
2728
import java.util.concurrent.CompletionException;
@@ -33,7 +34,6 @@
3334
import org.neo4j.driver.exceptions.value.ValueException;
3435
import org.neo4j.driver.internal.DatabaseName;
3536
import org.neo4j.driver.internal.spi.Connection;
36-
import org.neo4j.driver.internal.util.Clock;
3737

3838
public class RoutingProcedureClusterCompositionProvider implements ClusterCompositionProvider {
3939
private static final String PROTOCOL_ERROR_MESSAGE = "Failed to parse '%s' result received from server due to ";

driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static java.util.Objects.requireNonNull;
2222
import static org.neo4j.driver.internal.async.ConnectionContext.PENDING_DATABASE_NAME_EXCEPTION_SUPPLIER;
2323

24+
import java.time.Clock;
2425
import java.util.HashMap;
2526
import java.util.HashSet;
2627
import java.util.Map;
@@ -39,7 +40,6 @@
3940
import org.neo4j.driver.internal.DatabaseNameUtil;
4041
import org.neo4j.driver.internal.async.ConnectionContext;
4142
import org.neo4j.driver.internal.spi.ConnectionPool;
42-
import org.neo4j.driver.internal.util.Clock;
4343
import org.neo4j.driver.internal.util.Futures;
4444

4545
public class RoutingTableRegistryImpl implements RoutingTableRegistry {

driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import static org.neo4j.driver.internal.util.Futures.onErrorContinue;
3030

3131
import io.netty.util.concurrent.EventExecutorGroup;
32+
import java.time.Clock;
3233
import java.util.ArrayList;
3334
import java.util.List;
3435
import java.util.concurrent.CompletableFuture;
@@ -50,7 +51,6 @@
5051
import org.neo4j.driver.internal.spi.Connection;
5152
import org.neo4j.driver.internal.spi.ConnectionPool;
5253
import org.neo4j.driver.internal.spi.ConnectionProvider;
53-
import org.neo4j.driver.internal.util.Clock;
5454
import org.neo4j.driver.internal.util.Futures;
5555

5656
public class LoadBalancer implements ConnectionProvider {

driver/src/main/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@
2323
import static org.neo4j.driver.internal.util.Futures.completedWithNull;
2424

2525
import io.netty.channel.Channel;
26+
import java.time.Clock;
2627
import java.util.concurrent.CompletableFuture;
2728
import java.util.concurrent.CompletionStage;
2829
import org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher;
2930
import org.neo4j.driver.internal.async.pool.ExtendedChannelPool;
30-
import org.neo4j.driver.internal.util.Clock;
3131

3232
public class ChannelReleasingResetResponseHandler extends ResetResponseHandler {
3333
private final Channel channel;

driver/src/main/java/org/neo4j/driver/internal/metrics/InternalMetrics.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static java.lang.String.format;
2222
import static java.util.Collections.unmodifiableCollection;
2323

24+
import java.time.Clock;
2425
import java.util.Collection;
2526
import java.util.Map;
2627
import java.util.Objects;
@@ -30,7 +31,6 @@
3031
import org.neo4j.driver.Logger;
3132
import org.neo4j.driver.Logging;
3233
import org.neo4j.driver.Metrics;
33-
import org.neo4j.driver.internal.util.Clock;
3434
import org.neo4j.driver.net.ServerAddress;
3535

3636
final class InternalMetrics implements Metrics, MetricsListener {

driver/src/main/java/org/neo4j/driver/internal/metrics/InternalMetricsProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
*/
1919
package org.neo4j.driver.internal.metrics;
2020

21+
import java.time.Clock;
2122
import org.neo4j.driver.Logging;
2223
import org.neo4j.driver.Metrics;
23-
import org.neo4j.driver.internal.util.Clock;
2424

2525
public final class InternalMetricsProvider implements MetricsProvider {
2626
private final InternalMetrics metrics;

driver/src/main/java/org/neo4j/driver/internal/metrics/TimeRecorderListenerEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919
package org.neo4j.driver.internal.metrics;
2020

21-
import org.neo4j.driver.internal.util.Clock;
21+
import java.time.Clock;
2222

2323
final class TimeRecorderListenerEvent implements ListenerEvent<Long> {
2424
private final Clock clock;

driver/src/main/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogic.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import io.netty.util.concurrent.EventExecutor;
2424
import io.netty.util.concurrent.EventExecutorGroup;
25+
import java.time.Clock;
2526
import java.time.Duration;
2627
import java.util.ArrayList;
2728
import java.util.List;
@@ -35,7 +36,6 @@
3536
import org.neo4j.driver.exceptions.ClientException;
3637
import org.neo4j.driver.exceptions.Neo4jException;
3738
import org.neo4j.driver.exceptions.RetryableException;
38-
import org.neo4j.driver.internal.util.Clock;
3939
import org.neo4j.driver.internal.util.Futures;
4040
import org.reactivestreams.Publisher;
4141
import reactor.core.publisher.Flux;
@@ -58,18 +58,29 @@ public class ExponentialBackoffRetryLogic implements RetryLogic {
5858
private final double jitterFactor;
5959
private final EventExecutorGroup eventExecutorGroup;
6060
private final Clock clock;
61+
private final SleepTask sleepTask;
6162
private final Logger log;
6263

6364
public ExponentialBackoffRetryLogic(
6465
long maxTransactionRetryTime, EventExecutorGroup eventExecutorGroup, Clock clock, Logging logging) {
66+
this(maxTransactionRetryTime, eventExecutorGroup, clock, logging, Thread::sleep);
67+
}
68+
69+
protected ExponentialBackoffRetryLogic(
70+
long maxTransactionRetryTime,
71+
EventExecutorGroup eventExecutorGroup,
72+
Clock clock,
73+
Logging logging,
74+
SleepTask sleepTask) {
6575
this(
6676
maxTransactionRetryTime,
6777
INITIAL_RETRY_DELAY_MS,
6878
RETRY_DELAY_MULTIPLIER,
6979
RETRY_DELAY_JITTER_FACTOR,
7080
eventExecutorGroup,
7181
clock,
72-
logging);
82+
logging,
83+
sleepTask);
7384
}
7485

7586
ExponentialBackoffRetryLogic(
@@ -79,13 +90,15 @@ public ExponentialBackoffRetryLogic(
7990
double jitterFactor,
8091
EventExecutorGroup eventExecutorGroup,
8192
Clock clock,
82-
Logging logging) {
93+
Logging logging,
94+
SleepTask sleepTask) {
8395
this.maxRetryTimeMs = maxRetryTimeMs;
8496
this.initialRetryDelayMs = initialRetryDelayMs;
8597
this.multiplier = multiplier;
8698
this.jitterFactor = jitterFactor;
8799
this.eventExecutorGroup = eventExecutorGroup;
88100
this.clock = clock;
101+
this.sleepTask = sleepTask;
89102
this.log = logging.getLog(getClass());
90103

91104
verifyAfterConstruction();
@@ -300,7 +313,7 @@ private long computeDelayWithJitter(long delayMs) {
300313

301314
private void sleep(long delayMs) {
302315
try {
303-
clock.sleep(delayMs);
316+
sleepTask.sleep(delayMs);
304317
} catch (InterruptedException e) {
305318
Thread.currentThread().interrupt();
306319
throw new IllegalStateException("Retries interrupted", e);
@@ -342,4 +355,9 @@ private static void addSuppressed(Throwable error, List<Throwable> suppressedErr
342355
}
343356
}
344357
}
358+
359+
@FunctionalInterface
360+
public interface SleepTask {
361+
void sleep(long millis) throws InterruptedException;
362+
}
345363
}

driver/src/main/java/org/neo4j/driver/internal/svm/MicrometerSubstitutions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020

2121
import com.oracle.svm.core.annotate.Substitute;
2222
import com.oracle.svm.core.annotate.TargetClass;
23+
import java.time.Clock;
2324
import org.neo4j.driver.Config;
2425
import org.neo4j.driver.MetricsAdapter;
2526
import org.neo4j.driver.internal.DriverFactory;
2627
import org.neo4j.driver.internal.metrics.DevNullMetricsProvider;
2728
import org.neo4j.driver.internal.metrics.InternalMetricsProvider;
2829
import org.neo4j.driver.internal.metrics.MetricsProvider;
2930
import org.neo4j.driver.internal.metrics.MicrometerMetricsProvider;
30-
import org.neo4j.driver.internal.util.Clock;
3131

3232
@TargetClass(DriverFactory.class)
3333
final class Target_org_neo4j_driver_internal_DriverFactory {

driver/src/main/java/org/neo4j/driver/internal/util/Clock.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import static org.neo4j.driver.testutil.TestUtil.await;
3636

3737
import io.netty.bootstrap.Bootstrap;
38+
import java.time.Clock;
3839
import java.util.List;
3940
import java.util.concurrent.CompletableFuture;
4041
import java.util.concurrent.CompletionStage;
@@ -68,7 +69,6 @@
6869
import org.neo4j.driver.internal.security.SecurityPlanImpl;
6970
import org.neo4j.driver.internal.spi.Connection;
7071
import org.neo4j.driver.internal.spi.ConnectionPool;
71-
import org.neo4j.driver.internal.util.Clock;
7272
import org.neo4j.driver.internal.util.EnabledOnNeo4jWith;
7373
import org.neo4j.driver.reactive.RxResult;
7474
import org.neo4j.driver.reactive.RxSession;

0 commit comments

Comments
 (0)