From 491603c1a32fb522f03875bc2b2e315dfa73a33f Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Sun, 16 Mar 2025 10:40:07 +0800 Subject: [PATCH 01/14] HDDS-12060. Replace System.currentTimeMillis() with Time.monotonicNow() for duration calculation --- .../org/apache/hadoop/hdds/scm/XceiverClientGrpc.java | 5 +++-- .../org/apache/hadoop/hdds/scm/XceiverClientRatis.java | 5 +++-- .../apache/hadoop/ozone/util/ShutdownHookManager.java | 5 +++-- .../ozone/container/common/utils/HddsVolumeUtil.java | 5 +++-- .../hadoop/ozone/container/ozoneimpl/OzoneContainer.java | 5 +++-- .../ozone/container/keyvalue/TestKeyValueHandler.java | 3 ++- .../ozone/container/ozoneimpl/TestContainerReader.java | 5 +++-- .../replication/ReplicationSupervisorScheduling.java | 5 +++-- .../apache/hadoop/hdds/server/events/EventWatcher.java | 5 +++-- .../apache/hadoop/hdds/utils/ProtocolMessageMetrics.java | 5 +++-- .../java/org/apache/hadoop/hdds/utils/db/RDBTable.java | 5 +++-- .../hadoop/ozone/upgrade/BasicUpgradeFinalizer.java | 5 +++-- .../ozone/rocksdiff/TestRocksDBCheckpointDiffer.java | 5 +++-- .../hadoop/hdds/scm/node/NodeDecommissionManager.java | 3 ++- .../java/org/apache/hadoop/hdds/scm/node/NodeStatus.java | 3 ++- .../hdds/scm/node/TestNodeDecommissionManager.java | 3 ++- .../apache/hadoop/hdds/scm/node/TestSCMNodeManager.java | 2 +- .../test/java/org/apache/ozone/test/LambdaTestUtils.java | 5 +++-- .../hadoop/hdds/scm/cli/SafeModeWaitSubcommand.java | 5 +++-- .../hdds/scm/cli/container/upgrade/UpgradeManager.java | 7 ++++--- .../hdds/scm/cli/container/upgrade/UpgradeTask.java | 3 ++- .../lib/service/hadoop/FileSystemAccessService.java | 5 +++-- .../org/apache/hadoop/fs/contract/ContractTestUtils.java | 5 +++-- .../hdds/scm/node/TestDecommissionAndMaintenance.java | 5 +++-- .../statemachine/commandhandler/TestBlockDeletion.java | 5 +++-- .../hadoop/ozone/freon/TestOmBucketReadWriteKeyOps.java | 5 +++-- .../ozone/om/ratis_snapshot/OmRatisSnapshotProvider.java | 7 ++++--- .../ozone/om/request/upgrade/OMPrepareRequest.java | 5 +++-- .../apache/hadoop/ozone/om/service/QuotaRepairTask.java | 5 +++-- .../java/org/apache/hadoop/ozone/recon/ReconUtils.java | 5 +++-- .../hadoop/ozone/recon/fsck/ContainerHealthTask.java | 4 ++-- .../ozone/recon/tasks/ContainerKeyMapperHelper.java | 5 +++-- .../ozone/recon/tasks/FileSizeCountTaskHelper.java | 9 +++++---- .../hadoop/ozone/recon/tasks/OmTableInsightTask.java | 5 +++-- .../ozone/s3/endpoint/TestMultipartUploadWithCopy.java | 3 ++- .../apache/hadoop/ozone/admin/om/PrepareSubCommand.java | 5 +++-- .../apache/hadoop/ozone/freon/BaseFreonGenerator.java | 7 ++++--- 37 files changed, 107 insertions(+), 72 deletions(-) diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java index 014a8fd47efd..07ba40da3e41 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java @@ -60,6 +60,7 @@ import org.apache.hadoop.ozone.ClientVersion; import org.apache.hadoop.ozone.OzoneConfigKeys; import org.apache.hadoop.ozone.OzoneConsts; +import org.apache.hadoop.util.Time; import org.apache.ratis.thirdparty.io.grpc.ManagedChannel; import org.apache.ratis.thirdparty.io.grpc.Status; import org.apache.ratis.thirdparty.io.grpc.netty.GrpcSslContexts; @@ -571,7 +572,7 @@ public XceiverClientReply sendCommandAsync( final CompletableFuture replyFuture = new CompletableFuture<>(); semaphore.acquire(); - long requestTime = System.currentTimeMillis(); + long requestTime = Time.monotonicNow(); metrics.incrPendingContainerOpsMetrics(request.getCmdType()); // create a new grpc message stream pair for each call. @@ -601,7 +602,7 @@ public void onCompleted() { private void decreasePendingMetricsAndReleaseSemaphore() { metrics.decrPendingContainerOpsMetrics(request.getCmdType()); - long cost = System.currentTimeMillis() - requestTime; + long cost = Time.monotonicNow() - requestTime; metrics.addContainerOpsLatency(request.getCmdType(), cost); if (LOG.isDebugEnabled()) { LOG.debug("Executed command {} on datanode {}, cost = {}, cmdType = {}", diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientRatis.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientRatis.java index 03289e8cacd7..0434d6ac52d7 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientRatis.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientRatis.java @@ -47,6 +47,7 @@ import org.apache.hadoop.hdds.scm.pipeline.Pipeline; import org.apache.hadoop.hdds.security.SecurityConfig; import org.apache.hadoop.hdds.tracing.TracingUtil; +import org.apache.hadoop.util.Time; import org.apache.ratis.client.RaftClient; import org.apache.ratis.client.api.DataStreamApi; import org.apache.ratis.grpc.GrpcTlsConfig; @@ -363,7 +364,7 @@ private XceiverClientReply handleFailedAllCommit(long index, Collection raftClientReply = sendRequestAsync(request); metrics.incrPendingContainerOpsMetrics(request.getCmdType()); @@ -376,7 +377,7 @@ public XceiverClientReply sendCommandAsync( } metrics.decrPendingContainerOpsMetrics(request.getCmdType()); metrics.addContainerOpsLatency(request.getCmdType(), - System.currentTimeMillis() - requestTime); + Time.monotonicNow() - requestTime); }).thenApply(reply -> { try { if (!reply.isSuccess()) { diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/util/ShutdownHookManager.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/util/ShutdownHookManager.java index e533b23fd54b..1ce378c62e12 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/util/ShutdownHookManager.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/util/ShutdownHookManager.java @@ -39,6 +39,7 @@ import org.apache.hadoop.hdds.annotation.InterfaceStability; import org.apache.hadoop.hdds.conf.ConfigurationSource; import org.apache.hadoop.hdds.conf.OzoneConfiguration; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -95,9 +96,9 @@ public void run() { LOG.info("Shutdown process invoked a second time: ignoring"); return; } - long started = System.currentTimeMillis(); + long started = Time.monotonicNow(); int timeoutCount = MGR.executeShutdown(); - long ended = System.currentTimeMillis(); + long ended = Time.monotonicNow(); LOG.debug(String.format( "Completed shutdown in %.3f seconds; Timeouts: %d", (ended - started) / 1000.0, timeoutCount)); diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/HddsVolumeUtil.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/HddsVolumeUtil.java index 6b4ca22ceb00..6ea9e87541eb 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/HddsVolumeUtil.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/utils/HddsVolumeUtil.java @@ -33,6 +33,7 @@ import org.apache.hadoop.ozone.container.common.volume.MutableVolumeSet; import org.apache.hadoop.ozone.container.keyvalue.helpers.BlockUtils; import org.apache.hadoop.ozone.container.metadata.DatanodeStore; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; /** @@ -89,7 +90,7 @@ public static void loadAllHddsVolumeDbStore(MutableVolumeSet hddsVolumeSet, List> futures = new ArrayList<>(); List hddsVolumes = StorageVolumeUtil.getHddsVolumesList( hddsVolumeSet.getVolumesList()); - long start = System.currentTimeMillis(); + long start = Time.monotonicNow(); for (HddsVolume volume : hddsVolumes) { futures.add(CompletableFuture.runAsync( () -> loadVolume(volume, readOnly, logger))); @@ -99,7 +100,7 @@ public static void loadAllHddsVolumeDbStore(MutableVolumeSet hddsVolumeSet, } if (logger != null) { logger.info("Load {} volumes DbStore cost: {}ms", hddsVolumes.size(), - System.currentTimeMillis() - start); + Time.monotonicNow() - start); } } diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java index b3fa5133823e..8d5c3aa8fa93 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java @@ -94,6 +94,7 @@ import org.apache.hadoop.ozone.container.replication.ReplicationServer.ReplicationConfig; import org.apache.hadoop.ozone.container.upgrade.VersionedDatanodeFeatures.SchemaV3; import org.apache.hadoop.util.DiskChecker.DiskOutOfSpaceException; +import org.apache.hadoop.util.Time; import org.apache.hadoop.util.Timer; import org.apache.ratis.grpc.GrpcTlsConfig; import org.slf4j.Logger; @@ -314,7 +315,7 @@ public void buildContainerSet() throws IOException { Iterator volumeSetIterator = volumeSet.getVolumesList() .iterator(); ArrayList volumeThreads = new ArrayList<>(); - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); // Load container inspectors that may be triggered at startup based on // system properties set. These can inspect and possibly repair @@ -356,7 +357,7 @@ public void buildContainerSet() throws IOException { ContainerInspectorUtil.unload(); LOG.info("Build ContainerSet costs {}s", - (System.currentTimeMillis() - startTime) / 1000); + (Time.monotonicNow() - startTime) / 1000); } /** diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java index f55a515a5b72..d36891f7008a 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java @@ -70,6 +70,7 @@ import org.apache.hadoop.ozone.container.common.volume.MutableVolumeSet; import org.apache.hadoop.ozone.container.common.volume.StorageVolume; import org.apache.hadoop.ozone.container.common.volume.VolumeSet; +import org.apache.hadoop.util.Time; import org.apache.ozone.test.GenericTestUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -465,7 +466,7 @@ public void testDeleteContainerTimeout() throws IOException { final ContainerSet containerSet = newContainerSet(); final MutableVolumeSet volumeSet = mock(MutableVolumeSet.class); final Clock clock = mock(Clock.class); - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); DatanodeConfiguration dnConf = conf.getObject(DatanodeConfiguration.class); when(clock.millis()) diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java index e315ced9f48d..23b870a3bfbc 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java @@ -68,6 +68,7 @@ import org.apache.hadoop.ozone.container.keyvalue.KeyValueContainerData; import org.apache.hadoop.ozone.container.keyvalue.helpers.BlockUtils; import org.apache.hadoop.ozone.container.metadata.DatanodeStoreSchemaThreeImpl; +import org.apache.hadoop.util.Time; import org.apache.ozone.test.GenericTestUtils; import org.apache.ratis.util.FileUtils; import org.junit.jupiter.api.AfterEach; @@ -446,7 +447,7 @@ public void testMultipleContainerReader(ContainerTestVersionInfo versionInfo) (HddsVolume) volumes.get(i), containerSet, conf, true); threads[i] = new Thread(containerReaders[i]); } - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); for (int i = 0; i < volumeNum; i++) { threads[i].start(); } @@ -454,7 +455,7 @@ public void testMultipleContainerReader(ContainerTestVersionInfo versionInfo) threads[i].join(); } System.out.println("Open " + volumeNum + " Volume with " + containerCount + - " costs " + (System.currentTimeMillis() - startTime) / 1000 + "s"); + " costs " + (Time.monotonicNow() - startTime) / 1000 + "s"); assertEquals(containerCount, containerSet.getContainerMap().entrySet().size()); assertEquals(volumeSet.getFailedVolumesList().size(), 0); diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/ReplicationSupervisorScheduling.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/ReplicationSupervisorScheduling.java index f2e6ba87cdd1..88620156a543 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/ReplicationSupervisorScheduling.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/ReplicationSupervisorScheduling.java @@ -28,6 +28,7 @@ import java.util.UUID; import org.apache.hadoop.hdds.protocol.DatanodeDetails; import org.apache.hadoop.hdds.protocol.MockDatanodeDetails; +import org.apache.hadoop.util.Time; import org.junit.jupiter.api.Test; /** @@ -104,7 +105,7 @@ public void test() throws InterruptedException { ReplicationSupervisor rs = ReplicationSupervisor.newBuilder().build(); - final long start = System.currentTimeMillis(); + final long start = Time.monotonicNow(); //schedule 100 container replication for (int i = 0; i < 100; i++) { @@ -114,7 +115,7 @@ public void test() throws InterruptedException { rs.addTask(new ReplicationTask(fromSources(i, sources), replicator)); } rs.shutdownAfterFinish(); - final long executionTime = System.currentTimeMillis() - start; + final long executionTime = Time.monotonicNow() - start; System.out.println(executionTime); assertThat(executionTime) .withFailMessage("Execution was too slow : " + executionTime + " ms") diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/events/EventWatcher.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/events/EventWatcher.java index 2b3e13e3540d..6f48181dccea 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/events/EventWatcher.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/events/EventWatcher.java @@ -33,6 +33,7 @@ import org.apache.hadoop.ozone.lease.LeaseExpiredException; import org.apache.hadoop.ozone.lease.LeaseManager; import org.apache.hadoop.ozone.lease.LeaseNotFoundException; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -116,7 +117,7 @@ private synchronized void handleStartEvent(TIMEOUT_PAYLOAD payload, EventPublisher publisher) { metrics.incrementTrackedEvents(); long identifier = payload.getId(); - startTrackingTimes.put(identifier, System.currentTimeMillis()); + startTrackingTimes.put(identifier, Time.monotonicNow()); trackedEventsByID.put(identifier, payload); trackedEvents.add(payload); @@ -139,7 +140,7 @@ protected synchronized void handleCompletion(COMPLETION_PAYLOAD if (trackedEvents.remove(payload)) { metrics.incrementCompletedEvents(); long originalTime = startTrackingTimes.remove(id); - metrics.updateFinishingTime(System.currentTimeMillis() - originalTime); + metrics.updateFinishingTime(Time.monotonicNow() - originalTime); onFinished(publisher, payload); } } diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java index f772ea8c921b..09e154f9aab6 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java @@ -28,6 +28,7 @@ import org.apache.hadoop.metrics2.MetricsTag; import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; import org.apache.hadoop.metrics2.lib.Interns; +import org.apache.hadoop.util.Time; import org.apache.ratis.util.UncheckedAutoCloseable; /** @@ -68,12 +69,12 @@ public void increment(KEY key, long duration) { } public UncheckedAutoCloseable measure(KEY key) { - final long startTime = System.currentTimeMillis(); + final long startTime = Time.monotonicNow(); concurrency.incrementAndGet(); return () -> { concurrency.decrementAndGet(); counters.get(key).incrementAndGet(); - elapsedTimes.get(key).addAndGet(System.currentTimeMillis() - startTime); + elapsedTimes.get(key).addAndGet(Time.monotonicNow() - startTime); }; } diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java index 5c5247e011a5..9ce8e03f69a4 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java @@ -27,6 +27,7 @@ import org.apache.hadoop.hdds.annotation.InterfaceAudience; import org.apache.hadoop.hdds.utils.MetadataKeyFilters; import org.apache.hadoop.hdds.utils.db.RocksDatabase.ColumnFamily; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -297,7 +298,7 @@ private List> getRangeKVs(byte[] startKey, int count, boolean sequential, byte[] prefix, MetadataKeyFilters.MetadataKeyFilter... filters) throws IOException, IllegalArgumentException { - long start = System.currentTimeMillis(); + long start = Time.monotonicNow(); if (count < 0) { throw new IllegalArgumentException( @@ -342,7 +343,7 @@ && get(startKey) == null) { } } } finally { - long end = System.currentTimeMillis(); + long end = Time.monotonicNow(); long timeConsumed = end - start; if (LOG.isDebugEnabled()) { if (filters != null) { diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java index 504bda74575a..627210ca9de0 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java @@ -50,6 +50,7 @@ import org.apache.hadoop.ozone.upgrade.UpgradeException.ResultCodes; import org.apache.hadoop.ozone.upgrade.UpgradeFinalization.Status; import org.apache.hadoop.ozone.upgrade.UpgradeFinalization.StatusAndMessages; +import org.apache.hadoop.util.Time; import org.apache.ratis.protocol.exceptions.NotLeaderException; /** @@ -169,9 +170,9 @@ public void finalizeAndWaitForCompletion( } boolean success = false; - long endTime = System.currentTimeMillis() + + long endTime = Time.monotonicNow() + TimeUnit.SECONDS.toMillis(maxTimeToWaitInSeconds); - while (System.currentTimeMillis() < endTime) { + while (Time.monotonicNow() < endTime) { try { response = reportStatus(upgradeClientID, false); LOG.info("Finalization Messages : {} ", response.msgs()); diff --git a/hadoop-hdds/rocksdb-checkpoint-differ/src/test/java/org/apache/ozone/rocksdiff/TestRocksDBCheckpointDiffer.java b/hadoop-hdds/rocksdb-checkpoint-differ/src/test/java/org/apache/ozone/rocksdiff/TestRocksDBCheckpointDiffer.java index a1a57ec4189e..cbc7cc524123 100644 --- a/hadoop-hdds/rocksdb-checkpoint-differ/src/test/java/org/apache/ozone/rocksdiff/TestRocksDBCheckpointDiffer.java +++ b/hadoop-hdds/rocksdb-checkpoint-differ/src/test/java/org/apache/ozone/rocksdiff/TestRocksDBCheckpointDiffer.java @@ -89,6 +89,7 @@ import org.apache.hadoop.hdds.utils.db.managed.ManagedRocksIterator; import org.apache.hadoop.hdds.utils.db.managed.ManagedSstFileReader; import org.apache.hadoop.ozone.lock.BootstrapStateHandler; +import org.apache.hadoop.util.Time; import org.apache.ozone.compaction.log.CompactionFileInfo; import org.apache.ozone.compaction.log.CompactionLogEntry; import org.apache.ozone.rocksdb.util.RdbUtil; @@ -758,7 +759,7 @@ void diffAllSnapshots(RocksDBCheckpointDiffer differ) private void createCheckpoint(ManagedRocksDB rocksDB) throws RocksDBException { LOG.trace("Current time: " + System.currentTimeMillis()); - long t1 = System.currentTimeMillis(); + long t1 = Time.monotonicNow(); final long snapshotGeneration = rocksDB.get().getLatestSequenceNumber(); final String cpPath = CP_PATH_PREFIX + snapshotGeneration; @@ -780,7 +781,7 @@ private void createCheckpoint(ManagedRocksDB rocksDB) throws RocksDBException { colHandle)); this.snapshots.add(currentSnapshot); - long t2 = System.currentTimeMillis(); + long t2 = Time.monotonicNow(); LOG.trace("Current time: " + t2); LOG.debug("Time elapsed: " + (t2 - t1) + " ms"); } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java index a4deae441fb9..9384837f1e89 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java @@ -51,6 +51,7 @@ import org.apache.hadoop.hdds.scm.ha.SCMContext; import org.apache.hadoop.hdds.scm.node.states.NodeNotFoundException; import org.apache.hadoop.hdds.server.events.EventPublisher; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -527,7 +528,7 @@ public synchronized void startMaintenance(DatanodeDetails dn, int endInHours) long maintenanceEnd = 0; if (endInHours != 0) { maintenanceEnd = - (System.currentTimeMillis() / 1000L) + (endInHours * 60L * 60L); + (Time.monotonicNow() / 1000L) + (endInHours * 60L * 60L); } if (opState == NodeOperationalState.IN_SERVICE) { nodeManager.setNodeOperationalState( diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java index 01d57d8329ca..17c23f94ae28 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java @@ -22,6 +22,7 @@ import java.util.Objects; import java.util.Set; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; +import org.apache.hadoop.util.Time; /** * This class is used to capture the current status of a datanode. This @@ -123,7 +124,7 @@ public boolean operationalStateExpired() { if (0 == opStateExpiryEpochSeconds) { return false; } - return System.currentTimeMillis() / 1000 >= opStateExpiryEpochSeconds; + return Time.monotonicNow() / 1000 >= opStateExpiryEpochSeconds; } public boolean isInService() { diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java index 3c71ee4e04e3..db4a47bba76b 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java @@ -56,6 +56,7 @@ import org.apache.hadoop.hdds.scm.pipeline.PipelineID; import org.apache.hadoop.hdds.scm.server.StorageContainerManager; import org.apache.hadoop.hdds.server.events.EventQueue; +import org.apache.hadoop.util.Time; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -380,7 +381,7 @@ public void testNodeDecommissionManagerOnBecomeLeader() throws Exception { List dns = generateDatanodes(); long maintenanceEnd = - (System.currentTimeMillis() / 1000L) + (100 * 60L * 60L); + (Time.monotonicNow() / 1000L) + (100 * 60L * 60L); // Put 1 node into entering_maintenance, 1 node into decommissioning // and 1 node into in_maintenance. diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java index cb2315f7fd56..e90199e7cfcd 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java @@ -637,7 +637,7 @@ public void testSetNodeOpStateAndCommandFired() DatanodeDetails dn = HddsTestUtils.createRandomDatanodeAndRegister( nodeManager); - long expiry = System.currentTimeMillis() / 1000 + 1000; + long expiry = Time.monotonicNow() / 1000 + 1000; nodeManager.setNodeOperationalState(dn, HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE, expiry); diff --git a/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/LambdaTestUtils.java b/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/LambdaTestUtils.java index da5a08f615db..b3529ff10b51 100644 --- a/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/LambdaTestUtils.java +++ b/hadoop-hdds/test-utils/src/test/java/org/apache/ozone/test/LambdaTestUtils.java @@ -20,6 +20,7 @@ import com.google.common.base.Preconditions; import java.util.concurrent.Callable; import java.util.concurrent.TimeoutException; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -105,7 +106,7 @@ public static int await(int timeoutMillis, "timeoutMillis must be >= 0"); Preconditions.checkNotNull(timeoutHandler); - final long endTime = System.currentTimeMillis() + timeoutMillis; + final long endTime = Time.monotonicNow() + timeoutMillis; Throwable ex = null; boolean running = true; int iterations = 0; @@ -126,7 +127,7 @@ public static int await(int timeoutMillis, LOG.debug("await() iteration {}", iterations, e); ex = e; } - running = System.currentTimeMillis() < endTime; + running = Time.monotonicNow() < endTime; if (running) { int sleeptime = retry.call(); if (sleeptime >= 0) { diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeWaitSubcommand.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeWaitSubcommand.java index bb225aba589f..9690bbf8d45b 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeWaitSubcommand.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeWaitSubcommand.java @@ -21,6 +21,7 @@ import java.util.concurrent.TimeoutException; import org.apache.hadoop.hdds.cli.HddsVersionProvider; import org.apache.hadoop.hdds.scm.client.ScmClient; +import org.apache.hadoop.util.Time; import picocli.CommandLine.Command; import picocli.CommandLine.Mixin; import picocli.CommandLine.Option; @@ -48,7 +49,7 @@ public class SafeModeWaitSubcommand implements Callable { @Override public Void call() throws Exception { - startTestTime = System.currentTimeMillis(); + startTestTime = Time.monotonicNow(); while (getRemainingTimeInSec() > 0) { try (ScmClient scmClient = scmOption.createScmClient()) { @@ -85,6 +86,6 @@ public Void call() throws Exception { } private long getRemainingTimeInSec() { - return timeoutSeconds - (System.currentTimeMillis() - startTestTime) / 1000; + return timeoutSeconds - (Time.monotonicNow() - startTestTime) / 1000; } } diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java index 5d87fde7533e..e2a3d69fed1e 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java @@ -30,6 +30,7 @@ import org.apache.hadoop.ozone.container.common.volume.HddsVolume; import org.apache.hadoop.ozone.container.common.volume.StorageVolume; import org.apache.hadoop.ozone.container.metadata.DatanodeStoreSchemaThreeImpl; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +49,7 @@ public List run(OzoneConfiguration configuration, List volumes) throws IOException { List results = new ArrayList<>(); Map> volumeFutures = new HashMap<>(); - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); LOG.info("Start to upgrade {} volume(s)", volumes.size()); for (StorageVolume volume : volumes) { @@ -76,7 +77,7 @@ public List run(OzoneConfiguration configuration, } LOG.info("It took {}ms to finish all volume upgrade.", - (System.currentTimeMillis() - startTime)); + (Time.monotonicNow() - startTime)); return results; } @@ -91,7 +92,7 @@ public DatanodeStoreSchemaThreeImpl getDBStore(HddsVolume volume) { public static class Result { private Map resultMap; private final HddsVolume hddsVolume; - private final long startTimeMs = System.currentTimeMillis(); + private final long startTimeMs = Time.monotonicNow(); private long endTimeMs = 0L; private Exception e = null; private Status status = Status.FAIL; diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java index e1c0594825e6..e165435603b6 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java @@ -55,6 +55,7 @@ import org.apache.hadoop.ozone.container.metadata.DatanodeSchemaTwoDBDefinition; import org.apache.hadoop.ozone.container.metadata.DatanodeStore; import org.apache.hadoop.ozone.container.metadata.DatanodeStoreSchemaThreeImpl; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -383,7 +384,7 @@ public static class UpgradeContainerResult { private final ContainerData originContainerData; private ContainerData newContainerData; private long totalRow = 0L; - private final long startTimeMs = System.currentTimeMillis(); + private final long startTimeMs = Time.monotonicNow(); private long endTimeMs = 0L; private Status status; diff --git a/hadoop-ozone/httpfsgateway/src/main/java/org/apache/ozone/lib/service/hadoop/FileSystemAccessService.java b/hadoop-ozone/httpfsgateway/src/main/java/org/apache/ozone/lib/service/hadoop/FileSystemAccessService.java index a8edd3908d60..c4dfc28df47a 100644 --- a/hadoop-ozone/httpfsgateway/src/main/java/org/apache/ozone/lib/service/hadoop/FileSystemAccessService.java +++ b/hadoop-ozone/httpfsgateway/src/main/java/org/apache/ozone/lib/service/hadoop/FileSystemAccessService.java @@ -38,6 +38,7 @@ import org.apache.hadoop.hdds.annotation.InterfaceAudience; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.StringUtils; +import org.apache.hadoop.util.Time; import org.apache.hadoop.util.VersionInfo; import org.apache.ozone.lib.server.BaseService; import org.apache.ozone.lib.server.ServiceException; @@ -112,7 +113,7 @@ synchronized void release() throws IOException { fs = null; lastUse = -1; } else { - lastUse = System.currentTimeMillis(); + lastUse = Time.monotonicNow(); } } } @@ -125,7 +126,7 @@ synchronized void release() throws IOException { synchronized boolean purgeIfIdle() throws IOException { boolean ret = false; if (count == 0 && lastUse != -1 && - (System.currentTimeMillis() - lastUse) > timeout) { + (Time.monotonicNow() - lastUse) > timeout) { fs.close(); fs = null; lastUse = -1; diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java index f0e48126154c..a4d7c02b4a47 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java @@ -53,6 +53,7 @@ import org.apache.hadoop.fs.StreamCapabilities; import org.apache.hadoop.io.ByteBufferPool; import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.util.Time; import org.apache.hadoop.util.functional.FutureIO; import org.apache.hadoop.util.functional.RemoteIterators; import org.assertj.core.api.Assertions; @@ -1498,13 +1499,13 @@ public static boolean containsDuplicates(Collection paths) { */ public static FileStatus getFileStatusEventually(FileSystem fs, Path path, int timeout) throws IOException, InterruptedException { - long endTime = System.currentTimeMillis() + timeout; + long endTime = Time.monotonicNow() + timeout; FileStatus stat = null; do { try { stat = fs.getFileStatus(path); } catch (FileNotFoundException e) { - if (System.currentTimeMillis() > endTime) { + if (Time.monotonicNow() > endTime) { // timeout, raise an assert with more diagnostics assertPathExists(fs, "Path not found after " + timeout + " mS", path); } else { diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java index 0b3e57d3d93c..e89546a33397 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java @@ -79,6 +79,7 @@ import org.apache.hadoop.ozone.TestDataUtil; import org.apache.hadoop.ozone.client.OzoneBucket; import org.apache.hadoop.ozone.client.OzoneClient; +import org.apache.hadoop.util.Time; import org.apache.ozone.test.GenericTestUtils; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; @@ -613,7 +614,7 @@ public void testMaintenanceEndsAutomaticallyAtTimeout() scmClient.startMaintenanceNodes(Arrays.asList(getDNHostAndPort(dn)), 0, true); waitForDnToReachPersistedOpState(dn, IN_MAINTENANCE); - long newEndTime = System.currentTimeMillis() / 1000 + 5; + long newEndTime = Time.monotonicNow() / 1000 + 5; // Update the maintenance end time via NM manually. As the current // decommission interface only allows us to specify hours from now as the // end time, that is not really suitable for a test like this. @@ -628,7 +629,7 @@ public void testMaintenanceEndsAutomaticallyAtTimeout() cluster.shutdownHddsDatanode(dn); waitForDnToReachHealthState(nm, dn, DEAD); - newEndTime = System.currentTimeMillis() / 1000 + 5; + newEndTime = Time.monotonicNow() / 1000 + 5; nm.setNodeOperationalState(dn, IN_MAINTENANCE, newEndTime); waitForDnToReachOpState(nm, dn, IN_SERVICE); // Ensure there are 3 replicas not including the dead node, indicating a new diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java index cb03d4507509..e35d6e3882b2 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java @@ -93,6 +93,7 @@ import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfo; import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfoGroup; import org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol; +import org.apache.hadoop.util.Time; import org.apache.ozone.test.GenericTestUtils; import org.apache.ozone.test.GenericTestUtils.LogCapturer; import org.apache.ozone.test.tag.Flaky; @@ -822,7 +823,7 @@ public void testBlockDeleteCommandParallelProcess() throws Exception { // Wait for block delete command sent from OM OzoneTestUtils.flushAndWaitForDeletedBlockLog(scm); - long start = System.currentTimeMillis(); + long start = Time.monotonicNow(); // Wait for all blocks been deleted. GenericTestUtils.waitFor(() -> { try { @@ -834,7 +835,7 @@ public void testBlockDeleteCommandParallelProcess() throws Exception { } return false; }, 100, 30000); - long end = System.currentTimeMillis(); + long end = Time.monotonicNow(); System.out.println("Block deletion costs " + (end - start) + "ms"); } } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOmBucketReadWriteKeyOps.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOmBucketReadWriteKeyOps.java index a3ad7c6a48e5..a837cb785104 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOmBucketReadWriteKeyOps.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOmBucketReadWriteKeyOps.java @@ -33,6 +33,7 @@ import org.apache.hadoop.ozone.freon.TestOmBucketReadWriteFileOps.ParameterBuilder; import org.apache.hadoop.ozone.om.helpers.BucketLayout; import org.apache.hadoop.ozone.om.lock.OMLockMetrics; +import org.apache.hadoop.util.Time; import org.apache.ozone.test.NonHATests; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -115,7 +116,7 @@ void testOmBucketReadWriteKeyOps(ParameterBuilder parameterBuilder) throws Excep parameterBuilder.getBucketArgs().setBucketLayout(BucketLayout.OBJECT_STORE).build() ); - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); String om = cluster().getConf().get(OZONE_OM_ADDRESS_KEY); new Freon().getCmd().execute( "-D", OZONE_OM_ADDRESS_KEY + "=" + om, @@ -132,7 +133,7 @@ void testOmBucketReadWriteKeyOps(ParameterBuilder parameterBuilder) throws Excep "-R", String.valueOf(parameterBuilder.getNumOfReadOperations()), "-W", String.valueOf(parameterBuilder.getNumOfWriteOperations()), "-n", String.valueOf(1)); - long totalTime = System.currentTimeMillis() - startTime; + long totalTime = Time.monotonicNow() - startTime; LOG.info("Total Execution Time: " + totalTime); LOG.info("Started verifying OM bucket read/write ops key generation..."); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis_snapshot/OmRatisSnapshotProvider.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis_snapshot/OmRatisSnapshotProvider.java index 8c6cdd4a7484..35ae4a60fec0 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis_snapshot/OmRatisSnapshotProvider.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis_snapshot/OmRatisSnapshotProvider.java @@ -49,6 +49,7 @@ import org.apache.hadoop.hdfs.web.URLConnectionFactory; import org.apache.hadoop.ozone.om.helpers.OMNodeDetails; import org.apache.hadoop.security.SecurityUtil; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -188,17 +189,17 @@ public static void downloadFileWithProgress(InputStream inputStream, File target byte[] buffer = new byte[8 * 1024]; long totalBytesRead = 0; int bytesRead; - long lastLoggedTime = System.currentTimeMillis(); + long lastLoggedTime = Time.monotonicNow(); while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); totalBytesRead += bytesRead; // Log progress every 30 seconds - if (System.currentTimeMillis() - lastLoggedTime >= 30000) { + if (Time.monotonicNow() - lastLoggedTime >= 30000) { LOG.info("Downloading '{}': {} KB downloaded so far...", targetFile.getName(), totalBytesRead / (1024)); - lastLoggedTime = System.currentTimeMillis(); + lastLoggedTime = Time.monotonicNow(); } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java index 05bb957f22cc..ef5ee2a4ea44 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java @@ -41,6 +41,7 @@ import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareResponse; +import org.apache.hadoop.util.Time; import org.apache.ratis.server.RaftServer; import org.apache.ratis.server.raftlog.RaftLog; import org.apache.ratis.statemachine.StateMachine; @@ -173,7 +174,7 @@ private static long waitForLogIndex(long minOMDBFlushIndex, Duration flushTimeout, Duration flushCheckInterval) throws InterruptedException, IOException { - long endTime = System.currentTimeMillis() + flushTimeout.toMillis(); + long endTime = Time.monotonicNow() + flushTimeout.toMillis(); boolean omDBFlushed = false; boolean ratisStateMachineApplied = false; @@ -193,7 +194,7 @@ private static long waitForLogIndex(long minOMDBFlushIndex, " to Ratis state machine.", om.getOMNodeId(), minOMDBFlushIndex, minRatisStateMachineIndex); while (!(omDBFlushed && ratisStateMachineApplied) && - System.currentTimeMillis() < endTime) { + Time.monotonicNow() < endTime) { // Check OM DB. lastOMDBFlushIndex = om.getRatisSnapshotIndex(); omDBFlushed = (lastOMDBFlushIndex >= minOMDBFlushIndex); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/QuotaRepairTask.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/QuotaRepairTask.java index 35ffca10095e..b35a95a2e899 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/QuotaRepairTask.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/QuotaRepairTask.java @@ -57,6 +57,7 @@ import org.apache.hadoop.ozone.om.helpers.OmKeyInfo; import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos; +import org.apache.hadoop.util.Time; import org.apache.ratis.protocol.ClientId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -346,7 +347,7 @@ private void recalculateUsages( prefixUsageMap, q, isRunning, haveValue))); } int count = 0; - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); try (TableIterator> keyIter = table.iterator()) { while (keyIter.hasNext()) { @@ -363,7 +364,7 @@ private void recalculateUsages( f.get(); } LOG.info("Recalculate {} completed, count {} time {}ms", strType, - count, (System.currentTimeMillis() - startTime)); + count, (Time.monotonicNow() - startTime)); } catch (IOException ex) { throw new UncheckedIOException(ex); } catch (InterruptedException ex) { diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconUtils.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconUtils.java index c80bcaa1ab27..63a96c96cc39 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconUtils.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconUtils.java @@ -92,6 +92,7 @@ import org.apache.hadoop.ozone.recon.scm.ReconContainerReportQueue; import org.apache.hadoop.ozone.recon.spi.ReconNamespaceSummaryManager; import org.apache.hadoop.security.authentication.client.AuthenticationException; +import org.apache.hadoop.util.Time; import org.apache.ozone.recon.schema.generated.tables.daos.GlobalStatsDao; import org.apache.ozone.recon.schema.generated.tables.pojos.GlobalStats; import org.jooq.Configuration; @@ -496,12 +497,12 @@ private static void triggerRebuild(ReconNamespaceSummaryManager reconNamespaceSu }); executor.submit(() -> { - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); log.info("Rebuilding NSSummary tree..."); try { reconNamespaceSummaryManager.rebuildNSSummaryTree(omMetadataManager); } finally { - long endTime = System.currentTimeMillis(); + long endTime = Time.monotonicNow(); log.info("NSSummary tree rebuild completed in {} ms.", endTime - startTime); } }); diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java index f1b46e4db20e..14291defa719 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java @@ -146,8 +146,8 @@ protected void runTask() throws Exception { initializeUnhealthyContainerStateStatsMap( unhealthyContainerStateStatsMap); long start = Time.monotonicNow(); - long currentTime = System.currentTimeMillis(); - long existingCount = processExistingDBRecords(currentTime, + long currentTime = Time.monotonicNow(); + long existingCount = processExistingDBRecords(Time.monotonicNow(), unhealthyContainerStateStatsMap); LOG.debug("Container Health task thread took {} milliseconds to" + " process {} existing database records.", diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ContainerKeyMapperHelper.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ContainerKeyMapperHelper.java index 7e5a02ff99a1..e786aa282a8c 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ContainerKeyMapperHelper.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ContainerKeyMapperHelper.java @@ -40,6 +40,7 @@ import org.apache.hadoop.ozone.recon.api.types.ContainerKeyPrefix; import org.apache.hadoop.ozone.recon.api.types.KeyPrefixContainer; import org.apache.hadoop.ozone.recon.spi.ReconContainerMetadataManager; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -161,7 +162,7 @@ public static boolean process(OMUpdateEventBatch events, Map containerKeyCountMap = new HashMap<>(); // List of the deleted (container, key) pair's List deletedKeyCountList = new ArrayList<>(); - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); while (eventIterator.hasNext()) { OMDBUpdateEvent omdbUpdateEvent = eventIterator.next(); @@ -211,7 +212,7 @@ public static boolean process(OMUpdateEventBatch events, return false; } LOG.debug("{} successfully processed {} OM DB update event(s) in {} milliseconds.", - taskName, eventCount, (System.currentTimeMillis() - startTime)); + taskName, eventCount, (Time.monotonicNow() - startTime)); return true; } diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/FileSizeCountTaskHelper.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/FileSizeCountTaskHelper.java index f6d26373f00e..b8f5302c625f 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/FileSizeCountTaskHelper.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/FileSizeCountTaskHelper.java @@ -32,6 +32,7 @@ import org.apache.hadoop.ozone.om.helpers.OmKeyInfo; import org.apache.hadoop.ozone.recon.ReconConstants; import org.apache.hadoop.ozone.recon.ReconUtils; +import org.apache.hadoop.util.Time; import org.apache.ozone.recon.schema.generated.tables.daos.FileCountBySizeDao; import org.apache.ozone.recon.schema.generated.tables.pojos.FileCountBySize; import org.jooq.DSLContext; @@ -90,7 +91,7 @@ public static ReconOmTask.TaskResult reprocess(OMMetadataManager omMetadataManag String taskName) { LOG.info("Starting Reprocess for {}", taskName); Map fileSizeCountMap = new HashMap<>(); - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); truncateTableIfNeeded(dslContext); boolean status = reprocessBucketLayout( bucketLayout, omMetadataManager, fileSizeCountMap, dslContext, fileCountBySizeDao, taskName); @@ -98,7 +99,7 @@ public static ReconOmTask.TaskResult reprocess(OMMetadataManager omMetadataManag return buildTaskResult(taskName, false); } writeCountsToDB(fileSizeCountMap, dslContext, fileCountBySizeDao); - long endTime = System.currentTimeMillis(); + long endTime = Time.monotonicNow(); LOG.info("{} completed Reprocess in {} ms.", taskName, (endTime - startTime)); return buildTaskResult(taskName, true); } @@ -160,7 +161,7 @@ public static ReconOmTask.TaskResult processEvents(OMUpdateEventBatch events, String taskName) { Iterator eventIterator = events.getIterator(); Map fileSizeCountMap = new HashMap<>(); - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); while (eventIterator.hasNext()) { OMDBUpdateEvent omdbUpdateEvent = eventIterator.next(); if (!tableName.equals(omdbUpdateEvent.getTable())) { @@ -202,7 +203,7 @@ public static ReconOmTask.TaskResult processEvents(OMUpdateEventBatch events, } writeCountsToDB(fileSizeCountMap, dslContext, fileCountBySizeDao); LOG.debug("{} successfully processed in {} milliseconds", taskName, - (System.currentTimeMillis() - startTime)); + (Time.monotonicNow() - startTime)); return buildTaskResult(taskName, true); } diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/OmTableInsightTask.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/OmTableInsightTask.java index 7fe9584fdf52..34fd1af6d695 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/OmTableInsightTask.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/OmTableInsightTask.java @@ -41,6 +41,7 @@ import org.apache.hadoop.hdds.utils.db.TableIterator; import org.apache.hadoop.ozone.om.OMMetadataManager; import org.apache.hadoop.ozone.recon.recovery.ReconOMMetadataManager; +import org.apache.hadoop.util.Time; import org.apache.ozone.recon.schema.generated.tables.daos.GlobalStatsDao; import org.apache.ozone.recon.schema.generated.tables.pojos.GlobalStats; import org.jooq.Configuration; @@ -172,7 +173,7 @@ public TaskResult process(OMUpdateEventBatch events, String tableName; OMDBUpdateEvent omdbUpdateEvent; // Process each update event - long startTime = System.currentTimeMillis(); + long startTime = Time.monotonicNow(); while (eventIterator.hasNext()) { omdbUpdateEvent = eventIterator.next(); tableName = omdbUpdateEvent.getTable(); @@ -215,7 +216,7 @@ public TaskResult process(OMUpdateEventBatch events, writeDataToDB(replicatedSizeMap); } LOG.debug("{} successfully processed in {} milliseconds", - getTaskName(), (System.currentTimeMillis() - startTime)); + getTaskName(), (Time.monotonicNow() - startTime)); return buildTaskResult(true); } diff --git a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java index cc78b39336e5..8e93add12f7b 100644 --- a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java +++ b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java @@ -55,6 +55,7 @@ import org.apache.hadoop.ozone.s3.exception.OS3Exception; import org.apache.hadoop.ozone.s3.exception.S3ErrorTable; import org.apache.hadoop.ozone.web.utils.OzoneUtils; +import org.apache.hadoop.util.Time; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -112,7 +113,7 @@ public static void setUp() throws Exception { // Make sure DELAY_MS has passed, otherwise // afterSourceKeyModificationTimeStr will be in the future // and thus invalid - long currentTime = System.currentTimeMillis(); + long currentTime = Time.monotonicNow(); long sleepMs = sourceKeyLastModificationTime + DELAY_MS - currentTime; if (sleepMs > 0) { Thread.sleep(sleepMs); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/PrepareSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/PrepareSubCommand.java index 4641025c1894..fd6b2ec0a410 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/PrepareSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/PrepareSubCommand.java @@ -32,6 +32,7 @@ import org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareStatusResponse; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareStatusResponse.PrepareStatus; +import org.apache.hadoop.util.Time; import picocli.CommandLine; /** @@ -112,10 +113,10 @@ public Void call() throws Exception { System.out.println(); System.out.println("Checking individual OM instances for prepare request " + "completion..."); - long endTime = System.currentTimeMillis() + pTimeout.toMillis(); + long endTime = Time.monotonicNow() + pTimeout.toMillis(); int expectedNumPreparedOms = omPreparedStatusMap.size(); int currentNumPreparedOms = 0; - while (System.currentTimeMillis() < endTime && + while (Time.monotonicNow() < endTime && currentNumPreparedOms < expectedNumPreparedOms) { for (Map.Entry e : omPreparedStatusMap.entrySet()) { if (!e.getValue()) { diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java index c7b2ed28073a..98f96412a3ff 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java @@ -63,6 +63,7 @@ import org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolPB; import org.apache.hadoop.ozone.util.ShutdownHookManager; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.util.Time; import org.apache.ratis.protocol.ClientId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -185,7 +186,7 @@ private void taskLoop(TaskProvider provider) { while (!completed.get()) { long counter = attemptCounter.getAndIncrement(); if (timebase) { - if (System.currentTimeMillis() + if (Time.monotonicNow() > startTime + TimeUnit.SECONDS.toMillis(durationInSecond)) { completed.set(true); break; @@ -344,7 +345,7 @@ public void init() { freonCommand.isInteractive(), realTimeStatusSupplier()); progressBar.start(); - startTime = System.currentTimeMillis(); + startTime = Time.monotonicNow(); } public Supplier realTimeStatusSupplier() { @@ -376,7 +377,7 @@ public void printReport() { List messages = new LinkedList<>(); messages.add("Total execution time (sec): " + - Math.round((System.currentTimeMillis() - startTime) / 1000.0)); + Math.round((Time.monotonicNow() - startTime) / 1000.0)); messages.add("Failures: " + failureCounter.get()); messages.add("Successful executions: " + successCounter.get()); if (failureCounter.get() > 0) { From 5d73fb35d75f43d6b2ece77149f08b1f668036e8 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Sun, 16 Mar 2025 13:00:29 +0800 Subject: [PATCH 02/14] Fixed tests --- .../hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java index 8e93add12f7b..3b3440663b84 100644 --- a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java +++ b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java @@ -113,7 +113,7 @@ public static void setUp() throws Exception { // Make sure DELAY_MS has passed, otherwise // afterSourceKeyModificationTimeStr will be in the future // and thus invalid - long currentTime = Time.monotonicNow(); + long currentTime = System.currentTimeMillis(); long sleepMs = sourceKeyLastModificationTime + DELAY_MS - currentTime; if (sleepMs > 0) { Thread.sleep(sleepMs); From 69137621bbf707123cf173d97d0d45e649d811d3 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Sun, 16 Mar 2025 13:03:36 +0800 Subject: [PATCH 03/14] Fixed styles --- .../hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java index 3b3440663b84..cc78b39336e5 100644 --- a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java +++ b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java @@ -55,7 +55,6 @@ import org.apache.hadoop.ozone.s3.exception.OS3Exception; import org.apache.hadoop.ozone.s3.exception.S3ErrorTable; import org.apache.hadoop.ozone.web.utils.OzoneUtils; -import org.apache.hadoop.util.Time; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; From caf69c1ecb46325c163e4a426b3a6567b2bf5d1f Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Sun, 16 Mar 2025 20:35:47 +0800 Subject: [PATCH 04/14] Applied comments --- .../org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java index 14291defa719..f353ceee522f 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java @@ -146,7 +146,7 @@ protected void runTask() throws Exception { initializeUnhealthyContainerStateStatsMap( unhealthyContainerStateStatsMap); long start = Time.monotonicNow(); - long currentTime = Time.monotonicNow(); + long currentTime = System.currentTimeMillis(); long existingCount = processExistingDBRecords(Time.monotonicNow(), unhealthyContainerStateStatsMap); LOG.debug("Container Health task thread took {} milliseconds to" + From 1ee2db4e4c1a9570e260ac9900912fcab0e8a691 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Mon, 17 Mar 2025 20:20:26 +0800 Subject: [PATCH 05/14] Applied comments --- .../main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java | 3 +-- .../apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java index 17c23f94ae28..01d57d8329ca 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java @@ -22,7 +22,6 @@ import java.util.Objects; import java.util.Set; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; -import org.apache.hadoop.util.Time; /** * This class is used to capture the current status of a datanode. This @@ -124,7 +123,7 @@ public boolean operationalStateExpired() { if (0 == opStateExpiryEpochSeconds) { return false; } - return Time.monotonicNow() / 1000 >= opStateExpiryEpochSeconds; + return System.currentTimeMillis() / 1000 >= opStateExpiryEpochSeconds; } public boolean isInService() { diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java index f353ceee522f..3c3730742b02 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java @@ -147,7 +147,7 @@ protected void runTask() throws Exception { unhealthyContainerStateStatsMap); long start = Time.monotonicNow(); long currentTime = System.currentTimeMillis(); - long existingCount = processExistingDBRecords(Time.monotonicNow(), + long existingCount = processExistingDBRecords(System.currentTimeMillis(), unhealthyContainerStateStatsMap); LOG.debug("Container Health task thread took {} milliseconds to" + " process {} existing database records.", From 00a34738d72264a4ed05acff46d782c628d50a4e Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Mon, 17 Mar 2025 21:36:37 +0800 Subject: [PATCH 06/14] Fixed tests --- .../hadoop/hdds/scm/node/TestNodeDecommissionManager.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java index db4a47bba76b..3c71ee4e04e3 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java @@ -56,7 +56,6 @@ import org.apache.hadoop.hdds.scm.pipeline.PipelineID; import org.apache.hadoop.hdds.scm.server.StorageContainerManager; import org.apache.hadoop.hdds.server.events.EventQueue; -import org.apache.hadoop.util.Time; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -381,7 +380,7 @@ public void testNodeDecommissionManagerOnBecomeLeader() throws Exception { List dns = generateDatanodes(); long maintenanceEnd = - (Time.monotonicNow() / 1000L) + (100 * 60L * 60L); + (System.currentTimeMillis() / 1000L) + (100 * 60L * 60L); // Put 1 node into entering_maintenance, 1 node into decommissioning // and 1 node into in_maintenance. From efa19cea3c34822669be0c2c9191e7cfba2586c2 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Wed, 9 Apr 2025 21:33:37 +0800 Subject: [PATCH 07/14] Revert changes --- .../org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java index 3c3730742b02..f1b46e4db20e 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/fsck/ContainerHealthTask.java @@ -147,7 +147,7 @@ protected void runTask() throws Exception { unhealthyContainerStateStatsMap); long start = Time.monotonicNow(); long currentTime = System.currentTimeMillis(); - long existingCount = processExistingDBRecords(System.currentTimeMillis(), + long existingCount = processExistingDBRecords(currentTime, unhealthyContainerStateStatsMap); LOG.debug("Container Health task thread took {} milliseconds to" + " process {} existing database records.", From d0e80f72bbc95237077bb0a1decd3b3722e50d32 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Wed, 9 Apr 2025 23:48:20 +0800 Subject: [PATCH 08/14] Revert changes --- .../apache/hadoop/hdds/scm/node/NodeDecommissionManager.java | 2 +- .../org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java | 2 +- .../hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java index 9384837f1e89..bd78a5c5c7dc 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java @@ -528,7 +528,7 @@ public synchronized void startMaintenance(DatanodeDetails dn, int endInHours) long maintenanceEnd = 0; if (endInHours != 0) { maintenanceEnd = - (Time.monotonicNow() / 1000L) + (endInHours * 60L * 60L); + (System.currentTimeMillis() / 1000L) + (endInHours * 60L * 60L); } if (opState == NodeOperationalState.IN_SERVICE) { nodeManager.setNodeOperationalState( diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java index e90199e7cfcd..cb2315f7fd56 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java @@ -637,7 +637,7 @@ public void testSetNodeOpStateAndCommandFired() DatanodeDetails dn = HddsTestUtils.createRandomDatanodeAndRegister( nodeManager); - long expiry = Time.monotonicNow() / 1000 + 1000; + long expiry = System.currentTimeMillis() / 1000 + 1000; nodeManager.setNodeOperationalState(dn, HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE, expiry); diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java index e89546a33397..252ec8f65d72 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java @@ -614,7 +614,7 @@ public void testMaintenanceEndsAutomaticallyAtTimeout() scmClient.startMaintenanceNodes(Arrays.asList(getDNHostAndPort(dn)), 0, true); waitForDnToReachPersistedOpState(dn, IN_MAINTENANCE); - long newEndTime = Time.monotonicNow() / 1000 + 5; + long newEndTime = System.currentTimeMillis() / 1000 + 5; // Update the maintenance end time via NM manually. As the current // decommission interface only allows us to specify hours from now as the // end time, that is not really suitable for a test like this. From 5ff7659a8616fcce11b33acbff05c765470bc7ba Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Thu, 10 Apr 2025 00:16:02 +0800 Subject: [PATCH 09/14] Revert and fixed styles --- .../apache/hadoop/hdds/scm/node/NodeDecommissionManager.java | 1 - .../hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java index bd78a5c5c7dc..a4deae441fb9 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeDecommissionManager.java @@ -51,7 +51,6 @@ import org.apache.hadoop.hdds.scm.ha.SCMContext; import org.apache.hadoop.hdds.scm.node.states.NodeNotFoundException; import org.apache.hadoop.hdds.server.events.EventPublisher; -import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java index 252ec8f65d72..0b3e57d3d93c 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/node/TestDecommissionAndMaintenance.java @@ -79,7 +79,6 @@ import org.apache.hadoop.ozone.TestDataUtil; import org.apache.hadoop.ozone.client.OzoneBucket; import org.apache.hadoop.ozone.client.OzoneClient; -import org.apache.hadoop.util.Time; import org.apache.ozone.test.GenericTestUtils; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; @@ -629,7 +628,7 @@ public void testMaintenanceEndsAutomaticallyAtTimeout() cluster.shutdownHddsDatanode(dn); waitForDnToReachHealthState(nm, dn, DEAD); - newEndTime = Time.monotonicNow() / 1000 + 5; + newEndTime = System.currentTimeMillis() / 1000 + 5; nm.setNodeOperationalState(dn, IN_MAINTENANCE, newEndTime); waitForDnToReachOpState(nm, dn, IN_SERVICE); // Ensure there are 3 replicas not including the dead node, indicating a new From 21494f00f7449f8f43719eb81f20ae7d70519fa9 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Thu, 10 Apr 2025 00:20:05 +0800 Subject: [PATCH 10/14] Fixed styles --- .../hadoop/ozone/container/keyvalue/TestKeyValueHandler.java | 1 - .../hadoop/ozone/container/ozoneimpl/TestContainerReader.java | 1 - 2 files changed, 2 deletions(-) diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java index 823fd9fcee0c..d986758d1233 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java @@ -71,7 +71,6 @@ import org.apache.hadoop.ozone.container.common.volume.StorageVolume; import org.apache.hadoop.ozone.container.common.volume.VolumeSet; import org.apache.hadoop.util.Time; -import org.apache.ozone.test.GenericTestUtils; import org.apache.ozone.test.GenericTestUtils.LogCapturer; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java index c84565084060..4688c46214fa 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java @@ -69,7 +69,6 @@ import org.apache.hadoop.ozone.container.keyvalue.helpers.BlockUtils; import org.apache.hadoop.ozone.container.metadata.DatanodeStoreSchemaThreeImpl; import org.apache.hadoop.util.Time; -import org.apache.ozone.test.GenericTestUtils; import org.apache.ozone.test.GenericTestUtils.LogCapturer; import org.apache.ratis.util.FileUtils; import org.junit.jupiter.api.AfterEach; From b9eff9e4a5d2da32a87d4de369422bd93de2fa7f Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Fri, 11 Apr 2025 18:58:42 +0800 Subject: [PATCH 11/14] Revert change --- .../hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java | 2 +- .../hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java index c1a263975ce1..180911ec30a4 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java @@ -92,7 +92,7 @@ public DatanodeStoreSchemaThreeImpl getDBStore(HddsVolume volume) { public static class Result { private Map resultMap; private final HddsVolume hddsVolume; - private final long startTimeMs = Time.monotonicNow(); + private final long startTimeMs = System.currentTimeMillis(); private long endTimeMs = 0L; private Exception e = null; private Status status = Status.FAIL; diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java index 2c75fff85b73..38ee5a4a4d9a 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java @@ -384,7 +384,7 @@ public static class UpgradeContainerResult { private final ContainerData originContainerData; private ContainerData newContainerData; private long totalRow = 0L; - private final long startTimeMs = Time.monotonicNow(); + private final long startTimeMs = System.currentTimeMillis(); private long endTimeMs = 0L; private Status status; From 86b75054cf84fd90795135c267eabc516dd71518 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Fri, 11 Apr 2025 19:02:02 +0800 Subject: [PATCH 12/14] Fixed style --- .../hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java index 38ee5a4a4d9a..aff031a090e9 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java @@ -55,7 +55,6 @@ import org.apache.hadoop.ozone.container.metadata.DatanodeSchemaTwoDBDefinition; import org.apache.hadoop.ozone.container.metadata.DatanodeStore; import org.apache.hadoop.ozone.container.metadata.DatanodeStoreSchemaThreeImpl; -import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; From 2496e09472280b691d73e915e91a0823e0d8e20b Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Fri, 11 Apr 2025 19:28:46 +0800 Subject: [PATCH 13/14] Replaced with Time.monotonicNow() --- .../hdds/scm/cli/container/upgrade/UpgradeManager.java | 4 ++-- .../hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java index 180911ec30a4..0af73128a3f4 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java @@ -92,7 +92,7 @@ public DatanodeStoreSchemaThreeImpl getDBStore(HddsVolume volume) { public static class Result { private Map resultMap; private final HddsVolume hddsVolume; - private final long startTimeMs = System.currentTimeMillis(); + private final long startTimeMs = Time.monotonicNow(); private long endTimeMs = 0L; private Exception e = null; private Status status = Status.FAIL; @@ -130,7 +130,7 @@ public void success() { } public void fail(Exception exception) { - this.endTimeMs = System.currentTimeMillis(); + this.endTimeMs = Time.monotonicNow(); this.status = Status.FAIL; this.e = exception; } diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java index aff031a090e9..262abc57fd2d 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeTask.java @@ -55,6 +55,7 @@ import org.apache.hadoop.ozone.container.metadata.DatanodeSchemaTwoDBDefinition; import org.apache.hadoop.ozone.container.metadata.DatanodeStore; import org.apache.hadoop.ozone.container.metadata.DatanodeStoreSchemaThreeImpl; +import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -383,7 +384,7 @@ public static class UpgradeContainerResult { private final ContainerData originContainerData; private ContainerData newContainerData; private long totalRow = 0L; - private final long startTimeMs = System.currentTimeMillis(); + private final long startTimeMs = Time.monotonicNow(); private long endTimeMs = 0L; private Status status; @@ -431,7 +432,7 @@ public void setNewContainerFilePath(String newContainerFilePath) { public void success(long rowCount) { this.totalRow = rowCount; - this.endTimeMs = System.currentTimeMillis(); + this.endTimeMs = Time.monotonicNow(); this.status = Status.SUCCESS; } From 8288a487e476c70da4c55e5af88e43b8165db7de Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Fri, 11 Apr 2025 19:59:05 +0800 Subject: [PATCH 14/14] Replaced with Time.monotonicNow() --- .../hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java index 0af73128a3f4..6b2f7818f8c5 100644 --- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java +++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/upgrade/UpgradeManager.java @@ -125,7 +125,7 @@ public boolean isSuccess() { } public void success() { - this.endTimeMs = System.currentTimeMillis(); + this.endTimeMs = Time.monotonicNow(); this.status = Status.SUCCESS; }