From abae927efb42b6ccad88e9c55a8cd9ac205f07e1 Mon Sep 17 00:00:00 2001 From: Mikhaylo Demianenko Date: Wed, 24 Aug 2016 12:15:53 +0200 Subject: [PATCH] Remove of old fake clock. Introduce clock that capable to provide nanoseconds. --- .../main/java/org/neo4j/time/FakeClock.java | 23 ++++- .../java/org/neo4j/time/SystemNanoClock.java | 58 +++++++++++++ .../org/neo4j/kernel/NeoStoreDataSource.java | 6 +- .../impl/api/DefaultTransactionTracer.java | 12 +-- .../api/KernelTransactionImplementation.java | 6 +- .../kernel/impl/api/KernelTransactions.java | 4 +- .../kernel/impl/store/MetaDataStore.java | 4 +- .../impl/store/counts/CountsTracker.java | 4 +- .../store/kvstore/RotationTimerFactory.java | 8 +- .../checkpoint/DefaultCheckPointerTracer.java | 12 +-- .../checkpoint/TimeCheckPointThreshold.java | 8 +- .../neo4j/kernel/impl/util/CappedLogger.java | 4 +- .../impl/util/collection/TimedRepository.java | 8 +- .../batchimport/staging/ExecutionMonitor.java | 7 +- .../staging/MultiExecutionMonitor.java | 6 +- .../java/org/neo4j/helpers/FakeClock.java | 84 ------------------- .../kernel/api/KernelTransactionFactory.java | 3 +- .../api/DefaultTransactionTracerTest.java | 2 +- .../KernelTransactionImplementationTest.java | 2 +- .../api/KernelTransactionTerminationTest.java | 2 +- .../impl/api/KernelTransactionTestBase.java | 2 +- .../impl/api/KernelTransactionsTest.java | 6 +- .../id/BufferingIdGeneratorFactoryTest.java | 4 +- .../kvstore/AbstractKeyValueStoreTest.java | 4 +- .../kvstore/RotationTimerFactoryTest.java | 10 ++- .../DefaultCheckPointerTracerTest.java | 2 +- .../TimeCheckPointThresholdTest.java | 2 +- .../kernel/impl/util/CappedLoggerTest.java | 12 +-- .../util/collection/TimedRepositoryTest.java | 2 +- .../org/neo4j/test/InputStreamAwaiter.java | 8 +- .../neo4j/test/InputStreamAwaiterTest.java | 35 ++++++-- .../staging/MultiExecutionMonitorTest.java | 4 +- .../ProcessorAssignmentStrategies.java | 6 +- .../org/neo4j/server/AbstractNeoServer.java | 12 ++- .../org/neo4j/server/rest/paging/Lease.java | 9 +- .../server/rest/paging/LeaseManager.java | 7 +- .../TransactionHandleRegistry.java | 8 +- .../helpers/CommunityServerBuilder.java | 5 +- .../neo4j/server/rest/ManageNodeDocIT.java | 2 +- .../server/rest/paging/LeaseManagerTest.java | 2 +- .../neo4j/server/rest/paging/LeaseTest.java | 5 +- .../rest/paging/PagedTraverserDocIT.java | 2 +- .../ConcurrentTransactionAccessTest.java | 2 +- .../TransactionHandleRegistryTest.java | 11 +-- .../server/rest/web/DatabaseActionsTest.java | 50 +++++------ .../server/rest/web/PagingTraversalTest.java | 2 +- ...estfulGraphDatabasePagedTraversalTest.java | 2 +- .../rest/web/RestfulGraphDatabaseTest.java | 2 +- .../java/org/neo4j/backup/BackupServer.java | 6 +- .../src/main/java/org/neo4j/com/Client.java | 21 +++-- .../main/java/org/neo4j/com/ResourcePool.java | 13 ++- .../java/org/neo4j/com/ResourcePoolTest.java | 4 +- .../ha/com/master/ConversationManager.java | 6 +- .../kernel/ha/com/master/MasterServer.java | 6 +- .../kernel/ha/com/slave/SlaveServer.java | 7 +- .../ha/transaction/TransactionPropagator.java | 6 +- .../MasterImplConversationStopFuzzIT.java | 4 +- .../kernel/ha/lock/SlaveLockManagerTest.java | 5 +- .../lock/SlaveLocksClientConcurrentTest.java | 4 +- .../kernel/ha/lock/SlaveLocksClientTest.java | 2 +- .../query/QueryLoggerKernelExtension.java | 10 +-- .../kernel/impl/query/QueryLoggerTest.java | 4 +- .../EnterpriseVersionAndEditionServiceIT.java | 2 +- 63 files changed, 292 insertions(+), 289 deletions(-) create mode 100644 community/common/src/main/java/org/neo4j/time/SystemNanoClock.java delete mode 100644 community/kernel/src/test/java/org/neo4j/helpers/FakeClock.java diff --git a/community/common/src/main/java/org/neo4j/time/FakeClock.java b/community/common/src/main/java/org/neo4j/time/FakeClock.java index e3adf0cc8815b..1eb700b27118f 100644 --- a/community/common/src/main/java/org/neo4j/time/FakeClock.java +++ b/community/common/src/main/java/org/neo4j/time/FakeClock.java @@ -28,9 +28,18 @@ /** * A {@link java.time.Clock} that is manually controlled. */ -public class FakeClock extends Clock +public class FakeClock extends SystemNanoClock { - private long millis = 0; + private long nanos = 0; + + public FakeClock() + { + } + + public FakeClock( long delta, TimeUnit unit ) + { + forward( delta, unit ); + } @Override public ZoneId getZone() @@ -47,12 +56,18 @@ public Clock withZone( ZoneId zone ) @Override public Instant instant() { - return Instant.ofEpochMilli( millis ); + return Instant.ofEpochMilli( TimeUnit.NANOSECONDS.toMillis( nanos ) ); + } + + @Override + public long nanos() + { + return nanos; } public FakeClock forward( long delta, TimeUnit unit ) { - millis += unit.toMillis( delta ); + nanos += unit.toNanos( delta ); return this; } } diff --git a/community/common/src/main/java/org/neo4j/time/SystemNanoClock.java b/community/common/src/main/java/org/neo4j/time/SystemNanoClock.java new file mode 100644 index 0000000000000..4846535ec33d1 --- /dev/null +++ b/community/common/src/main/java/org/neo4j/time/SystemNanoClock.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2002-2016 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.time; + +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZoneOffset; + +public class SystemNanoClock extends Clock +{ + public static final SystemNanoClock INSTANCE = new SystemNanoClock(); + + protected SystemNanoClock() + { + // please use shared instance + } + + @Override + public ZoneId getZone() + { + return ZoneOffset.UTC; + } + + @Override + public Clock withZone( ZoneId zone ) + { + throw new UnsupportedOperationException( "Zone update is not supported." ); + } + + @Override + public Instant instant() + { + return Instant.now(); + } + + public long nanos() + { + return System.nanoTime(); + } +} diff --git a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java index 6ead5704b6e70..8edff0fa3b0e3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.time.Clock; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -34,7 +35,6 @@ import org.neo4j.graphdb.ResourceIterator; import org.neo4j.graphdb.config.Setting; import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.helpers.Clock; import org.neo4j.helpers.Exceptions; import org.neo4j.helpers.collection.Visitor; import org.neo4j.io.fs.FileSystemAbstraction; @@ -660,7 +660,7 @@ public long getTimestampForVersion( long version ) throws IOException long timeMillisThreshold = config.get( GraphDatabaseSettings.check_point_interval_time ); TimeCheckPointThreshold timeCheckPointThreshold = - new TimeCheckPointThreshold( timeMillisThreshold, Clock.SYSTEM_CLOCK ); + new TimeCheckPointThreshold( timeMillisThreshold, Clock.systemUTC() ); CheckPointThreshold threshold = CheckPointThresholds.or( countCommittedTransactionThreshold, timeCheckPointThreshold ); @@ -795,7 +795,7 @@ private KernelModule buildKernel( TransactionAppender appender, KernelTransactions kernelTransactions = life.add( new KernelTransactions( statementLocksFactory, constraintIndexCreator, statementOperations, schemaWriteGuard, transactionHeaderInformationFactory, transactionCommitProcess, indexConfigStore, legacyIndexProviderLookup, hooks, transactionMonitor, life, - tracers, storageEngine, procedures, transactionIdStore, Clock.SYSTEM_CLOCK ) ); + tracers, storageEngine, procedures, transactionIdStore, Clock.systemUTC() ) ); final Kernel kernel = new Kernel( kernelTransactions, hooks, databaseHealth, transactionMonitor, procedures ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DefaultTransactionTracer.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DefaultTransactionTracer.java index 11ebfe9af8bf3..e7f22bd7c4bd8 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DefaultTransactionTracer.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/DefaultTransactionTracer.java @@ -22,7 +22,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.impl.transaction.tracing.CommitEvent; import org.neo4j.kernel.impl.transaction.tracing.LogAppendEvent; import org.neo4j.kernel.impl.transaction.tracing.LogForceEvent; @@ -33,6 +32,7 @@ import org.neo4j.kernel.impl.transaction.tracing.TransactionEvent; import org.neo4j.kernel.impl.transaction.tracing.TransactionTracer; import org.neo4j.kernel.impl.util.JobScheduler; +import org.neo4j.time.SystemNanoClock; public class DefaultTransactionTracer implements TransactionTracer, LogRotationMonitor { @@ -41,7 +41,7 @@ public interface Monitor void lastLogRotationEventDuration( long millis ); } - private final Clock clock; + private final SystemNanoClock clock; private final Monitor monitor; private final JobScheduler jobScheduler; @@ -75,7 +75,7 @@ public void setLogRotated( boolean logRotated ) @Override public LogRotateEvent beginLogRotate() { - startTimeNanos = clock.nanoTime(); + startTimeNanos = clock.nanos(); return logRotateEvent; } @@ -155,10 +155,10 @@ public void setReadOnly( boolean wasReadOnly ) public DefaultTransactionTracer( Monitor monitor, JobScheduler jobScheduler ) { - this( Clock.SYSTEM_CLOCK, monitor, jobScheduler ); + this( SystemNanoClock.INSTANCE, monitor, jobScheduler ); } - public DefaultTransactionTracer( Clock clock, Monitor monitor, JobScheduler jobScheduler ) + public DefaultTransactionTracer( SystemNanoClock clock, Monitor monitor, JobScheduler jobScheduler ) { this.clock = clock; this.monitor = monitor; @@ -186,7 +186,7 @@ public long logRotationAccumulatedTotalTimeMillis() private void updateCountersAndNotifyListeners() { counter.incrementAndGet(); - long lastEventTime = clock.nanoTime() - startTimeNanos; + long lastEventTime = clock.nanos() - startTimeNanos; accumulatedTotalTimeNanos.addAndGet( lastEventTime ); jobScheduler.schedule( JobScheduler.Groups.metricsEvent, () -> { long millis = TimeUnit.NANOSECONDS.toMillis( lastEventTime ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java index d69fb319b4edd..f12b325c16cdf 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java @@ -19,6 +19,7 @@ */ package org.neo4j.kernel.impl.api; +import java.time.Clock; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -28,7 +29,6 @@ import org.neo4j.collection.pool.Pool; import org.neo4j.graphdb.TransactionTerminatedException; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.KeyReadTokenNameLookup; import org.neo4j.kernel.api.exceptions.ConstraintViolationTransactionFailureException; @@ -215,7 +215,7 @@ public KernelTransactionImplementation initialize( this.terminationReason = null; this.closing = closed = failure = success = beforeHookInvoked = false; this.writeState = TransactionWriteState.NONE; - this.startTimeMillis = clock.currentTimeMillis(); + this.startTimeMillis = clock.millis(); this.lastTransactionIdWhenStarted = lastCommittedTx; this.lastTransactionTimestampWhenStarted = lastTimeStamp; this.transactionEvent = tracer.beginTransaction(); @@ -564,7 +564,7 @@ private long commit() throws TransactionFailureException PhysicalTransactionRepresentation transactionRepresentation = new PhysicalTransactionRepresentation( extractedCommands ); TransactionHeaderInformation headerInformation = headerInformationFactory.create(); - long timeCommitted = clock.currentTimeMillis(); + long timeCommitted = clock.millis(); transactionRepresentation.setHeader( headerInformation.getAdditionalHeader(), headerInformation.getMasterId(), headerInformation.getAuthorId(), diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java index bd71e9b342fe3..2627093413934 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java @@ -19,6 +19,7 @@ */ package org.neo4j.kernel.impl.api; +import java.time.Clock; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -28,7 +29,6 @@ import org.neo4j.collection.pool.MarshlandPool; import org.neo4j.function.Factory; import org.neo4j.graphdb.DatabaseShutdownException; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.KernelTransactionHandle; import org.neo4j.kernel.api.exceptions.Status; @@ -256,7 +256,7 @@ private void assertDatabaseIsRunning() @Override public KernelTransactionsSnapshot get() { - return new KernelTransactionsSnapshot( activeTransactions(), clock.currentTimeMillis() ); + return new KernelTransactionsSnapshot( activeTransactions(), clock.millis() ); } /** diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MetaDataStore.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MetaDataStore.java index 92bf2d0aa9451..793c5dbcc55bc 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MetaDataStore.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/MetaDataStore.java @@ -22,9 +22,9 @@ import java.io.File; import java.io.IOException; import java.nio.file.OpenOption; +import java.time.Clock; import java.util.concurrent.atomic.AtomicLong; -import org.neo4j.helpers.Clock; import org.neo4j.helpers.collection.Visitor; import org.neo4j.io.pagecache.PageCache; import org.neo4j.io.pagecache.PageCursor; @@ -155,7 +155,7 @@ public String description() super( fileName, conf, IdType.NEOSTORE_BLOCK, idGeneratorFactory, pageCache, logProvider, TYPE_DESCRIPTOR, recordFormat, NoStoreHeaderFormat.NO_STORE_HEADER_FORMAT, storeVersion, openOptions ); this.transactionCloseWaitLogger = new CappedLogger( logProvider.getLog( MetaDataStore.class ) ); - transactionCloseWaitLogger.setTimeLimit( 30, SECONDS, Clock.SYSTEM_CLOCK ); + transactionCloseWaitLogger.setTimeLimit( 30, SECONDS, Clock.systemUTC() ); } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/CountsTracker.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/CountsTracker.java index eb89f977796dd..ace73fcae3be6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/CountsTracker.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/CountsTracker.java @@ -21,10 +21,10 @@ import java.io.File; import java.io.IOException; +import java.time.Clock; import java.util.Optional; import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.helpers.Clock; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.configuration.Config; @@ -115,7 +115,7 @@ public void rotationFailed( File source, File target, Headers headers, Exception log.error( format( "Failed to rotate counts store at transaction %d to [%s], from [%s].", headers.get( FileVersion.FILE_VERSION ).txId, target, source ), e ); } - }, new RotationTimerFactory( Clock.SYSTEM_CLOCK, + }, new RotationTimerFactory( Clock.systemUTC(), config.get( GraphDatabaseSettings.counts_store_rotation_timeout ) ), 16, 16, HEADER_FIELDS ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactory.java index 2f0bd7763ca0a..797f6ca5991d6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactory.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.impl.store.kvstore; -import org.neo4j.helpers.Clock; +import java.time.Clock; public class RotationTimerFactory { @@ -34,7 +34,7 @@ public RotationTimerFactory( Clock clock, long timeoutMillis ) public RotationTimer createTimer() { - long startTime = clock.currentTimeMillis(); + long startTime = clock.millis(); return new RotationTimer( startTime, startTime + timeoutMillis ); } @@ -51,12 +51,12 @@ public RotationTimer( long startTime, long timeoutTime ) public boolean isTimedOut() { - return clock.currentTimeMillis() > timeoutTime; + return clock.millis() > timeoutTime; } public long getElapsedTimeMillis() { - return clock.currentTimeMillis() - startTime; + return clock.millis() - startTime; } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracer.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracer.java index 457e5ff11e19c..c3ddebbf0901f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracer.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracer.java @@ -22,12 +22,12 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.impl.transaction.tracing.CheckPointTracer; import org.neo4j.kernel.impl.transaction.tracing.LogCheckPointEvent; import org.neo4j.kernel.impl.transaction.tracing.LogForceEvent; import org.neo4j.kernel.impl.transaction.tracing.LogForceWaitEvent; import org.neo4j.kernel.impl.util.JobScheduler; +import org.neo4j.time.SystemNanoClock; public class DefaultCheckPointerTracer implements CheckPointTracer, CheckPointerMonitor { @@ -36,7 +36,7 @@ public interface Monitor void lastCheckPointEventDuration( long millis ); } - private final Clock clock; + private final SystemNanoClock clock; private final Monitor monitor; private final JobScheduler jobScheduler; @@ -68,10 +68,10 @@ public LogForceEvent beginLogForce() public DefaultCheckPointerTracer( Monitor monitor, JobScheduler jobScheduler ) { - this( Clock.SYSTEM_CLOCK, monitor, jobScheduler ); + this( SystemNanoClock.INSTANCE, monitor, jobScheduler ); } - public DefaultCheckPointerTracer( Clock clock, Monitor monitor, JobScheduler jobScheduler ) + public DefaultCheckPointerTracer( SystemNanoClock clock, Monitor monitor, JobScheduler jobScheduler ) { this.clock = clock; this.monitor = monitor; @@ -81,7 +81,7 @@ public DefaultCheckPointerTracer( Clock clock, Monitor monitor, JobScheduler job @Override public LogCheckPointEvent beginCheckPoint() { - startTimeNanos = clock.nanoTime(); + startTimeNanos = clock.nanos(); return logCheckPointEvent; } @@ -99,7 +99,7 @@ public long checkPointAccumulatedTotalTimeMillis() private void updateCountersAndNotifyListeners() { - final long lastEventTime = clock.nanoTime() - startTimeNanos; + final long lastEventTime = clock.nanos() - startTimeNanos; // update counters counter.incrementAndGet(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThreshold.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThreshold.java index 9ee70785df07e..d01b246401222 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThreshold.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThreshold.java @@ -19,7 +19,7 @@ */ package org.neo4j.kernel.impl.transaction.log.checkpoint; -import org.neo4j.helpers.Clock; +import java.time.Clock; public class TimeCheckPointThreshold extends AbstractCheckPointThreshold { @@ -33,7 +33,7 @@ public TimeCheckPointThreshold( long timeMillisThreshold, Clock clock ) { this.timeMillisThreshold = timeMillisThreshold; this.clock = clock; - this.nextCheckPointTime = clock.currentTimeMillis() + timeMillisThreshold; + this.nextCheckPointTime = clock.millis() + timeMillisThreshold; } @@ -47,7 +47,7 @@ public void initialize( long transactionId ) protected boolean thresholdReached( long lastCommittedTransactionId ) { return lastCommittedTransactionId > lastCheckPointedTransactionId && - clock.currentTimeMillis() >= nextCheckPointTime; + clock.millis() >= nextCheckPointTime; } @Override @@ -59,7 +59,7 @@ protected String description() @Override public void checkPointHappened( long transactionId ) { - nextCheckPointTime = clock.currentTimeMillis() + timeMillisThreshold; + nextCheckPointTime = clock.millis() + timeMillisThreshold; lastCheckPointedTransactionId = transactionId; } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/CappedLogger.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/CappedLogger.java index 942ced7b031b5..b202a714f477d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/CappedLogger.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/CappedLogger.java @@ -19,13 +19,13 @@ */ package org.neo4j.kernel.impl.util; +import java.time.Clock; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; import java.util.concurrent.atomic.AtomicLongFieldUpdater; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.neo4j.helpers.Clock; import org.neo4j.logging.Log; /** @@ -264,7 +264,7 @@ public int getAndIncrementCurrentCount() private boolean checkExpiredAndSetLastCheckTime() { - long now = clock.currentTimeMillis(); + long now = clock.millis(); long check = this.lastCheck; if ( check > now - timeLimitMillis ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/collection/TimedRepository.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/collection/TimedRepository.java index 0db8d4ba9382b..26988a64c9ddc 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/collection/TimedRepository.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/collection/TimedRepository.java @@ -19,6 +19,7 @@ */ package org.neo4j.kernel.impl.util.collection; +import java.time.Clock; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -26,7 +27,6 @@ import java.util.function.Consumer; import org.neo4j.function.Factory; -import org.neo4j.helpers.Clock; import static java.lang.String.format; import static java.lang.System.currentTimeMillis; @@ -59,7 +59,7 @@ private class Entry public Entry( VALUE value ) { this.value = value; - this.latestActivityTimestamp = clock.currentTimeMillis(); + this.latestActivityTimestamp = clock.millis(); } public boolean acquire() @@ -74,7 +74,7 @@ public boolean acquire() */ public boolean release() { - latestActivityTimestamp = clock.currentTimeMillis(); + latestActivityTimestamp = clock.millis(); return state.compareAndSet( IN_USE, IDLE ); } @@ -195,7 +195,7 @@ public Set keys() @Override public void run() { - long maxAllowedAge = clock.currentTimeMillis() - timeout; + long maxAllowedAge = clock.millis() - timeout; for ( KEY key : keys() ) { Entry entry = repo.get( key ); diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ExecutionMonitor.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ExecutionMonitor.java index 9fcf520d63b02..5096559421d92 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ExecutionMonitor.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/ExecutionMonitor.java @@ -19,10 +19,9 @@ */ package org.neo4j.unsafe.impl.batchimport.staging; +import java.time.Clock; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.Clock; - /** * Gets notified now and then about {@link StageExecution}, where statistics can be read and displayed, * aggregated or in other ways make sense of the data of {@link StageExecution}. @@ -70,13 +69,13 @@ public Adapter( Clock clock, long time, TimeUnit unit ) public Adapter( long time, TimeUnit unit ) { - this( Clock.SYSTEM_CLOCK, time, unit ); + this( Clock.systemUTC(), time, unit ); } @Override public long nextCheckTime() { - return clock.currentTimeMillis() + intervalMillis; + return clock.millis() + intervalMillis; } @Override diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitor.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitor.java index f82a5af95a7c0..31c55603eb795 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitor.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitor.java @@ -19,7 +19,7 @@ */ package org.neo4j.unsafe.impl.batchimport.staging; -import org.neo4j.helpers.Clock; +import java.time.Clock; /** * {@link ExecutionMonitor} that wraps several other monitors. Each wrapper monitor can still specify @@ -33,7 +33,7 @@ public class MultiExecutionMonitor implements ExecutionMonitor public MultiExecutionMonitor( ExecutionMonitor... monitors ) { - this( Clock.SYSTEM_CLOCK, monitors ); + this( Clock.systemUTC(), monitors ); } public MultiExecutionMonitor( Clock clock, ExecutionMonitor... monitors ) @@ -98,7 +98,7 @@ private void fillEndTimes() @Override public void check( StageExecution[] executions ) { - long currentTimeMillis = clock.currentTimeMillis(); + long currentTimeMillis = clock.millis(); for ( int i = 0; i < monitors.length; i++ ) { if ( currentTimeMillis >= endTimes[i] ) diff --git a/community/kernel/src/test/java/org/neo4j/helpers/FakeClock.java b/community/kernel/src/test/java/org/neo4j/helpers/FakeClock.java deleted file mode 100644 index 2565179b8b963..0000000000000 --- a/community/kernel/src/test/java/org/neo4j/helpers/FakeClock.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.neo4j.helpers; - -import java.util.concurrent.TimeUnit; - -import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static java.util.concurrent.TimeUnit.NANOSECONDS; - -/** - * @deprecated please use base your fake clocks on {@link java.time.Clock} instead - */ -@Deprecated -public class FakeClock implements Clock -{ - private volatile long time; - - public FakeClock() - { - this( 0, MILLISECONDS ); - } - - public FakeClock( long currentTime, TimeUnit timeUnit ) - { - this.time = timeUnit.toNanos( currentTime ); - } - - @Override - public long currentTimeMillis() - { - return NANOSECONDS.toMillis( time ); - } - - @Override - public long nanoTime() - { - return time; - } - - public synchronized void forward( long amount, TimeUnit timeUnit ) - { - time = time + timeUnit.toNanos( amount ); - } - - public Progressor progressor( long time, TimeUnit unit ) - { - return new Progressor( unit.toNanos( time ) ); - } - - /** - * Used to allow the clock to advance by the same number of ticks each time. - */ - public class Progressor - { - private final long nanos; - - private Progressor( long nanos ) - { - this.nanos = nanos; - } - - public void tick() - { - forward( nanos, NANOSECONDS ); - } - } -} diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java b/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java index 733c4778dca14..1d8a4b5129560 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java @@ -22,7 +22,6 @@ import java.util.function.Supplier; import org.neo4j.collection.pool.Pool; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.api.security.AccessMode; import org.neo4j.kernel.impl.api.KernelTransactionImplementation; import org.neo4j.kernel.impl.api.SchemaWriteGuard; @@ -84,7 +83,7 @@ static Instances kernelTransactionWithInternals( AccessMode accessMode ) mock( TransactionRepresentationCommitProcess.class ), mock( TransactionMonitor.class ), mock( Supplier.class ), mock( Pool.class ), - Clock.SYSTEM_CLOCK, + java.time.Clock.systemUTC(), TransactionTracer.NULL, storageEngine ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/DefaultTransactionTracerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/DefaultTransactionTracerTest.java index fa01689463452..1e68a33f85515 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/DefaultTransactionTracerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/DefaultTransactionTracerTest.java @@ -24,13 +24,13 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.impl.api.DefaultTransactionTracer.Monitor; import org.neo4j.kernel.impl.transaction.tracing.CommitEvent; import org.neo4j.kernel.impl.transaction.tracing.LogAppendEvent; import org.neo4j.kernel.impl.transaction.tracing.LogRotateEvent; import org.neo4j.kernel.impl.transaction.tracing.TransactionEvent; import org.neo4j.test.OnDemandJobScheduler; +import org.neo4j.time.FakeClock; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java index 58fc687dcde1f..9ef40e63d7ca0 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java @@ -358,7 +358,7 @@ public void shouldAllowTerminatingFromADifferentThread() throws Exception public void shouldUseStartTimeAndTxIdFromWhenStartingTxAsHeader() throws Exception { // GIVEN a transaction starting at one point in time - long startingTime = clock.currentTimeMillis(); + long startingTime = clock.millis(); when( legacyIndexState.hasChanges() ).thenReturn( true ); doAnswer( invocation -> { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java index b3df854d81705..f48bf1b072501 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java @@ -33,7 +33,6 @@ import org.neo4j.collection.pool.Pool; import org.neo4j.graphdb.TransactionTerminatedException; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.TransactionFailureException; @@ -47,6 +46,7 @@ import org.neo4j.kernel.impl.transaction.TransactionMonitor; import org.neo4j.kernel.impl.transaction.tracing.TransactionTracer; import org.neo4j.storageengine.api.StorageEngine; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.instanceOf; import static org.junit.Assert.assertEquals; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java index 1710f9eff5cb5..1627ba8b3a2b4 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java @@ -25,7 +25,6 @@ import java.util.function.Supplier; import org.neo4j.collection.pool.Pool; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.api.KernelTransaction.Type; import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.kernel.api.security.AccessMode; @@ -50,6 +49,7 @@ import org.neo4j.storageengine.api.TransactionApplicationMode; import org.neo4j.storageengine.api.lock.ResourceLocker; import org.neo4j.storageengine.api.txstate.ReadableTransactionState; +import org.neo4j.time.FakeClock; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyCollectionOf; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java index 176b5e7e90001..155bdbfb3f127 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java @@ -21,6 +21,7 @@ import org.junit.Test; +import java.time.Clock; import java.util.Collection; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; @@ -33,7 +34,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReferenceArray; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.KernelTransactionHandle; import org.neo4j.kernel.api.exceptions.Status; @@ -443,12 +443,12 @@ private static KernelTransactions newKernelTransactions( Locks locks, StorageEng return new TestKernelTransactions( statementLocksFactory, null, null, null, TransactionHeaderInformationFactory.DEFAULT, commitProcess, null, null, new TransactionHooks(), mock( TransactionMonitor.class ), life, - tracers, storageEngine, new Procedures(), transactionIdStore, Clock.SYSTEM_CLOCK ); + tracers, storageEngine, new Procedures(), transactionIdStore, Clock.systemUTC() ); } return new KernelTransactions( statementLocksFactory, null, null, null, TransactionHeaderInformationFactory.DEFAULT, commitProcess, null, null, new TransactionHooks(), mock( TransactionMonitor.class ), life, - tracers, storageEngine, new Procedures(), transactionIdStore, Clock.SYSTEM_CLOCK ); + tracers, storageEngine, new Procedures(), transactionIdStore, Clock.systemUTC() ); } private static TransactionCommitProcess newRememberingCommitProcess( final TransactionRepresentation[] slot ) diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactoryTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactoryTest.java index ac9811e3573a8..447aa0d9651e4 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactoryTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactoryTest.java @@ -25,10 +25,10 @@ import java.io.File; import java.util.function.Supplier; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.impl.api.KernelTransactionsSnapshot; import org.neo4j.kernel.impl.store.id.configuration.CommunityIdTypeConfigurationProvider; import org.neo4j.test.rule.fs.EphemeralFileSystemRule; +import org.neo4j.time.FakeClock; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; @@ -78,7 +78,7 @@ public void shouldDelayFreeingOfAggressivelyReusedIdsConsideringTimeAsWell() thr final long safeZone = MINUTES.toMillis( 1 ); ControllableSnapshotSupplier boundaries = new ControllableSnapshotSupplier(); BufferingIdGeneratorFactory bufferingIdGeneratorFactory = new BufferingIdGeneratorFactory( actual, - boundaries, t -> clock.currentTimeMillis() - t.snapshotTime() >= safeZone, + boundaries, t -> clock.millis() - t.snapshotTime() >= safeZone, new CommunityIdTypeConfigurationProvider() ); IdGenerator idGenerator = bufferingIdGeneratorFactory.open( diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/AbstractKeyValueStoreTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/AbstractKeyValueStoreTest.java index bce93e31bbda3..c782fdb48012c 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/AbstractKeyValueStoreTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/AbstractKeyValueStoreTest.java @@ -27,6 +27,7 @@ import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; +import java.time.Clock; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -34,7 +35,6 @@ import org.neo4j.function.IOFunction; import org.neo4j.function.ThrowingConsumer; -import org.neo4j.helpers.Clock; import org.neo4j.helpers.collection.Pair; import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; @@ -483,7 +483,7 @@ private Store( HeaderField... headerFields ) private Store( long rotationTimeout, HeaderField... headerFields ) { super( resourceManager.fileSystem(), resourceManager.pageCache(), resourceManager.testPath(), null, - new RotationTimerFactory( Clock.SYSTEM_CLOCK, rotationTimeout ), 16, 16, headerFields ); + new RotationTimerFactory( Clock.systemUTC(), rotationTimeout ), 16, 16, headerFields ); this.headerFields = headerFields; setEntryUpdaterInitializer( new DataInitializer>() { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactoryTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactoryTest.java index cc04e874f4af7..306895f9b37c1 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactoryTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/kvstore/RotationTimerFactoryTest.java @@ -22,10 +22,12 @@ import org.junit.Assert; import org.junit.Test; +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneOffset; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.FakeClock; -import org.neo4j.helpers.FrozenClock; +import org.neo4j.time.FakeClock; public class RotationTimerFactoryTest { @@ -33,10 +35,10 @@ public class RotationTimerFactoryTest public void testTimer() throws Exception { // GIVEN - FrozenClock clock = new FrozenClock( 10000, TimeUnit.MILLISECONDS ); + Clock fixedClock = Clock.fixed( Instant.ofEpochMilli( 10000 ), ZoneOffset.UTC ); // WHEN - RotationTimerFactory timerFactory = new RotationTimerFactory( clock, 1000); + RotationTimerFactory timerFactory = new RotationTimerFactory( fixedClock, 1000); RotationTimerFactory.RotationTimer timer = timerFactory.createTimer(); RotationTimerFactory.RotationTimer anotherTimer = timerFactory.createTimer(); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracerTest.java index 2a260e99fa3ad..02c277463f9b8 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/DefaultCheckPointerTracerTest.java @@ -24,10 +24,10 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.impl.transaction.log.checkpoint.DefaultCheckPointerTracer.Monitor; import org.neo4j.kernel.impl.transaction.tracing.LogCheckPointEvent; import org.neo4j.test.OnDemandJobScheduler; +import org.neo4j.time.FakeClock; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThresholdTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThresholdTest.java index 22f16fab8f4ff..f7046958cb2d2 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThresholdTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/TimeCheckPointThresholdTest.java @@ -21,7 +21,7 @@ import org.junit.Test; -import org.neo4j.helpers.FakeClock; +import org.neo4j.time.FakeClock; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static org.junit.Assert.assertFalse; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CappedLoggerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CappedLoggerTest.java index 05c67de39b62d..db728c10eb650 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CappedLoggerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CappedLoggerTest.java @@ -27,12 +27,12 @@ import org.junit.runners.Parameterized; import java.io.IOException; +import java.time.Clock; import java.util.Arrays; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.Clock; -import org.neo4j.helpers.FakeClock; import org.neo4j.logging.AssertableLogProvider; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.any; import static org.hamcrest.Matchers.containsString; @@ -214,19 +214,19 @@ public void mustThrowOnSettingNegativeCountLimit() throws Exception @Test( expected = IllegalArgumentException.class ) public void mustThrowOnZeroTimeLimit() throws Exception { - logger.setTimeLimit( 0, TimeUnit.MILLISECONDS, Clock.SYSTEM_CLOCK ); + logger.setTimeLimit( 0, TimeUnit.MILLISECONDS, Clock.systemUTC() ); } @Test( expected = IllegalArgumentException.class ) public void mustThrowOnNegativeTimeLimit() throws Exception { - logger.setTimeLimit( -1, TimeUnit.MILLISECONDS, Clock.SYSTEM_CLOCK ); + logger.setTimeLimit( -1, TimeUnit.MILLISECONDS, Clock.systemUTC() ); } @Test( expected = IllegalArgumentException.class ) public void mustThrowOnNullTimeUnit() throws Exception { - logger.setTimeLimit( 10, null, Clock.SYSTEM_CLOCK ); + logger.setTimeLimit( 10, null, Clock.systemUTC() ); } @Test( expected = IllegalArgumentException.class ) @@ -239,7 +239,7 @@ public void mustThrowOnNullClock() throws Exception public void mustAllowConfigurationChaining() throws Exception { logger.setCountLimit( 1 ) - .setTimeLimit( 10, TimeUnit.MILLISECONDS, Clock.SYSTEM_CLOCK ) + .setTimeLimit( 10, TimeUnit.MILLISECONDS, Clock.systemUTC() ) .setDuplicateFilterEnabled( true ) .unsetCountLimit() .unsetTimeLimit() diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/collection/TimedRepositoryTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/collection/TimedRepositoryTest.java index 54f60f47680c4..c19cbed1fbc6e 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/collection/TimedRepositoryTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/collection/TimedRepositoryTest.java @@ -33,7 +33,7 @@ import java.util.function.Consumer; import org.neo4j.function.Factory; -import org.neo4j.helpers.FakeClock; +import org.neo4j.time.FakeClock; import static java.util.Arrays.asList; import static java.util.concurrent.TimeUnit.MILLISECONDS; diff --git a/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiter.java b/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiter.java index f574af030df25..b2452dd10e082 100644 --- a/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiter.java +++ b/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiter.java @@ -21,10 +21,10 @@ import java.io.IOException; import java.io.InputStream; +import java.time.Clock; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.neo4j.helpers.Clock; public class InputStreamAwaiter { @@ -34,7 +34,7 @@ public class InputStreamAwaiter public InputStreamAwaiter( InputStream input ) { - this( Clock.SYSTEM_CLOCK, input ); + this( Clock.systemUTC(), input ); } public InputStreamAwaiter( Clock clock, InputStream input ) @@ -46,7 +46,7 @@ public InputStreamAwaiter( Clock clock, InputStream input ) public void awaitLine( String expectedLine, long timeout, TimeUnit unit ) throws IOException, TimeoutException, InterruptedException { - long deadline = clock.currentTimeMillis() + unit.toMillis( timeout ); + long deadline = clock.millis() + unit.toMillis( timeout ); StringBuilder buffer = new StringBuilder(); do { @@ -66,7 +66,7 @@ public void awaitLine( String expectedLine, long timeout, TimeUnit unit ) throws Thread.sleep( 10 ); } - while ( clock.currentTimeMillis() < deadline ); + while ( clock.millis() < deadline ); throw new TimeoutException( "Timed out waiting to read line: [" + expectedLine + "]. Seen input:\n\t" + buffer.toString().replaceAll( "\n", "\n\t" ) ); diff --git a/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiterTest.java b/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiterTest.java index 376b79cccca7e..53a97a4a0746b 100644 --- a/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiterTest.java +++ b/community/kernel/src/test/java/org/neo4j/test/InputStreamAwaiterTest.java @@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.neo4j.helpers.FakeClock; +import org.neo4j.time.FakeClock; import static org.junit.Assert.fail; import static org.mockito.Mockito.spy; @@ -38,7 +38,7 @@ public void shouldWaitForALineWithoutBlocking() throws Exception { // given FakeClock clock = new FakeClock(); - InputStream inputStream = spy( new MockInputStream( clock.progressor( 5, TimeUnit.MILLISECONDS ), + InputStream inputStream = spy( new MockInputStream( new Ticker( clock, 5, TimeUnit.MILLISECONDS ), lines( "important message" ) ) ); InputStreamAwaiter awaiter = new InputStreamAwaiter( clock, inputStream ); @@ -51,7 +51,7 @@ public void shouldTimeoutWhenDifferentContentProvided() throws Exception { // given FakeClock clock = new FakeClock(); - InputStream inputStream = spy( new MockInputStream( clock.progressor( 1, TimeUnit.SECONDS ), + InputStream inputStream = spy( new MockInputStream( new Ticker( clock, 1, TimeUnit.SECONDS ), lines( "different content" ), lines( "different message" ) ) ); InputStreamAwaiter awaiter = new InputStreamAwaiter( clock, inputStream ); @@ -74,7 +74,7 @@ public void shouldTimeoutWhenNoContentProvided() throws Exception { // given FakeClock clock = new FakeClock(); - InputStream inputStream = spy( new MockInputStream( clock.progressor( 1, TimeUnit.SECONDS ) ) ); + InputStream inputStream = spy( new MockInputStream( new Ticker( clock, 1, TimeUnit.SECONDS ) ) ); InputStreamAwaiter awaiter = new InputStreamAwaiter( clock, inputStream ); // when @@ -100,15 +100,34 @@ private static String lines( String... lines ) return result.toString(); } + private class Ticker + { + private FakeClock clock; + private long duration; + private TimeUnit timeUnit; + + Ticker( FakeClock clock, long duration, TimeUnit timeUnit ) + { + this.clock = clock; + this.duration = duration; + this.timeUnit = timeUnit; + } + + void tick() + { + clock.forward( duration, timeUnit ); + } + } + private static class MockInputStream extends InputStream { + private final Ticker ticker; private final byte[][] chunks; - private final FakeClock.Progressor progressor; private int chunk = 0; - MockInputStream( FakeClock.Progressor progressor, String... chunks ) + MockInputStream( Ticker ticker, String... chunks ) { - this.progressor = progressor; + this.ticker = ticker; this.chunks = new byte[chunks.length][]; for ( int i = 0; i < chunks.length; i++ ) { @@ -119,7 +138,7 @@ private static class MockInputStream extends InputStream @Override public int available() throws IOException { - progressor.tick(); + ticker.tick(); if ( chunk >= chunks.length ) { return 0; diff --git a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitorTest.java b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitorTest.java index 7017aae4da805..66d50dae5f9bc 100644 --- a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitorTest.java +++ b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/MultiExecutionMonitorTest.java @@ -22,12 +22,12 @@ import org.junit.Rule; import org.junit.Test; +import java.time.Clock; import java.util.Arrays; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.Clock; -import org.neo4j.helpers.FakeClock; import org.neo4j.test.rule.CleanupRule; +import org.neo4j.time.FakeClock; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static org.hamcrest.Matchers.lessThanOrEqualTo; diff --git a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorAssignmentStrategies.java b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorAssignmentStrategies.java index 985dbd109b34a..0d47224a09b0f 100644 --- a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorAssignmentStrategies.java +++ b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/staging/ProcessorAssignmentStrategies.java @@ -19,13 +19,13 @@ */ package org.neo4j.unsafe.impl.batchimport.staging; +import java.time.Clock; import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.Clock; import org.neo4j.unsafe.impl.batchimport.ParallelBatchImporter; import static java.lang.String.format; @@ -41,7 +41,7 @@ public class ProcessorAssignmentStrategies */ public static ExecutionMonitor eagerRandomSaturation( final int availableProcessor ) { - return new AbstractAssigner( Clock.SYSTEM_CLOCK, 10, TimeUnit.SECONDS ) + return new AbstractAssigner( Clock.systemUTC(), 10, TimeUnit.SECONDS ) { @Override public void start( StageExecution[] executions ) @@ -82,7 +82,7 @@ public void check( StageExecution[] executions ) */ public static ExecutionMonitor randomSaturationOverTime( final int availableProcessor ) { - return new AbstractAssigner( Clock.SYSTEM_CLOCK, 100, TimeUnit.MILLISECONDS ) + return new AbstractAssigner( Clock.systemUTC(), 100, TimeUnit.MILLISECONDS ) { private int processors = availableProcessor; diff --git a/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java b/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java index bad4ce2a7d3f1..9496ca8c55c66 100644 --- a/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java +++ b/community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java @@ -27,11 +27,11 @@ import java.io.IOException; import java.net.URI; import java.security.GeneralSecurityException; +import java.time.Clock; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Optional; -import java.util.function.Function; import java.util.function.Supplier; import java.util.regex.Pattern; import javax.servlet.Filter; @@ -41,7 +41,6 @@ import org.neo4j.bolt.security.ssl.KeyStoreInformation; import org.neo4j.graphdb.DependencyResolver; import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.helpers.Clock; import org.neo4j.helpers.HostnamePort; import org.neo4j.helpers.RunCarefully; import org.neo4j.io.fs.DefaultFileSystemAbstraction; @@ -89,7 +88,6 @@ import static java.lang.Math.round; import static java.lang.String.format; import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; import static org.neo4j.helpers.collection.Iterables.map; import static org.neo4j.kernel.impl.util.JobScheduler.Groups.serverTransactionTimeout; import static org.neo4j.server.configuration.ServerSettings.HttpConnector; @@ -229,14 +227,14 @@ public DependencyResolver getDependencyResolver() protected DatabaseActions createDatabaseActions() { return new DatabaseActions( - new LeaseManager( SYSTEM_CLOCK ), + new LeaseManager( Clock.systemUTC() ), config.get( ServerSettings.script_sandboxing_enabled ), database.getGraph() ); } private TransactionFacade createTransactionalActions() { final long timeoutMillis = getTransactionTimeoutMillis(); - final Clock clock = SYSTEM_CLOCK; + final Clock clock = Clock.systemUTC(); transactionRegistry = new TransactionHandleRegistry( clock, timeoutMillis, logProvider ); @@ -245,7 +243,7 @@ private TransactionFacade createTransactionalActions() long runEvery = round( timeoutMillis / 2.0 ); resolveDependency( JobScheduler.class ).scheduleRecurring( serverTransactionTimeout, () -> { - long maxAge = clock.currentTimeMillis() - timeoutMillis; + long maxAge = clock.millis() - timeoutMillis; transactionRegistry.rollbackSuspendedTransactionsIdleSince( maxAge ); }, runEvery, MILLISECONDS ); @@ -286,7 +284,7 @@ private void startModules() private void stopModules() { - new RunCarefully( map( (Function) module -> module::stop, serverModules ) ).run(); + new RunCarefully( map( module -> module::stop, serverModules ) ).run(); } @Override diff --git a/community/server/src/main/java/org/neo4j/server/rest/paging/Lease.java b/community/server/src/main/java/org/neo4j/server/rest/paging/Lease.java index 43a6a185a2a35..b226e20635ce2 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/paging/Lease.java +++ b/community/server/src/main/java/org/neo4j/server/rest/paging/Lease.java @@ -19,10 +19,9 @@ */ package org.neo4j.server.rest.paging; +import java.time.Clock; import java.util.UUID; -import org.neo4j.helpers.Clock; - public class Lease { private long startTime; @@ -41,7 +40,7 @@ public class Lease this.clock = clock; this.leasedTraverser = leasedTraverser; - this.startTime = clock.currentTimeMillis(); + this.startTime = clock.millis(); this.leasePeriod = leasePeriodInSeconds * 1000; this.id = toHexOnly( UUID.randomUUID() ); } @@ -67,13 +66,13 @@ public void renew() { if ( !expired() ) { - startTime = clock.currentTimeMillis(); + startTime = clock.millis(); } } public boolean expired() { - return startTime + leasePeriod < clock.currentTimeMillis(); + return startTime + leasePeriod < clock.millis(); } public long getStartTime() diff --git a/community/server/src/main/java/org/neo4j/server/rest/paging/LeaseManager.java b/community/server/src/main/java/org/neo4j/server/rest/paging/LeaseManager.java index 7adfff9a057c4..0456c2e1fc061 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/paging/LeaseManager.java +++ b/community/server/src/main/java/org/neo4j/server/rest/paging/LeaseManager.java @@ -19,15 +19,14 @@ */ package org.neo4j.server.rest.paging; +import java.time.Clock; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.neo4j.helpers.Clock; - public class LeaseManager { private final Clock clock; - private Map leases = new ConcurrentHashMap(); + private Map leases = new ConcurrentHashMap<>(); public LeaseManager( Clock clock ) { @@ -67,7 +66,7 @@ private void pruneOldLeasesByNaivelyIteratingThroughAllOfThem() try { Lease lease = leases.get( key ); - if ( lease.getStartTime() + lease.getPeriod() < clock.currentTimeMillis() ) + if ( lease.getStartTime() + lease.getPeriod() < clock.millis() ) { remove( key ); } diff --git a/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandleRegistry.java b/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandleRegistry.java index 88e823a632f3e..3d361a849a2df 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandleRegistry.java +++ b/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandleRegistry.java @@ -19,6 +19,7 @@ */ package org.neo4j.server.rest.transactional; +import java.time.Clock; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -27,7 +28,6 @@ import java.util.function.Predicate; import org.neo4j.function.Predicates; -import org.neo4j.helpers.Clock; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; import org.neo4j.server.rest.transactional.error.InvalidConcurrentTransactionAccess; @@ -105,7 +105,7 @@ private SuspendedTransaction( ActiveTransaction activeMarker, TransactionHandle { this.activeMarker = activeMarker; this.transactionHandle = transactionHandle; - this.lastActiveTimestamp = clock.currentTimeMillis(); + this.lastActiveTimestamp = clock.millis(); } @Override @@ -242,7 +242,7 @@ public TransactionHandle terminate( long id ) throws TransactionLifecycleExcepti @Override public void rollbackAllSuspendedTransactions() { - rollbackSuspended( Predicates.alwaysTrue() ); + rollbackSuspended( Predicates.alwaysTrue() ); } public void rollbackSuspendedTransactionsIdleSince( final long oldestLastActiveTime ) @@ -262,7 +262,7 @@ public void rollbackSuspendedTransactionsIdleSince( final long oldestLastActiveT private void rollbackSuspended( Predicate predicate ) { - Set candidateTransactionIdsToRollback = new HashSet(); + Set candidateTransactionIdsToRollback = new HashSet<>(); for ( Map.Entry entry : registry.entrySet() ) { diff --git a/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java b/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java index 03fb7e8fa8d5e..110e6fc63e0c6 100644 --- a/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java +++ b/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.time.Clock; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -30,7 +31,6 @@ import org.neo4j.dbms.DatabaseManagementSystemSettings; import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.helpers.Clock; import org.neo4j.helpers.HostnamePort; import org.neo4j.kernel.GraphDatabaseDependencies; import org.neo4j.kernel.configuration.Config; @@ -52,7 +52,6 @@ import org.neo4j.server.rest.web.DatabaseActions; import org.neo4j.test.ImpermanentGraphDatabase; -import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; import static org.neo4j.helpers.collection.MapUtil.stringMap; import static org.neo4j.server.ServerTestUtils.asOneLine; import static org.neo4j.server.configuration.ServerSettings.httpConnector; @@ -312,7 +311,7 @@ public CommunityServerBuilder withPreflightTasks( PreflightTask... tasks ) protected DatabaseActions createDatabaseActionsObject( Database database, Config config ) { - Clock clockToUse = (clock != null) ? clock : SYSTEM_CLOCK; + Clock clockToUse = (clock != null) ? clock : Clock.systemUTC(); return new DatabaseActions( new LeaseManager( clockToUse ), diff --git a/community/server/src/test/java/org/neo4j/server/rest/ManageNodeDocIT.java b/community/server/src/test/java/org/neo4j/server/rest/ManageNodeDocIT.java index 5094afe759e96..2a5e4653b4b2a 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/ManageNodeDocIT.java +++ b/community/server/src/test/java/org/neo4j/server/rest/ManageNodeDocIT.java @@ -42,7 +42,6 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.GraphDatabaseDependencies; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Settings; @@ -79,6 +78,7 @@ import org.neo4j.test.server.EntityOutputFormat; import org.neo4j.test.server.ExclusiveServerTestBase; import org.neo4j.test.server.HTTP; +import org.neo4j.time.FakeClock; import static java.lang.System.lineSeparator; import static org.hamcrest.Matchers.containsString; diff --git a/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseManagerTest.java b/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseManagerTest.java index cd4180c7ac49f..350df64653d7f 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseManagerTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseManagerTest.java @@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.FakeClock; +import org.neo4j.time.FakeClock; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; diff --git a/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseTest.java b/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseTest.java index fda2434e11053..77ce1d14e9453 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/paging/LeaseTest.java @@ -19,10 +19,11 @@ */ package org.neo4j.server.rest.paging; +import org.junit.Test; + import java.util.concurrent.TimeUnit; -import org.junit.Test; -import org.neo4j.helpers.FakeClock; +import org.neo4j.time.FakeClock; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; diff --git a/community/server/src/test/java/org/neo4j/server/rest/paging/PagedTraverserDocIT.java b/community/server/src/test/java/org/neo4j/server/rest/paging/PagedTraverserDocIT.java index 38556227cdc4c..6c2509499ea2c 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/paging/PagedTraverserDocIT.java +++ b/community/server/src/test/java/org/neo4j/server/rest/paging/PagedTraverserDocIT.java @@ -36,7 +36,6 @@ import org.neo4j.graphdb.Node; import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.Transaction; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.impl.annotations.Documented; import org.neo4j.server.CommunityNeoServer; import org.neo4j.server.database.Database; @@ -51,6 +50,7 @@ import org.neo4j.server.scripting.javascript.GlobalJavascriptInitializer; import org.neo4j.test.TestData; import org.neo4j.test.server.ExclusiveServerTestBase; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertEquals; diff --git a/community/server/src/test/java/org/neo4j/server/rest/transactional/ConcurrentTransactionAccessTest.java b/community/server/src/test/java/org/neo4j/server/rest/transactional/ConcurrentTransactionAccessTest.java index b808268bcce13..e848288c6f3fd 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/transactional/ConcurrentTransactionAccessTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/transactional/ConcurrentTransactionAccessTest.java @@ -22,9 +22,9 @@ import org.junit.Test; import java.net.URI; +import java.time.Clock; import javax.servlet.http.HttpServletRequest; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.GraphDatabaseQueryService; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.security.AccessMode; diff --git a/community/server/src/test/java/org/neo4j/server/rest/transactional/TransactionHandleRegistryTest.java b/community/server/src/test/java/org/neo4j/server/rest/transactional/TransactionHandleRegistryTest.java index a36f362704b33..cf734c4d0e27b 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/transactional/TransactionHandleRegistryTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/transactional/TransactionHandleRegistryTest.java @@ -19,14 +19,15 @@ */ package org.neo4j.server.rest.transactional; +import org.junit.Test; + import java.util.concurrent.TimeUnit; -import org.junit.Test; -import org.neo4j.helpers.FakeClock; import org.neo4j.logging.AssertableLogProvider; import org.neo4j.server.rest.transactional.error.InvalidConcurrentTransactionAccess; import org.neo4j.server.rest.transactional.error.InvalidTransactionId; import org.neo4j.server.rest.transactional.error.TransactionLifecycleException; +import org.neo4j.time.FakeClock; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertNotEquals; @@ -148,7 +149,7 @@ public void transactionsShouldBeEvictedWhenUnusedLongerThanTimeout() throws Exce registry.release( txId2, newTx ); // When - registry.rollbackSuspendedTransactionsIdleSince( clock.currentTimeMillis() - 1000 ); + registry.rollbackSuspendedTransactionsIdleSince( clock.millis() - 1000 ); // Then assertThat( registry.acquire( txId2 ), equalTo( newTx ) ); @@ -186,7 +187,7 @@ public void expiryTimeShouldBeSetToCurrentTimePlusTimeout() throws Exception long timesOutAt = registry.release( id, handle ); // Then - assertThat( timesOutAt, equalTo( clock.currentTimeMillis() + timeoutLength ) ); + assertThat( timesOutAt, equalTo( clock.millis() + timeoutLength ) ); // And when clock.forward( 1337, TimeUnit.MILLISECONDS ); @@ -194,7 +195,7 @@ public void expiryTimeShouldBeSetToCurrentTimePlusTimeout() throws Exception timesOutAt = registry.release( id, handle ); // Then - assertThat( timesOutAt, equalTo( clock.currentTimeMillis() + timeoutLength ) ); + assertThat( timesOutAt, equalTo( clock.millis() + timeoutLength ) ); } @Test diff --git a/community/server/src/test/java/org/neo4j/server/rest/web/DatabaseActionsTest.java b/community/server/src/test/java/org/neo4j/server/rest/web/DatabaseActionsTest.java index d2b0d0cf6f5df..aaf955f66e5e1 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/web/DatabaseActionsTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/web/DatabaseActionsTest.java @@ -46,7 +46,6 @@ import org.neo4j.graphdb.schema.ConstraintDefinition; import org.neo4j.graphdb.schema.ConstraintType; import org.neo4j.graphdb.schema.IndexDefinition; -import org.neo4j.helpers.FakeClock; import org.neo4j.helpers.collection.Iterables; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.helpers.collection.Pair; @@ -67,6 +66,7 @@ import org.neo4j.server.rest.repr.RelationshipRepresentationTest; import org.neo4j.server.rest.web.DatabaseActions.RelationshipDirection; import org.neo4j.test.TestGraphDatabaseFactory; +import org.neo4j.time.FakeClock; import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; @@ -138,7 +138,7 @@ private long createNode( Map properties ) @Test public void createdNodeShouldBeInDatabase() throws Exception { - NodeRepresentation noderep = actions.createNode( Collections.emptyMap() ); + NodeRepresentation noderep = actions.createNode( Collections.emptyMap() ); try (Transaction tx = database.getGraph().beginTx()) { @@ -158,7 +158,7 @@ public void shouldBeAbleToStorePropertiesInAnExistingNode() throws PropertyValueException, NodeNotFoundException { long nodeId = graphdbHelper.createNode(); - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "baz", 17 ); actions.setAllNodeProperties( nodeId, properties ); @@ -174,7 +174,7 @@ public void shouldBeAbleToStorePropertiesInAnExistingNode() throws public void shouldFailOnTryingToStoreMixedArraysAsAProperty() throws Exception { long nodeId = graphdbHelper.createNode(); - Map properties = new HashMap(); + Map properties = new HashMap<>(); Object[] dodgyArray = new Object[3]; dodgyArray[0] = 0; dodgyArray[1] = 1; @@ -198,7 +198,7 @@ public void shouldOverwriteExistingProperties() throws PropertyValueException, tx.success(); } - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "baz", 17 ); actions.setAllNodeProperties( nodeId, properties ); @@ -215,7 +215,7 @@ public void shouldBeAbleToGetPropertiesOnNode() throws NodeNotFoundException { long nodeId; - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "neo", "Thomas A. Anderson" ); properties.put( "number", 15L ); @@ -257,7 +257,7 @@ public void shouldRemoveNodeWithNoRelationsFromDBOnDelete() throws NodeNotFoundE @Test public void shouldBeAbleToSetPropertyOnNode() throws Exception { - long nodeId = createNode( Collections.emptyMap() ); + long nodeId = createNode( Collections.emptyMap() ); String key = "foo"; Object value = "bar"; actions.setNodeProperty( nodeId, key, value ); @@ -295,7 +295,7 @@ public void shouldBeAbleToGetPropertyOnNode() throws Exception @Test public void shouldBeAbleToRemoveNodeProperties() throws Exception { - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "number", 15 ); long nodeId = createNode( properties ); @@ -316,14 +316,14 @@ public void shouldStoreRelationshipsBetweenTwoExistingNodes() throws Exception { int relationshipCount = graphdbHelper.getNumberOfRelationships(); actions.createRelationship( graphdbHelper.createNode(), graphdbHelper.createNode(), "LOVES", - Collections.emptyMap() ); + Collections.emptyMap() ); assertEquals( relationshipCount + 1, graphdbHelper.getNumberOfRelationships() ); } @Test public void shouldStoreSuppliedPropertiesWhenCreatingRelationship() throws Exception { - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "string", "value" ); properties.put( "integer", 17 ); long relId = actions.createRelationship( graphdbHelper.createNode(), graphdbHelper.createNode(), "LOVES", @@ -382,7 +382,7 @@ public void shouldAllowCreateRelationshipWithSameStartAsEndNode() throws Excepti @Test public void shouldBeAbleToRemoveNodeProperty() throws Exception { - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "number", 15 ); long nodeId = createNode( properties ); @@ -400,7 +400,7 @@ public void shouldBeAbleToRemoveNodeProperty() throws Exception @Test public void shouldReturnTrueIfNodePropertyRemoved() throws Exception { - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "number", 15 ); long nodeId = createNode( properties ); @@ -410,7 +410,7 @@ public void shouldReturnTrueIfNodePropertyRemoved() throws Exception @Test(expected = NoSuchPropertyException.class) public void shouldReturnFalseIfNodePropertyNotRemoved() throws Exception { - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "number", 15 ); long nodeId = createNode( properties ); @@ -429,7 +429,7 @@ public void shouldBeAbleToGetPropertiesOnRelationship() throws Exception { long relationshipId; - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "neo", "Thomas A. Anderson" ); properties.put( "number", 15L ); @@ -456,7 +456,7 @@ public void shouldBeAbleToGetPropertiesOnRelationship() throws Exception @Test public void shouldBeAbleToRetrieveASinglePropertyFromARelationship() throws Exception { - Map properties = new HashMap(); + Map properties = new HashMap<>(); properties.put( "foo", "bar" ); properties.put( "neo", "Thomas A. Anderson" ); properties.put( "number", 15L ); @@ -500,12 +500,12 @@ public void shouldBeAbleToRetrieveRelationshipsFromNode() throws Exception { verifyRelReps( 3, actions.getNodeRelationships( nodeId, RelationshipDirection.all, - Collections.emptyList() ) ); + Collections.emptyList() ) ); verifyRelReps( 1, - actions.getNodeRelationships( nodeId, RelationshipDirection.in, Collections.emptyList() ) ); + actions.getNodeRelationships( nodeId, RelationshipDirection.in, Collections.emptyList() ) ); verifyRelReps( 2, actions.getNodeRelationships( nodeId, RelationshipDirection.out, - Collections.emptyList() ) ); + Collections.emptyList() ) ); verifyRelReps( 3, actions.getNodeRelationships( nodeId, RelationshipDirection.all, Arrays.asList( "LIKES", @@ -542,13 +542,13 @@ public void shouldNotGetAnyRelationshipsWhenRetrievingFromNodeWithoutRelationshi { verifyRelReps( 0, actions.getNodeRelationships( nodeId, RelationshipDirection.all, - Collections.emptyList() ) ); + Collections.emptyList() ) ); verifyRelReps( 0, actions.getNodeRelationships( nodeId, RelationshipDirection.in, - Collections.emptyList() ) ); + Collections.emptyList() ) ); verifyRelReps( 0, actions.getNodeRelationships( nodeId, RelationshipDirection.out, - Collections.emptyList() ) ); + Collections.emptyList() ) ); } } @@ -1036,7 +1036,7 @@ public void shouldBeAbleToGetShortestPaths() throws Exception nodes[1], MapUtil.map( "max_depth", 2, "algorithm", "shortestPath", "relationships", MapUtil.map( "type", "to", "direction", "out" ) ) ) ); - assertPaths( 1, nodes, 2, Arrays.asList( path ) ); + assertPaths( 1, nodes, 2, Arrays.asList( path ) ); // /path {single: false} (has no effect) path = serialize( actions.findSinglePath( @@ -1044,7 +1044,7 @@ public void shouldBeAbleToGetShortestPaths() throws Exception nodes[1], MapUtil.map( "max_depth", 2, "algorithm", "shortestPath", "relationships", MapUtil.map( "type", "to", "direction", "out" ), "single", false ) ) ); - assertPaths( 1, nodes, 2, Arrays.asList( path ) ); + assertPaths( 1, nodes, 2, Arrays.asList( path ) ); } } @@ -1068,7 +1068,7 @@ public void shouldBeAbleToGetPathsUsingDijkstra() throws Exception nodes[1], map( "algorithm", "dijkstra", "cost_property", "cost", "relationships", map( "type", "to", "direction", "out" ) ) ) ); - assertPaths( 1, nodes, 6, Arrays.asList( path ) ); + assertPaths( 1, nodes, 6, Arrays.asList( path ) ); assertEquals( 6.0d, path.get( "weight" ) ); } } @@ -1094,7 +1094,7 @@ public void shouldBeAbleToGetPathsUsingDijkstraWithDefaults() throws Exception nodes[1], map( "algorithm", "dijkstra", "cost_property", "cost", "default_cost", 1, "relationships", map( "type", "to", "direction", "out" ) ) ) ); - assertPaths( 1, nodes, 6, Arrays.asList( path ) ); + assertPaths( 1, nodes, 6, Arrays.asList( path ) ); assertEquals( 6.0d, path.get( "weight" ) ); } } diff --git a/community/server/src/test/java/org/neo4j/server/rest/web/PagingTraversalTest.java b/community/server/src/test/java/org/neo4j/server/rest/web/PagingTraversalTest.java index 7ea644c2313f1..526273a3db423 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/web/PagingTraversalTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/web/PagingTraversalTest.java @@ -30,7 +30,6 @@ import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.Transaction; -import org.neo4j.helpers.FakeClock; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.server.database.Database; @@ -41,6 +40,7 @@ import org.neo4j.server.rest.repr.formats.JsonFormat; import org.neo4j.test.TestGraphDatabaseFactory; import org.neo4j.test.server.EntityOutputFormat; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabasePagedTraversalTest.java b/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabasePagedTraversalTest.java index b1115d1d16c3a..5dddeddb30c29 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabasePagedTraversalTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabasePagedTraversalTest.java @@ -30,7 +30,6 @@ import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.Transaction; -import org.neo4j.helpers.FakeClock; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.server.database.Database; @@ -41,6 +40,7 @@ import org.neo4j.server.rest.repr.formats.JsonFormat; import org.neo4j.test.TestGraphDatabaseFactory; import org.neo4j.test.server.EntityOutputFormat; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java b/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java index 8fdde2aa721ed..94ac9412ee04b 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java @@ -42,7 +42,6 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.index.IndexHits; -import org.neo4j.helpers.FakeClock; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.api.exceptions.Status.Request; import org.neo4j.kernel.api.exceptions.Status.Schema; @@ -66,6 +65,7 @@ import org.neo4j.string.UTF8; import org.neo4j.test.TestGraphDatabaseFactory; import org.neo4j.test.server.EntityOutputFormat; +import org.neo4j.time.FakeClock; import static java.lang.Long.parseLong; import static java.util.Collections.emptyMap; diff --git a/enterprise/backup/src/main/java/org/neo4j/backup/BackupServer.java b/enterprise/backup/src/main/java/org/neo4j/backup/BackupServer.java index 92c6cc4025405..d7411248024ff 100644 --- a/enterprise/backup/src/main/java/org/neo4j/backup/BackupServer.java +++ b/enterprise/backup/src/main/java/org/neo4j/backup/BackupServer.java @@ -22,6 +22,8 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; +import java.time.Clock; + import org.neo4j.backup.BackupClient.BackupRequestType; import org.neo4j.com.ChunkingChannelBuffer; import org.neo4j.com.Client; @@ -36,8 +38,6 @@ import org.neo4j.kernel.monitoring.ByteCounterMonitor; import org.neo4j.logging.LogProvider; -import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; - class BackupServer extends Server { private static final long DEFAULT_OLD_CHANNEL_THRESHOLD = Client.DEFAULT_READ_RESPONSE_TIMEOUT_SECONDS * 1000; @@ -54,7 +54,7 @@ public BackupServer( TheBackupInterface requestTarget, final HostnamePort server { super( requestTarget, newBackupConfig( FRAME_LENGTH, server ), logProvider, FRAME_LENGTH, new ProtocolVersion( PROTOCOL_VERSION, ProtocolVersion.INTERNAL_PROTOCOL_VERSION ), - TxChecksumVerifier.ALWAYS_MATCH, SYSTEM_CLOCK, byteCounterMonitor, requestMonitor ); + TxChecksumVerifier.ALWAYS_MATCH, Clock.systemUTC(), byteCounterMonitor, requestMonitor ); } @Override diff --git a/enterprise/com/src/main/java/org/neo4j/com/Client.java b/enterprise/com/src/main/java/org/neo4j/com/Client.java index e5554b27711d5..0c2c6141c87a0 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/Client.java +++ b/enterprise/com/src/main/java/org/neo4j/com/Client.java @@ -19,14 +19,6 @@ */ package org.neo4j.com; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.net.UnknownHostException; -import java.nio.ByteBuffer; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.TimeUnit; - import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; @@ -39,6 +31,15 @@ import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; import org.jboss.netty.handler.queue.BlockingReadHandler; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.time.Clock; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.TimeUnit; + import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.com.storecopy.ResponseUnpacker; import org.neo4j.com.storecopy.ResponseUnpacker.TxHandler; @@ -53,12 +54,10 @@ import org.neo4j.logging.LogProvider; import static java.util.concurrent.Executors.newCachedThreadPool; - import static org.neo4j.com.Protocol.addLengthFieldPipes; import static org.neo4j.com.Protocol.assertChunkSizeIsWithinFrameSize; import static org.neo4j.com.ResourcePool.DEFAULT_CHECK_INTERVAL; import static org.neo4j.com.storecopy.ResponseUnpacker.NO_OP_TX_HANDLER; -import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; import static org.neo4j.helpers.NamedThreadFactory.daemon; /** @@ -197,7 +196,7 @@ public void start() bootstrap.setPipelineFactory( this ); channelPool = new ResourcePool( maxUnusedChannels, - new ResourcePool.CheckStrategy.TimeoutCheckStrategy( DEFAULT_CHECK_INTERVAL, SYSTEM_CLOCK ), + new ResourcePool.CheckStrategy.TimeoutCheckStrategy( DEFAULT_CHECK_INTERVAL, Clock.systemUTC() ), new LoggingResourcePoolMonitor( msgLog ) ) { @Override diff --git a/enterprise/com/src/main/java/org/neo4j/com/ResourcePool.java b/enterprise/com/src/main/java/org/neo4j/com/ResourcePool.java index 79c862b7c8589..5b88404b7a405 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/ResourcePool.java +++ b/enterprise/com/src/main/java/org/neo4j/com/ResourcePool.java @@ -19,15 +19,12 @@ */ package org.neo4j.com; +import java.time.Clock; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.neo4j.helpers.Clock; - -import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; - public abstract class ResourcePool { public interface Monitor @@ -84,14 +81,14 @@ class TimeoutCheckStrategy implements CheckStrategy public TimeoutCheckStrategy( long interval, Clock clock ) { this.interval = interval; - this.lastCheckTime = clock.currentTimeMillis(); + this.lastCheckTime = clock.millis(); this.clock = clock; } @Override public boolean shouldCheck() { - long currentTime = clock.currentTimeMillis(); + long currentTime = clock.millis(); if ( currentTime > lastCheckTime + interval ) { lastCheckTime = currentTime; @@ -116,8 +113,8 @@ public boolean shouldCheck() protected ResourcePool( int minSize ) { - this( minSize, new CheckStrategy.TimeoutCheckStrategy( DEFAULT_CHECK_INTERVAL, SYSTEM_CLOCK ), - new Monitor.Adapter() ); + this( minSize, new CheckStrategy.TimeoutCheckStrategy( DEFAULT_CHECK_INTERVAL, Clock.systemUTC() ), + new Monitor.Adapter<>() ); } protected ResourcePool( int minSize, CheckStrategy strategy, Monitor monitor ) diff --git a/enterprise/com/src/test/java/org/neo4j/com/ResourcePoolTest.java b/enterprise/com/src/test/java/org/neo4j/com/ResourcePoolTest.java index 1019ecb3e3087..a37ee83185893 100644 --- a/enterprise/com/src/test/java/org/neo4j/com/ResourcePoolTest.java +++ b/enterprise/com/src/test/java/org/neo4j/com/ResourcePoolTest.java @@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; -import org.neo4j.helpers.FakeClock; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.junit.Assert.assertEquals; @@ -82,7 +82,7 @@ public void shouldTimeoutGracefully() throws InterruptedException ResourcePool.CheckStrategy timeStrategy = new ResourcePool.CheckStrategy.TimeoutCheckStrategy( TIMEOUT_MILLIS, clock ); - while ( clock.currentTimeMillis() <= TIMEOUT_MILLIS ) + while ( clock.millis() <= TIMEOUT_MILLIS ) { assertFalse( timeStrategy.shouldCheck() ); clock.forward( 10, TimeUnit.MILLISECONDS ); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java index 787be574f4e00..5e57238f62125 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java @@ -19,13 +19,13 @@ */ package org.neo4j.kernel.ha.com.master; +import java.time.Clock; import java.util.Collections; import java.util.Set; import java.util.function.Consumer; import org.neo4j.com.RequestContext; import org.neo4j.function.Factory; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.ha.HaSettings; import org.neo4j.kernel.ha.cluster.ConversationSPI; @@ -127,7 +127,7 @@ public void end( RequestContext context ) public Set getActiveContexts() { - return conversations != null ? conversations.keys() : Collections.emptySet() ; + return conversations != null ? conversations.keys() : Collections.emptySet() ; } /** @@ -153,7 +153,7 @@ public Conversation acquire() protected TimedRepository createConversationStore() { return new TimedRepository<>( getConversationFactory(), getConversationReaper(), - config.get( HaSettings.lock_read_timeout ) + lockTimeoutAddition, Clock.SYSTEM_CLOCK ); + config.get( HaSettings.lock_read_timeout ) + lockTimeoutAddition, Clock.systemUTC() ); } protected Consumer getConversationReaper() diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java index a4b2e84223ca6..3d35a33c7535c 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java @@ -19,6 +19,8 @@ */ package org.neo4j.kernel.ha.com.master; +import java.time.Clock; + import org.neo4j.com.Protocol; import org.neo4j.com.RequestContext; import org.neo4j.com.RequestType; @@ -32,8 +34,6 @@ import org.neo4j.kernel.monitoring.ByteCounterMonitor; import org.neo4j.logging.LogProvider; -import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; - /** * Sits on the master side, receiving serialized requests from slaves (via * {@link org.neo4j.kernel.ha.com.slave.MasterClient}). Delegates actual work to {@link MasterImpl}. @@ -50,7 +50,7 @@ public MasterServer( Master requestTarget, LogProvider logProvider, Configuratio LogEntryReader entryReader ) { super( requestTarget, config, logProvider, FRAME_LENGTH, MasterClient214.PROTOCOL_VERSION, txVerifier, - SYSTEM_CLOCK, byteCounterMonitor, requestMonitor ); + Clock.systemUTC(), byteCounterMonitor, requestMonitor ); this.conversationManager = conversationManager; this.requestTypes = new HaRequestType210( entryReader ); } diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/SlaveServer.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/SlaveServer.java index 9ce3b4fee5684..1a4f43448271a 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/SlaveServer.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/SlaveServer.java @@ -19,6 +19,8 @@ */ package org.neo4j.kernel.ha.com.slave; +import java.time.Clock; + import org.neo4j.com.ProtocolVersion; import org.neo4j.com.RequestContext; import org.neo4j.com.RequestType; @@ -26,12 +28,11 @@ import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.kernel.ha.com.master.Slave; import org.neo4j.kernel.ha.com.master.SlaveClient.SlaveRequestType; -import org.neo4j.logging.LogProvider; import org.neo4j.kernel.monitoring.ByteCounterMonitor; +import org.neo4j.logging.LogProvider; import static org.neo4j.com.Protocol.DEFAULT_FRAME_LENGTH; import static org.neo4j.com.TxChecksumVerifier.ALWAYS_MATCH; -import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; public class SlaveServer extends Server { @@ -41,7 +42,7 @@ public SlaveServer( Slave requestTarget, Configuration config, LogProvider logPr { super( requestTarget, config, logProvider, DEFAULT_FRAME_LENGTH, new ProtocolVersion( APPLICATION_PROTOCOL_VERSION, ProtocolVersion.INTERNAL_PROTOCOL_VERSION ), - ALWAYS_MATCH, SYSTEM_CLOCK, byteCounterMonitor, requestMonitor ); + ALWAYS_MATCH, Clock.systemUTC(), byteCounterMonitor, requestMonitor ); } @Override diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/TransactionPropagator.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/TransactionPropagator.java index b2868d49d87a7..aeaa5c388fc0e 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/TransactionPropagator.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/transaction/TransactionPropagator.java @@ -19,6 +19,7 @@ */ package org.neo4j.kernel.ha.transaction; +import java.time.Clock; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -34,7 +35,6 @@ import org.neo4j.cluster.ClusterSettings; import org.neo4j.cluster.InstanceId; import org.neo4j.com.ComException; -import org.neo4j.helpers.Clock; import org.neo4j.helpers.NamedThreadFactory; import org.neo4j.helpers.collection.FilteringIterator; import org.neo4j.kernel.configuration.Config; @@ -157,8 +157,8 @@ public TransactionPropagator( Configuration config, Log log, Slaves slaves, Comm this.log = log; this.slaves = slaves; this.pusher = pusher; - slaveCommitFailureLogger = new CappedLogger( log ).setTimeLimit( 5, TimeUnit.SECONDS, Clock.SYSTEM_CLOCK ); - pushedToTooFewSlaveLogger = new CappedLogger( log ).setTimeLimit( 5, TimeUnit.SECONDS, Clock.SYSTEM_CLOCK ); + slaveCommitFailureLogger = new CappedLogger( log ).setTimeLimit( 5, TimeUnit.SECONDS, Clock.systemUTC() ); + pushedToTooFewSlaveLogger = new CappedLogger( log ).setTimeLimit( 5, TimeUnit.SECONDS, Clock.systemUTC() ); } @Override diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterImplConversationStopFuzzIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterImplConversationStopFuzzIT.java index 379ed54123559..2e5bd82f03454 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterImplConversationStopFuzzIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterImplConversationStopFuzzIT.java @@ -25,6 +25,7 @@ import java.io.IOException; import java.io.StringWriter; +import java.time.Clock; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -42,7 +43,6 @@ import org.neo4j.com.TransactionNotPresentOnMasterException; import org.neo4j.com.TransactionObligationResponse; import org.neo4j.com.storecopy.StoreWriter; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.ha.cluster.ConversationSPI; @@ -485,7 +485,7 @@ public ExposedConversationManager( ConversationSPI spi, Config config, int activ protected TimedRepository createConversationStore() { conversationStore = new TimedRepository<>( getConversationFactory(), getConversationReaper(), - 1, Clock.SYSTEM_CLOCK ); + 1, Clock.systemUTC() ); return conversationStore; } } diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLockManagerTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLockManagerTest.java index a9054c6bb39e8..853bca8f884c3 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLockManagerTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLockManagerTest.java @@ -22,7 +22,8 @@ import org.junit.Before; import org.junit.Test; -import org.neo4j.helpers.Clock; +import java.time.Clock; + import org.neo4j.kernel.AvailabilityGuard; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.ha.com.RequestContextFactory; @@ -52,7 +53,7 @@ public void setUp() { requestContextFactory = new RequestContextFactory( 1, singleton( mock( TransactionIdStore.class ) ) ); master = mock( Master.class ); - availabilityGuard = new AvailabilityGuard( Clock.SYSTEM_CLOCK, NullLog.getInstance() ); + availabilityGuard = new AvailabilityGuard( Clock.systemUTC(), NullLog.getInstance() ); } @Test diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java index 8796067734a58..7d82fab96e230 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java @@ -28,6 +28,7 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; +import java.time.Clock; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -35,7 +36,6 @@ import org.neo4j.com.RequestContext; import org.neo4j.com.Response; -import org.neo4j.helpers.Clock; import org.neo4j.kernel.AvailabilityGuard; import org.neo4j.kernel.ha.com.RequestContextFactory; import org.neo4j.kernel.ha.com.master.Master; @@ -78,7 +78,7 @@ public void setUp() master = mock( Master.class, new LockedOnMasterAnswer() ); lockManager = new ForsetiLockManager( ResourceTypes.values() ); requestContextFactory = mock( RequestContextFactory.class ); - availabilityGuard = new AvailabilityGuard( Clock.SYSTEM_CLOCK, mock( Log.class ) ); + availabilityGuard = new AvailabilityGuard( Clock.systemUTC(), mock( Log.class ) ); when( requestContextFactory.newRequestContext( Mockito.anyInt() ) ) .thenReturn( RequestContext.anonymous( 1 ) ); diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java index da388d1622697..54262a419f4f0 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java @@ -34,7 +34,6 @@ import org.neo4j.com.TransactionStream; import org.neo4j.com.TransactionStreamResponse; import org.neo4j.graphdb.TransientFailureException; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.AvailabilityGuard; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.TransactionFailureException; @@ -47,6 +46,7 @@ import org.neo4j.logging.AssertableLogProvider; import org.neo4j.logging.NullLog; import org.neo4j.storageengine.api.lock.ResourceType; +import org.neo4j.time.FakeClock; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.instanceOf; diff --git a/enterprise/query-logging/src/main/java/org/neo4j/kernel/impl/query/QueryLoggerKernelExtension.java b/enterprise/query-logging/src/main/java/org/neo4j/kernel/impl/query/QueryLoggerKernelExtension.java index 1773bb94d95b6..64336b117e2b3 100644 --- a/enterprise/query-logging/src/main/java/org/neo4j/kernel/impl/query/QueryLoggerKernelExtension.java +++ b/enterprise/query-logging/src/main/java/org/neo4j/kernel/impl/query/QueryLoggerKernelExtension.java @@ -22,10 +22,10 @@ import java.io.Closeable; import java.io.File; import java.io.OutputStream; +import java.time.Clock; import java.util.Map; import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.helpers.Clock; import org.neo4j.helpers.Service; import org.neo4j.helpers.Strings; import org.neo4j.io.fs.FileSystemAbstraction; @@ -111,7 +111,7 @@ public void init() throws Throwable closable = rotatingSupplier; } - QueryLogger logger = new QueryLogger( Clock.SYSTEM_CLOCK, log, thresholdMillis, logQueryParameters ); + QueryLogger logger = new QueryLogger( Clock.systemUTC(), log, thresholdMillis, logQueryParameters ); monitoring.addMonitorListener( logger ); } @@ -150,7 +150,7 @@ public QueryLogger( Clock clock, Log log, long thresholdMillis, boolean logQuery @Override public void startQueryExecution( QuerySession session, String query, Map parameters ) { - long startTime = clock.currentTimeMillis(); + long startTime = clock.millis(); Object oldTime = session.put( START_TIME, startTime ); Object oldQuery = session.put( QUERY_STRING, query ); if ( logQueryParameters ) @@ -171,7 +171,7 @@ public void endFailure( QuerySession session, Throwable failure ) Long startTime = session.remove( START_TIME ); if ( startTime != null ) { - long time = clock.currentTimeMillis() - startTime; + long time = clock.millis() - startTime; logFailure( time, session, query, failure ); } } @@ -183,7 +183,7 @@ public void endSuccess( QuerySession session ) Long startTime = session.remove( START_TIME ); if ( startTime != null ) { - long time = clock.currentTimeMillis() - startTime; + long time = clock.millis() - startTime; if ( time >= thresholdMillis ) { logSuccess( time, session, query ); diff --git a/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerTest.java b/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerTest.java index fec920d1204c8..7a3b756188726 100644 --- a/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerTest.java +++ b/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerTest.java @@ -21,17 +21,17 @@ import org.junit.Test; +import java.time.Clock; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; -import org.neo4j.helpers.Clock; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.impl.query.QueryLoggerKernelExtension.QueryLogger; import org.neo4j.logging.AssertableLogProvider; import org.neo4j.logging.LogProvider; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.sameInstance; import static org.hamcrest.core.Is.is; diff --git a/enterprise/server-enterprise/src/test/java/org/neo4j/server/rest/EnterpriseVersionAndEditionServiceIT.java b/enterprise/server-enterprise/src/test/java/org/neo4j/server/rest/EnterpriseVersionAndEditionServiceIT.java index a16e9b57e2985..cbc8f2db83c05 100644 --- a/enterprise/server-enterprise/src/test/java/org/neo4j/server/rest/EnterpriseVersionAndEditionServiceIT.java +++ b/enterprise/server-enterprise/src/test/java/org/neo4j/server/rest/EnterpriseVersionAndEditionServiceIT.java @@ -28,7 +28,6 @@ import java.util.concurrent.Callable; -import org.neo4j.helpers.FakeClock; import org.neo4j.kernel.internal.KernelData; import org.neo4j.server.NeoServer; import org.neo4j.server.enterprise.helpers.EnterpriseServerBuilder; @@ -36,6 +35,7 @@ import org.neo4j.server.rest.management.VersionAndEditionService; import org.neo4j.test.server.ExclusiveServerTestBase; import org.neo4j.test.server.HTTP; +import org.neo4j.time.FakeClock; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertEquals;