diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/Chore.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/Chore.java index e870d12..a423c1d 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/Chore.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/Chore.java @@ -72,7 +72,7 @@ public abstract class Chore extends HasThread { try { boolean initialChoreComplete = false; while (!this.stopper.isStopped()) { - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); try { if (!initialChoreComplete) { initialChoreComplete = initialChore(); diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java index 8aeff50..812f4b8 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java @@ -268,7 +268,7 @@ public class HRegionInfo implements Comparable { public HRegionInfo(final byte[] tableName, final byte[] startKey, final byte[] endKey, final boolean split) throws IllegalArgumentException { - this(tableName, startKey, endKey, split, System.currentTimeMillis()); + this(tableName, startKey, endKey, split, System.nanoTime()); } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTransition.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTransition.java index 73140e1..7549c02 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTransition.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionTransition.java @@ -105,7 +105,7 @@ public class RegionTransition { ZooKeeperProtos.RegionTransition.Builder builder = ZooKeeperProtos.RegionTransition.newBuilder(). setEventTypeCode(type.getCode()).setRegionName(ByteString.copyFrom(regionName)). setServerName(pbsn); - builder.setCreateTime(System.currentTimeMillis()); + builder.setCreateTime(System.nanoTime()); if (payload != null) builder.setPayload(ByteString.copyFrom(payload)); return new RegionTransition(builder.build()); } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java index e0a4c1d..d96e79c 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java @@ -645,11 +645,11 @@ class AsyncProcess { * Wait until the async does not have more than max tasks in progress. */ private long waitForMaximumCurrentTasks(int max) throws InterruptedIOException { - long lastLog = EnvironmentEdgeManager.currentTimeMillis(); + long lastLog = EnvironmentEdgeManager.nanoTime(); long currentTasksDone = this.tasksDone.get(); while ((tasksSent.get() - currentTasksDone) > max) { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); if (now > lastLog + 10000) { lastLog = now; LOG.info(": Waiting for the global number of running tasks to be equals or less than " diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java index 90dc1fa..165e5fa 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java @@ -99,7 +99,7 @@ public class ClientScanner extends AbstractClientScanner { } this.scan = scan; this.tableName = tableName; - this.lastNext = System.currentTimeMillis(); + this.lastNext = System.nanoTime(); this.connection = connection; if (scan.getMaxResultSize() > 0) { this.maxScannerResultSize = scan.getMaxResultSize(); @@ -286,8 +286,8 @@ public class ClientScanner extends AbstractClientScanner { // If we are over the timeout, throw this exception to the client wrapped in // a ScannerTimeoutException. Else, it's because the region moved and we used the old // id against the new region server; reset the scanner. - if (timeout < System.currentTimeMillis()) { - long elapsed = System.currentTimeMillis() - lastNext; + if (timeout < System.nanoTime()) { + long elapsed = System.nanoTime() - lastNext; ScannerTimeoutException ex = new ScannerTimeoutException( elapsed + "ms passed since the last invocation, " + "timeout is currently set to " + scannerTimeout); @@ -332,7 +332,7 @@ public class ClientScanner extends AbstractClientScanner { // This continue will take us to while at end of loop where we will set up new scanner. continue; } - long currentTime = System.currentTimeMillis(); + long currentTime = System.nanoTime(); if (this.scanMetrics != null ) { this.scanMetrics.sumOfMillisSecBetweenNexts.addAndGet(currentTime-lastNext); } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Delete.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Delete.java index f23fdbc..c573b73 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Delete.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Delete.java @@ -52,7 +52,7 @@ import org.apache.hadoop.hbase.util.Bytes; * Specifying timestamps, deleteFamily and deleteColumns will delete all * versions with a timestamp less than or equal to that passed. If no * timestamp is specified, an entry is added with a timestamp of 'now' - * where 'now' is the servers's System.currentTimeMillis(). + * where 'now' is the servers's System.nanoTime(). * Specifying a timestamp to the deleteColumn method will * delete versions only with a timestamp equal to that specified. * If no timestamp is passed to deleteColumn, internally, it figures the diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java index 55d4b85..8a54938 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java @@ -708,7 +708,7 @@ public class HBaseAdmin implements Abortable, Closeable { */ private void waitUntilTableIsEnabled(final byte[] tableName) throws IOException { boolean enabled = false; - long start = EnvironmentEdgeManager.currentTimeMillis(); + long start = EnvironmentEdgeManager.nanoTime(); for (int tries = 0; tries < (this.numRetries * this.retryLongerMultiplier); tries++) { enabled = isTableEnabled(tableName) && isTableAvailable(tableName); if (enabled) { @@ -729,7 +729,7 @@ public class HBaseAdmin implements Abortable, Closeable { } } if (!enabled) { - long msec = EnvironmentEdgeManager.currentTimeMillis() - start; + long msec = EnvironmentEdgeManager.nanoTime() - start; throw new IOException("Table '" + Bytes.toString(tableName) + "' not yet enabled, after " + msec + "ms."); } @@ -2279,7 +2279,7 @@ public class HBaseAdmin implements Abortable, Closeable { final IsSnapshotDoneRequest request = IsSnapshotDoneRequest.newBuilder().setSnapshot(snapshot) .build(); IsSnapshotDoneResponse done = null; - long start = EnvironmentEdgeManager.currentTimeMillis(); + long start = EnvironmentEdgeManager.nanoTime(); long max = response.getExpectedTimeout(); long maxPauseTime = max / this.numRetries; int tries = 0; @@ -2287,7 +2287,7 @@ public class HBaseAdmin implements Abortable, Closeable { ClientSnapshotDescriptionUtils.toString(snapshot) + "'' to complete. (max " + maxPauseTime + " ms per retry)"); while (tries == 0 - || ((EnvironmentEdgeManager.currentTimeMillis() - start) < max && !done.getDone())) { + || ((EnvironmentEdgeManager.nanoTime() - start) < max && !done.getDone())) { try { // sleep a backoff <= pauseTime amount long sleep = getPauseTime(tries++); @@ -2397,7 +2397,7 @@ public class HBaseAdmin implements Abortable, Closeable { */ public void restoreSnapshot(final String snapshotName) throws IOException, RestoreSnapshotException { - String rollbackSnapshot = snapshotName + "-" + EnvironmentEdgeManager.currentTimeMillis(); + String rollbackSnapshot = snapshotName + "-" + EnvironmentEdgeManager.nanoTime(); String tableName = null; for (SnapshotDescription snapshotInfo: listSnapshots()) { diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java index 1ce14d7..dd43588 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java @@ -1552,7 +1552,7 @@ public class HConnectionManager { synchronized (masterAndZKLock) { --keepAliveZookeeperUserCount; if (keepAliveZookeeperUserCount <= 0 ){ - keepZooKeeperWatcherAliveUntil = System.currentTimeMillis() + keepAlive; + keepZooKeeperWatcherAliveUntil = System.nanoTime() + keepAlive; } } } @@ -1589,7 +1589,7 @@ public class HConnectionManager { } protected void closeMasterProtocol(MasterServiceState protocolState) { - if (System.currentTimeMillis() > protocolState.keepAliveUntil) { + if (System.nanoTime() > protocolState.keepAliveUntil) { hci.closeMasterService(protocolState); protocolState.keepAliveUntil = Long.MAX_VALUE; } @@ -1599,7 +1599,7 @@ public class HConnectionManager { protected void chore() { synchronized (hci.masterAndZKLock) { if (hci.canCloseZKW) { - if (System.currentTimeMillis() > + if (System.nanoTime() > hci.keepZooKeeperWatcherAliveUntil) { hci.closeZooKeeperWatcher(); @@ -1930,7 +1930,7 @@ public class HConnectionManager { synchronized (masterAndZKLock) { --mss.userCount; if (mss.userCount <= 0) { - mss.keepAliveUntil = System.currentTimeMillis() + keepAlive; + mss.keepAliveUntil = System.nanoTime() + keepAlive; } } } @@ -2377,11 +2377,11 @@ public class HConnectionManager { public ServerErrorTracker(long timeout) { LOG.trace("Server tracker timeout is " + timeout + "ms"); - this.canRetryUntil = EnvironmentEdgeManager.currentTimeMillis() + timeout; + this.canRetryUntil = EnvironmentEdgeManager.nanoTime() + timeout; } boolean canRetryMore() { - return EnvironmentEdgeManager.currentTimeMillis() < this.canRetryUntil; + return EnvironmentEdgeManager.nanoTime() < this.canRetryUntil; } /** @@ -2397,7 +2397,7 @@ public class HConnectionManager { if (errorStats != null) { result = ConnectionUtils.getPauseTime(basePause, errorStats.retries); // Adjust by the time we already waited since last talking to this server. - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); long timeSinceLastError = now - errorStats.getLastErrorTime(); if (timeSinceLastError > 0) { result = Math.max(0, result - timeSinceLastError); @@ -2432,12 +2432,12 @@ public class HConnectionManager { public int retries; public ServerErrors() { - this.lastErrorTime = EnvironmentEdgeManager.currentTimeMillis(); + this.lastErrorTime = EnvironmentEdgeManager.nanoTime(); this.retries = 0; } public void addError() { - this.lastErrorTime = EnvironmentEdgeManager.currentTimeMillis(); + this.lastErrorTime = EnvironmentEdgeManager.nanoTime(); ++this.retries; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java index 0685d7f..85682c8 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java @@ -467,7 +467,7 @@ public class HTableMultiplexer { int failedCount = 0; while (true) { try { - start = elapsed = EnvironmentEdgeManager.currentTimeMillis(); + start = elapsed = EnvironmentEdgeManager.nanoTime(); // Clear the processingList, putToStatusMap and failedCount processingList.clear(); @@ -527,7 +527,7 @@ public class HTableMultiplexer { // Update the totalFailedCount this.totalFailedPutCount.addAndGet(failedCount); - elapsed = EnvironmentEdgeManager.currentTimeMillis() - start; + elapsed = EnvironmentEdgeManager.nanoTime() - start; // Update latency counters averageLatency.add(elapsed); if (elapsed > maxLatency.get()) { @@ -548,7 +548,7 @@ public class HTableMultiplexer { // Sleep for a while if (elapsed == start) { - elapsed = EnvironmentEdgeManager.currentTimeMillis() - start; + elapsed = EnvironmentEdgeManager.nanoTime() - start; } if (elapsed < frequency) { Thread.sleep(frequency - elapsed); diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java index dad125a..0f9b026 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java @@ -165,12 +165,12 @@ public class ScannerCallable extends ServerCallable { // as the last successfully retrieved row. // See HBASE-5974 nextCallSeq++; - long timestamp = System.currentTimeMillis(); + long timestamp = System.nanoTime(); // Results are returned via controller CellScanner cellScanner = controller.cellScanner(); rrs = ResponseConverter.getResults(cellScanner, response); if (logScannerActivity) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); if (now - timestamp > logCutOffLatency) { int rows = rrs == null ? 0 : rrs.length; LOG.info("Took " + (now-timestamp) + "ms to fetch " diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java index e9bfff9..a3e4285 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java @@ -126,7 +126,7 @@ public abstract class ServerCallable implements Callable { } public void beforeCall() { - this.startTime = EnvironmentEdgeManager.currentTimeMillis(); + this.startTime = EnvironmentEdgeManager.nanoTime(); int remaining = (int)(callTimeout - (this.startTime - this.globalStartTime)); if (remaining < MIN_RPC_TIMEOUT) { // If there is no time left, we're trying anyway. It's too late. @@ -139,7 +139,7 @@ public abstract class ServerCallable implements Callable { public void afterCall() { RpcClient.resetRpcTimeout(); - this.endTime = EnvironmentEdgeManager.currentTimeMillis(); + this.endTime = EnvironmentEdgeManager.nanoTime(); } /** @@ -166,7 +166,7 @@ public abstract class ServerCallable implements Callable { HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER); List exceptions = new ArrayList(); - this.globalStartTime = EnvironmentEdgeManager.currentTimeMillis(); + this.globalStartTime = EnvironmentEdgeManager.nanoTime(); for (int tries = 0;; tries++) { long expectedSleep = 0; try { @@ -175,7 +175,7 @@ public abstract class ServerCallable implements Callable { return call(); } catch (Throwable t) { LOG.warn("Call exception, tries=" + tries + ", numRetries=" + numRetries + ", retryTime=" + - (this.globalStartTime - System.currentTimeMillis()) + "ms", t); + (this.globalStartTime - System.nanoTime()) + "ms", t); t = translateException(t); // translateException throws an exception when we should not retry, i.e. when it's the @@ -199,7 +199,7 @@ public abstract class ServerCallable implements Callable { RetriesExhaustedException.ThrowableWithExtraContext qt = new RetriesExhaustedException.ThrowableWithExtraContext(t, - EnvironmentEdgeManager.currentTimeMillis(), toString()); + EnvironmentEdgeManager.nanoTime(), toString()); exceptions.add(qt); if (tries >= numRetries - 1) { throw new RetriesExhaustedException(tries, exceptions); @@ -252,7 +252,7 @@ public abstract class ServerCallable implements Callable { public T withoutRetries() throws IOException, RuntimeException { // The code of this method should be shared with withRetries. - this.globalStartTime = EnvironmentEdgeManager.currentTimeMillis(); + this.globalStartTime = EnvironmentEdgeManager.nanoTime(); try { beforeCall(); prepare(false); diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java index 6171ab2..ba876bf 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java @@ -167,7 +167,7 @@ public class RpcClient { * Add an address to the list of the failed servers list. */ public synchronized void addToFailedServers(InetSocketAddress address) { - final long expiry = EnvironmentEdgeManager.currentTimeMillis() + recheckServersTimeout; + final long expiry = EnvironmentEdgeManager.nanoTime() + recheckServersTimeout; failedServers.addFirst(new Pair(expiry, address.toString())); } @@ -182,7 +182,7 @@ public class RpcClient { } final String lookup = address.toString(); - final long now = EnvironmentEdgeManager.currentTimeMillis(); + final long now = EnvironmentEdgeManager.nanoTime(); // iterate, looking for the search entry and cleaning expired entries Iterator> it = failedServers.iterator(); @@ -269,7 +269,7 @@ public class RpcClient { this.param = param; this.md = md; this.cells = cells; - this.startTime = System.currentTimeMillis(); + this.startTime = System.nanoTime(); this.responseDefaultType = responseDefaultType; synchronized (RpcClient.this) { this.id = counter++; @@ -455,7 +455,7 @@ public class RpcClient { /** Update lastActivity with the current time. */ protected void touch() { - lastActivity.set(System.currentTimeMillis()); + lastActivity.set(System.nanoTime()); } /** @@ -651,7 +651,7 @@ public class RpcClient { */ protected synchronized boolean waitForWork() { if (calls.isEmpty() && !shouldCloseConnection.get() && running.get()) { - long timeout = maxIdleTime - (System.currentTimeMillis()-lastActivity.get()); + long timeout = maxIdleTime - (System.nanoTime()-lastActivity.get()); if (timeout>0) { try { wait(timeout); @@ -682,7 +682,7 @@ public class RpcClient { */ protected synchronized void sendPing() throws IOException { // Can we do tcp keepalive instead of this pinging? - long curTime = System.currentTimeMillis(); + long curTime = System.nanoTime(); if ( curTime - lastActivity.get() >= pingInterval) { lastActivity.set(curTime); //noinspection SynchronizeOnNonFinalField @@ -1138,7 +1138,7 @@ public class RpcClient { Iterator> itor = calls.entrySet().iterator(); while (itor.hasNext()) { Call c = itor.next().getValue(); - long waitTime = System.currentTimeMillis() - c.getStartTime(); + long waitTime = System.nanoTime() - c.getStartTime(); if (waitTime >= rpcTimeout) { if (this.closeException == null) { // There may be no exception in the case that there are many calls @@ -1162,7 +1162,7 @@ public class RpcClient { try { if (!calls.isEmpty()) { Call firstCall = calls.get(calls.firstKey()); - long maxWaitTime = System.currentTimeMillis() - firstCall.getStartTime(); + long maxWaitTime = System.nanoTime() - firstCall.getStartTime(); if (maxWaitTime < rpcTimeout) { rpcTimeout -= maxWaitTime; } @@ -1559,7 +1559,7 @@ public class RpcClient { throws ServiceException { long startTime = 0; if (LOG.isTraceEnabled()) { - startTime = System.currentTimeMillis(); + startTime = System.nanoTime(); } PayloadCarryingRpcController pcrc = (PayloadCarryingRpcController)controller; CellScanner cells = null; @@ -1579,7 +1579,7 @@ public class RpcClient { } if (LOG.isTraceEnabled()) { - long callTime = System.currentTimeMillis() - startTime; + long callTime = System.nanoTime() - startTime; if (LOG.isTraceEnabled()) { LOG.trace("Call: " + md.getName() + ", callTime: " + callTime + "ms"); } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/master/RegionState.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/master/RegionState.java index 62b4e9c..4dc471e 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/master/RegionState.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/master/RegionState.java @@ -59,11 +59,11 @@ public class RegionState implements org.apache.hadoop.io.Writable { private volatile State state; public RegionState() { - this.stamp = new AtomicLong(System.currentTimeMillis()); + this.stamp = new AtomicLong(System.nanoTime()); } public RegionState(HRegionInfo region, State state) { - this(region, state, System.currentTimeMillis(), null); + this(region, state, System.nanoTime(), null); } public RegionState(HRegionInfo region, @@ -75,7 +75,7 @@ public class RegionState implements org.apache.hadoop.io.Writable { } public void updateTimestampToNow() { - setTimestamp(System.currentTimeMillis()); + setTimestamp(System.nanoTime()); } public State getState() { @@ -167,7 +167,7 @@ public class RegionState implements org.apache.hadoop.io.Writable { */ public String toDescriptiveString() { long lstamp = stamp.get(); - long relTime = System.currentTimeMillis() - lstamp; + long relTime = System.nanoTime() - lstamp; return hri.getRegionNameAsString() + " state=" + state diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/util/Sleeper.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/util/Sleeper.java index de84646..dab368a 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/util/Sleeper.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/util/Sleeper.java @@ -55,7 +55,7 @@ public class Sleeper { * Sleep for period. */ public void sleep() { - sleep(System.currentTimeMillis()); + sleep(System.nanoTime()); } /** @@ -78,11 +78,11 @@ public class Sleeper { if (this.stopper.isStopped()) { return; } - long now = System.currentTimeMillis(); + long now = System.nanoTime(); long waitTime = this.period - (now - startTime); if (waitTime > this.period) { LOG.warn("Calculated wait time > " + this.period + - "; setting to this.period: " + System.currentTimeMillis() + ", " + + "; setting to this.period: " + System.nanoTime() + ", " + startTime); waitTime = this.period; } @@ -93,7 +93,7 @@ public class Sleeper { if (triggerWake) break; sleepLock.wait(waitTime); } - woke = System.currentTimeMillis(); + woke = System.nanoTime(); long slept = woke - now; if (slept - this.period > MINIMAL_DELTA_FOR_LOGGING) { LOG.warn("We slept " + slept + "ms instead of " + this.period + @@ -109,7 +109,7 @@ public class Sleeper { } } // Recalculate waitTime. - woke = (woke == -1)? System.currentTimeMillis(): woke; + woke = (woke == -1)? System.nanoTime(): woke; waitTime = this.period - (woke - startTime); } triggerWake = false; diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java index de3eedd..f7ebf2e 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java @@ -1759,7 +1759,7 @@ public class ZKUtil { byte[] data = null; boolean finished = false; - final long endTime = System.currentTimeMillis() + timeout; + final long endTime = System.nanoTime() + timeout; while (!finished) { try { data = ZKUtil.getData(zkw, znode); @@ -1767,7 +1767,7 @@ public class ZKUtil { LOG.warn("Unexpected exception handling blockUntilAvailable", e); } - if (data == null && (System.currentTimeMillis() + + if (data == null && (System.nanoTime() + HConstants.SOCKET_RETRY_WAIT_MS < endTime)) { Thread.sleep(HConstants.SOCKET_RETRY_WAIT_MS); } else { diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java index 907fe76..4c19117 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java @@ -120,7 +120,7 @@ public abstract class ZooKeeperNodeTracker extends ZooKeeperListener { throws InterruptedException { if (timeout < 0) throw new IllegalArgumentException(); boolean notimeout = timeout == 0; - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); long remaining = timeout; if (refresh) { try { @@ -159,7 +159,7 @@ public abstract class ZooKeeperNodeTracker extends ZooKeeperListener { // We expect a notification; but we wait with a // a timeout to lower the impact of a race condition if any wait(100); - remaining = timeout - (System.currentTimeMillis() - startTime); + remaining = timeout - (System.nanoTime() - startTime); } return this.data; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java index d10dd7c..e8d6275 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java @@ -366,9 +366,9 @@ public class ZooKeeperWatcher implements Watcher, Abortable, Closeable { case SyncConnected: // Now, this callback can be invoked before the this.zookeeper is set. // Wait a little while. - long finished = System.currentTimeMillis() + + long finished = System.nanoTime() + this.conf.getLong("hbase.zookeeper.watcher.sync.connected.wait", 2000); - while (System.currentTimeMillis() < finished) { + while (System.nanoTime() < finished) { Threads.sleep(1); if (this.recoverableZooKeeper != null) break; } diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncProcess.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncProcess.java index bd277af..607e390 100644 --- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncProcess.java +++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncProcess.java @@ -384,9 +384,9 @@ public class TestAsyncProcess { }; t2.start(); - long start = System.currentTimeMillis(); + long start = System.nanoTime(); ap.submit(new ArrayList(), false); - long end = System.currentTimeMillis(); + long end = System.nanoTime(); //Adds 100 to secure us against approximate timing. Assert.assertTrue(start + 100L + sleepTime > end); @@ -602,14 +602,14 @@ public class TestAsyncProcess { ht.setAutoFlush(false); ht.put(p); - long start = System.currentTimeMillis(); + long start = System.nanoTime(); try { ht.flushCommits(); Assert.fail(); } catch (RetriesExhaustedWithDetailsException expected) { } // Checking that the ErrorsServers came into play and made us stop immediately - Assert.assertTrue((System.currentTimeMillis() - start) < 10000); + Assert.assertTrue((System.nanoTime() - start) < 10000); } diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java index 5b10edb..3d6b252 100644 --- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java +++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java @@ -102,9 +102,9 @@ public class TestSnapshotFromAdmin { String snapshot = "snapshot"; String table = "table"; // get start time - long start = System.currentTimeMillis(); + long start = System.nanoTime(); admin.snapshot(snapshot, table); - long finish = System.currentTimeMillis(); + long finish = System.nanoTime(); long elapsed = (finish - start); assertTrue("Elapsed time:" + elapsed + " is more than expected max:" + time, elapsed <= time); admin.close(); diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java index 3a65fc5..5cca058 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java @@ -164,7 +164,7 @@ public class CoprocessorClassLoader extends ClassLoaderBase { FileSystem fs = path.getFileSystem(conf); File dst = new File(parentDirStr, "." + pathPrefix + "." - + path.getName() + "." + System.currentTimeMillis() + ".jar"); + + path.getName() + "." + System.nanoTime() + ".jar"); fs.copyToLocalFile(path, new Path(dst.toString())); dst.deleteOnExit(); @@ -178,7 +178,7 @@ public class CoprocessorClassLoader extends ClassLoaderBase { Matcher m = libJarPattern.matcher(entry.getName()); if (m.matches()) { File file = new File(parentDirStr, "." + pathPrefix + "." - + path.getName() + "." + System.currentTimeMillis() + "." + m.group(1)); + + path.getName() + "." + System.nanoTime() + "." + m.group(1)); IOUtils.copyBytes(jarFile.getInputStream(entry), new FileOutputStream(file), conf, true); file.deleteOnExit(); diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java index 9c92024..f3b2138 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java @@ -32,10 +32,10 @@ public class DefaultEnvironmentEdge implements EnvironmentEdge { /** * {@inheritDoc} *

- * This implementation returns {@link System#currentTimeMillis()} + * This implementation returns {@link System#nanoTime()} */ @Override - public long currentTimeMillis() { - return System.currentTimeMillis(); + public long nanoTime() { + return System.nanoTime(); } } diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java index 7f80844..b9b462f 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java @@ -32,9 +32,9 @@ import org.apache.hadoop.classification.InterfaceStability; public interface EnvironmentEdge { /** - * Returns the currentTimeMillis. + * Returns the nanoTime. * - * @return currentTimeMillis. + * @return nanoTime. */ - long currentTimeMillis(); + long nanoTime(); } diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java index 0a9c40b..3126352 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java @@ -69,11 +69,11 @@ public class EnvironmentEdgeManager { /** * Defers to the delegate and calls the - * {@link EnvironmentEdge#currentTimeMillis()} method. + * {@link EnvironmentEdge#nanoTime()} method. * * @return current time in millis according to the delegate. */ - public static long currentTimeMillis() { - return getDelegate().currentTimeMillis(); + public static long nanoTime() { + return getDelegate().nanoTime(); } } diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/IncrementingEnvironmentEdge.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/IncrementingEnvironmentEdge.java index c1ce25c..41d8490 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/IncrementingEnvironmentEdge.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/IncrementingEnvironmentEdge.java @@ -29,10 +29,10 @@ public class IncrementingEnvironmentEdge implements EnvironmentEdge { private long timeIncrement; /** - * Construct an incremental edge starting from currentTimeMillis + * Construct an incremental edge starting from nanoTime */ public IncrementingEnvironmentEdge() { - this(System.currentTimeMillis()); + this(System.nanoTime()); } /** @@ -50,7 +50,7 @@ public class IncrementingEnvironmentEdge implements EnvironmentEdge { * method is called. The first value is 1. */ @Override - public synchronized long currentTimeMillis() { + public synchronized long nanoTime() { return timeIncrement++; } diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java index d27dce2..9fe0e59 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java @@ -145,7 +145,7 @@ public class Threads { * @param msToWait the amount of time to sleep in milliseconds */ public static void sleepWithoutInterrupt(final long msToWait) { - long timeMillis = System.currentTimeMillis(); + long timeMillis = System.nanoTime(); long endTime = timeMillis + msToWait; boolean interrupted = false; while (timeMillis < endTime) { @@ -154,7 +154,7 @@ public class Threads { } catch (InterruptedException ex) { interrupted = true; } - timeMillis = System.currentTimeMillis(); + timeMillis = System.nanoTime(); } if (interrupted) { diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestKeyValue.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestKeyValue.java index 3381db6..897432e 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestKeyValue.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestKeyValue.java @@ -129,7 +129,7 @@ public class TestKeyValue extends TestCase { public void testMoreComparisons() throws Exception { // Root compares - long now = System.currentTimeMillis(); + long now = System.nanoTime(); KeyValue a = new KeyValue(Bytes.toBytes(".META.,,99999999999999"), now); KeyValue b = new KeyValue(Bytes.toBytes(".META.,,1"), now); KVComparator c = new KeyValue.RootComparator(); @@ -168,7 +168,7 @@ public class TestKeyValue extends TestCase { public void testBadMetaCompareSingleDelim() { MetaComparator c = new KeyValue.MetaComparator(); - long now = System.currentTimeMillis(); + long now = System.nanoTime(); // meta keys values are not quite right. A users can enter illegal values // from shell when scanning meta. KeyValue a = new KeyValue(Bytes.toBytes("table,a1"), now); @@ -185,7 +185,7 @@ public class TestKeyValue extends TestCase { public void testMetaComparatorTableKeysWithCommaOk() { MetaComparator c = new KeyValue.MetaComparator(); - long now = System.currentTimeMillis(); + long now = System.nanoTime(); // meta keys values are not quite right. A users can enter illegal values // from shell when scanning meta. KeyValue a = new KeyValue(Bytes.toBytes("table,key,with,commas1,1234"), now); @@ -221,7 +221,7 @@ public class TestKeyValue extends TestCase { } private void metacomparisons(final KeyValue.MetaComparator c) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); assertTrue(c.compare(new KeyValue(Bytes.toBytes(".META.,a,,0,1"), now), new KeyValue(Bytes.toBytes(".META.,a,,0,1"), now)) == 0); KeyValue a = new KeyValue(Bytes.toBytes(".META.,a,,0,1"), now); @@ -232,7 +232,7 @@ public class TestKeyValue extends TestCase { } private void comparisons(final KeyValue.KVComparator c) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); assertTrue(c.compare(new KeyValue(Bytes.toBytes(".META.,,1"), now), new KeyValue(Bytes.toBytes(".META.,,1"), now)) == 0); assertTrue(c.compare(new KeyValue(Bytes.toBytes(".META.,,1"), now), diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/Waiter.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/Waiter.java index 002838f..c54d866 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/Waiter.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/Waiter.java @@ -162,7 +162,7 @@ public final class Waiter { */ public static long waitFor(Configuration conf, long timeout, long interval, boolean failIfTimeout, Predicate predicate) throws E { - long started = System.currentTimeMillis(); + long started = System.nanoTime(); long adjustedTimeout = (long) (getWaitForRatio(conf) * timeout); long mustEnd = started + adjustedTimeout; long remainderWait = 0; @@ -174,7 +174,7 @@ public final class Waiter { LOG.info(MessageFormat.format("Waiting up to [{0}] milli-secs(wait.for.ratio=[{1}])", adjustedTimeout, getWaitForRatio(conf))); while (!(eval = predicate.evaluate()) - && (remainderWait = mustEnd - System.currentTimeMillis()) > 0) { + && (remainderWait = mustEnd - System.nanoTime()) > 0) { try { // handle tail case when remainder wait is less than one interval sleepInterval = (remainderWait > interval) ? interval : remainderWait; @@ -188,14 +188,14 @@ public final class Waiter { if (!eval) { if (interrupted) { LOG.warn(MessageFormat.format("Waiting interrupted after [{0}] msec", - System.currentTimeMillis() - started)); + System.nanoTime() - started)); } else if (failIfTimeout) { Assert.fail(MessageFormat.format("Waiting timed out after [{0}] msec", adjustedTimeout)); } else { LOG.warn(MessageFormat.format("Waiting timed out after [{0}] msec", adjustedTimeout)); } } - return (eval || interrupted) ? (System.currentTimeMillis() - started) : -1; + return (eval || interrupted) ? (System.nanoTime() - started) : -1; } catch (Exception ex) { throw new RuntimeException(ex); } diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java index 9a21802..0b10cc9 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java @@ -288,7 +288,7 @@ public class TestBytes extends TestCase { public void testToStringBytesBinaryReversible() { // let's run test with 1000 randomly generated byte arrays - Random rand = new Random(System.currentTimeMillis()); + Random rand = new Random(System.nanoTime()); byte[] randomBytes = new byte[1000]; for (int i = 0; i < 1000; i++) { rand.nextBytes(randomBytes); diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestEnvironmentEdgeManager.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestEnvironmentEdgeManager.java index 13e42fb..4c53266 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestEnvironmentEdgeManager.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestEnvironmentEdgeManager.java @@ -58,9 +58,9 @@ public class TestEnvironmentEdgeManager { EnvironmentEdge mock = mock(EnvironmentEdge.class); EnvironmentEdgeManager.injectEdge(mock); long expectation = 3456; - when(mock.currentTimeMillis()).thenReturn(expectation); - long result = EnvironmentEdgeManager.currentTimeMillis(); - verify(mock).currentTimeMillis(); + when(mock.nanoTime()).thenReturn(expectation); + long result = EnvironmentEdgeManager.nanoTime(); + verify(mock).nanoTime(); assertEquals(expectation, result); } diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestThreads.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestThreads.java index 24837af..096b7e1 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestThreads.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestThreads.java @@ -50,7 +50,7 @@ public class TestThreads { }); LOG.debug("Starting sleeper thread (" + SLEEP_TIME_MS + " ms)"); sleeper.start(); - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); LOG.debug("Main thread: sleeping for 200 ms"); Threads.sleep(200); @@ -69,7 +69,7 @@ public class TestThreads { assertTrue("sleepWithoutInterrupt did not preserve the thread's " + "interrupted status", wasInterrupted.get()); - long timeElapsed = System.currentTimeMillis() - startTime; + long timeElapsed = System.nanoTime() - startTime; // We expect to wait at least SLEEP_TIME_MS, but we can wait more if there is a GC. assertTrue("Elapsed time " + timeElapsed + " ms is out of the expected " + " sleep time of " + SLEEP_TIME_MS, SLEEP_TIME_MS - timeElapsed < TOLERANCE_MS); diff --git a/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java b/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java index ef32dce..e41edd3 100644 --- a/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java +++ b/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java @@ -96,7 +96,7 @@ public class ZooKeeperScanPolicyObserver extends BaseRegionObserver { @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="REC_CATCH_EXCEPTION") public byte[] getData() { // try at most twice/minute - if (needSetup && EnvironmentEdgeManager.currentTimeMillis() > lastSetupTry + 30000) { + if (needSetup && EnvironmentEdgeManager.nanoTime() > lastSetupTry + 30000) { synchronized (this) { // make sure only one thread tries to reconnect if (needSetup) { @@ -110,7 +110,7 @@ public class ZooKeeperScanPolicyObserver extends BaseRegionObserver { try { LOG.debug("Connecting to ZK"); // record this attempt - lastSetupTry = EnvironmentEdgeManager.currentTimeMillis(); + lastSetupTry = EnvironmentEdgeManager.nanoTime(); if (zk.exists(node, false) != null) { data = zk.getData(node, this, null); LOG.debug("Read synchronously: "+(data == null ? "null" : Bytes.toLong(data))); @@ -184,7 +184,7 @@ public class ZooKeeperScanPolicyObserver extends BaseRegionObserver { if (oldSI.getTtl() == Long.MAX_VALUE) { return null; } - long ttl = Math.max(EnvironmentEdgeManager.currentTimeMillis() - + long ttl = Math.max(EnvironmentEdgeManager.nanoTime() - Bytes.toLong(data), oldSI.getTtl()); return new ScanInfo(store.getFamily(), ttl, oldSI.getTimeToPurgeDeletes(), oldSI.getComparator()); diff --git a/hbase-examples/src/test/java/org/apache/hadoop/hbase/coprocessor/example/TestZooKeeperScanPolicyObserver.java b/hbase-examples/src/test/java/org/apache/hadoop/hbase/coprocessor/example/TestZooKeeperScanPolicyObserver.java index 755acbf..eb8ad1e 100644 --- a/hbase-examples/src/test/java/org/apache/hadoop/hbase/coprocessor/example/TestZooKeeperScanPolicyObserver.java +++ b/hbase-examples/src/test/java/org/apache/hadoop/hbase/coprocessor/example/TestZooKeeperScanPolicyObserver.java @@ -78,7 +78,7 @@ public class TestZooKeeperScanPolicyObserver { desc.addFamily(hcd); TEST_UTIL.getHBaseAdmin().createTable(desc); HTable t = new HTable(new Configuration(TEST_UTIL.getConfiguration()), tableName); - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); ZooKeeperWatcher zkw = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(), "test", null); ZooKeeper zk = zkw.getRecoverableZooKeeper().getZooKeeper(); diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java index 02aa504..ad0392c 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java @@ -125,9 +125,9 @@ public class DistributedHBaseCluster extends HBaseCluster { private void waitForServiceToStop(ServiceType service, ServerName serverName, long timeout) throws IOException { LOG.info("Waiting service:" + service + " to stop: " + serverName.getServerName()); - long start = System.currentTimeMillis(); + long start = System.nanoTime(); - while ((System.currentTimeMillis() - start) < timeout) { + while ((System.nanoTime() - start) < timeout) { if (!clusterManager.isRunning(service, serverName.getHostname())) { return; } @@ -175,8 +175,8 @@ public class DistributedHBaseCluster extends HBaseCluster { @Override public boolean waitForActiveAndReadyMaster(long timeout) throws IOException { - long start = System.currentTimeMillis(); - while (System.currentTimeMillis() - start < timeout) { + long start = System.nanoTime(); + while (System.nanoTime() - start < timeout) { try { getMasterAdmin(); return true; diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IngestIntegrationTestBase.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IngestIntegrationTestBase.java index 5892ccd..d55b7cb 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IngestIntegrationTestBase.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IngestIntegrationTestBase.java @@ -91,15 +91,15 @@ public abstract class IngestIntegrationTestBase { LOG.info("Running ingest"); LOG.info("Cluster size:" + util.getHBaseClusterInterface().getClusterStatus().getServersSize()); - long start = System.currentTimeMillis(); + long start = System.nanoTime(); String runtimeKey = String.format(RUN_TIME_KEY, this.getClass().getSimpleName()); long runtime = util.getConfiguration().getLong(runtimeKey, defaultRunTime); long startKey = 0; long numKeys = getNumKeys(keysPerServerPerIter); - while (System.currentTimeMillis() - start < 0.9 * runtime) { + while (System.nanoTime() - start < 0.9 * runtime) { LOG.info("Intended run time: " + (runtime/60000) + " min, left:" + - ((runtime - (System.currentTimeMillis() - start))/60000) + " min"); + ((runtime - (System.nanoTime() - start))/60000) + " min"); int ret = loadTool.run(new String[] { "-tn", tableName, diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.java index 25c9c89..33f3fb6 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.java @@ -233,7 +233,7 @@ public class IntegrationTestLazyCfLoading { writer.start(1, keysToWrite, WRITER_THREADS); // Now, do scans. - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); long timeLimit = now + (maxRuntime * 60000); boolean isWriterDone = false; while (now < timeLimit && !isWriterDone) { @@ -253,7 +253,7 @@ public class IntegrationTestLazyCfLoading { // Not a strict lower bound - writer knows nothing about filters, so we report // this from generator. Writer might have generated the value but not put it yet. long onesGennedBeforeScan = dataGen.getExpectedNumberOfKeys(); - long startTs = EnvironmentEdgeManager.currentTimeMillis(); + long startTs = EnvironmentEdgeManager.nanoTime(); ResultScanner results = table.getScanner(scan); long resultCount = 0; Result result = null; @@ -263,7 +263,7 @@ public class IntegrationTestLazyCfLoading { Assert.assertTrue("Failed to verify [" + Bytes.toString(result.getRow())+ "]", isOk); ++resultCount; } - long timeTaken = EnvironmentEdgeManager.currentTimeMillis() - startTs; + long timeTaken = EnvironmentEdgeManager.nanoTime() - startTs; // Verify the result count. long onesGennedAfterScan = dataGen.getExpectedNumberOfKeys(); Assert.assertTrue("Read " + resultCount + " keys when at most " + onesGennedAfterScan @@ -278,7 +278,7 @@ public class IntegrationTestLazyCfLoading { LOG.info("Scan took " + timeTaken + "ms"); if (!isWriterDone) { Thread.sleep(WAIT_BETWEEN_SCANS_MS); - now = EnvironmentEdgeManager.currentTimeMillis(); + now = EnvironmentEdgeManager.nanoTime(); } } Assert.assertEquals("There are write failures", 0, writer.getNumWriteFailures()); diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestManyRegions.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestManyRegions.java index d3d4aad..3f04764 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestManyRegions.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestManyRegions.java @@ -144,10 +144,10 @@ public class IntegrationTestManyRegions { LOG.info(String.format("Creating table %s with %d splits.", TABLE_NAME, REGION_COUNT)); - startTime = System.currentTimeMillis(); + startTime = System.nanoTime(); try { admin.createTable(desc, splits); - endTime = System.currentTimeMillis(); + endTime = System.nanoTime(); success = true; LOG.info(String.format("Pre-split table created successfully in %dms.", (endTime - startTime))); diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java index 8b5c934..c6cbbf2 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java @@ -158,7 +158,7 @@ public class IntegrationTestBulkLoad implements Configurable, Tool { private void runLinkedListMRJob(int iteration) throws Exception { String jobName = IntegrationTestBulkLoad.class.getSimpleName() + " - " + - EnvironmentEdgeManager.currentTimeMillis(); + EnvironmentEdgeManager.nanoTime(); Configuration conf = new Configuration(util.getConfiguration()); Path p = util.getDataTestDirOnTestFS(tableName + "-" + iteration); HTable table = new HTable(conf, tableName); @@ -532,7 +532,7 @@ public class IntegrationTestBulkLoad implements Configurable, Tool { */ private void runCheck() throws IOException, ClassNotFoundException, InterruptedException { Configuration conf = getConf(); - String jobName = tableName + "_check" + EnvironmentEdgeManager.currentTimeMillis(); + String jobName = tableName + "_check" + EnvironmentEdgeManager.nanoTime(); Path p = util.getDataTestDirOnTestFS(jobName); Job job = new Job(conf); diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java index a3a26d6..b5c2773 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java @@ -891,9 +891,9 @@ public class IntegrationTestBigLinkedList extends Configured implements Tool { numQueries++; while (node != null && node.prev.length != NO_KEY.length && numQueries < maxQueries) { byte[] prev = node.prev; - long t1 = System.currentTimeMillis(); + long t1 = System.nanoTime(); node = getNode(prev, table, node); - long t2 = System.currentTimeMillis(); + long t2 = System.nanoTime(); if (numQueries % logEvery == 0) { System.out.printf("CQ %d: %d %s \n", numQueries, t2 - t1, Bytes.toStringBinary(prev)); } @@ -916,10 +916,10 @@ public class IntegrationTestBigLinkedList extends Configured implements Tool { scan.setBatch(1); scan.addColumn(FAMILY_NAME, COLUMN_PREV); - long t1 = System.currentTimeMillis(); + long t1 = System.nanoTime(); ResultScanner scanner = table.getScanner(scan); Result result = scanner.next(); - long t2 = System.currentTimeMillis(); + long t2 = System.nanoTime(); scanner.close(); if ( result != null) { diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.java index 3bf7f24..2b7191c 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.java @@ -370,14 +370,14 @@ public class IntegrationTestLoadAndVerify extends Configured implements Tool { System.out.print("Disabling table " + htd.getNameAsString() +" "); admin.disableTableAsync(htd.getName()); - long start = System.currentTimeMillis(); + long start = System.nanoTime(); // NOTE tables can be both admin.isTableEnabled=false and // isTableDisabled=false, when disabling must use isTableDisabled! while (!admin.isTableDisabled(htd.getName())) { System.out.print("."); Thread.sleep(1000); } - long delta = System.currentTimeMillis() - start; + long delta = System.nanoTime() - start; System.out.println(" " + delta +" ms"); System.out.println("Deleting table " + htd.getNameAsString() +" "); admin.deleteTable(htd.getName()); diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/util/ChaosMonkey.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/util/ChaosMonkey.java index 48a291f..e6f44f5 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/util/ChaosMonkey.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/util/ChaosMonkey.java @@ -540,11 +540,11 @@ public class ChaosMonkey extends AbstractHBaseTool implements Stoppable { Threads.sleep(jitter); while (!isStopped()) { - long start = System.currentTimeMillis(); + long start = System.nanoTime(); runOneIteration(); if (isStopped()) return; - long sleepTime = periodMs - (System.currentTimeMillis() - start); + long sleepTime = periodMs - (System.nanoTime() - start); if (sleepTime > 0) { LOG.info("Sleeping for: " + sleepTime); Threads.sleep(sleepTime); diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.jamon index b4a5fea..ad86df4 100644 --- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.jamon +++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.jamon @@ -48,7 +48,7 @@ while (iter.hasNext()) { iter.remove(); } } -long now = System.currentTimeMillis(); +long now = System.nanoTime(); Collections.reverse(tasks); boolean first = true; diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon index 08ed672..9406273 100644 --- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon +++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon @@ -38,7 +38,7 @@ Configuration conf = HBaseConfiguration.create(); int ritThreshold = conf.getInt(HConstants.METRICS_RIT_STUCK_WARNING_THRESHOLD, 60000); int numOfRITOverThreshold = 0; long maxRITTime = Long.MIN_VALUE; -long currentTime = System.currentTimeMillis(); +long currentTime = System.nanoTime(); String regionIDForOldestRIT = ""; // avoiding null for (Map.Entry e : rit.entrySet()) { long ritTime = currentTime - e.getValue().getStamp(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/HealthCheckChore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/HealthCheckChore.java index 4226c3f..dbbe0e7 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/HealthCheckChore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/HealthCheckChore.java @@ -62,7 +62,7 @@ import org.apache.hadoop.util.StringUtils; + " number of times consecutively."); } // Always log health report. - LOG.info("Health status at " + StringUtils.formatTime(System.currentTimeMillis()) + " : " + LOG.info("Health status at " + StringUtils.formatTime(System.nanoTime()) + " : " + report.getHealthReport()); } } @@ -73,9 +73,9 @@ import org.apache.hadoop.util.StringUtils; // First time we are seeing a failure. No need to stop, just // record the time. numTimesUnhealthy++; - startWindow = System.currentTimeMillis(); + startWindow = System.nanoTime(); } else { - if ((System.currentTimeMillis() - startWindow) < failureWindow) { + if ((System.nanoTime() - startWindow) < failureWindow) { numTimesUnhealthy++; if (numTimesUnhealthy == threshold) { stop = true; @@ -85,7 +85,7 @@ import org.apache.hadoop.util.StringUtils; } else { // Outside of failure window, so we reset to 1. numTimesUnhealthy = 1; - startWindow = System.currentTimeMillis(); + startWindow = System.nanoTime(); stop = false; } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/HFileArchiver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/HFileArchiver.java index e9a6605..1fa12ec 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/HFileArchiver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/HFileArchiver.java @@ -254,7 +254,7 @@ public class HFileArchiver { } // do the actual archive - long start = EnvironmentEdgeManager.currentTimeMillis(); + long start = EnvironmentEdgeManager.nanoTime(); File file = new FileablePath(fs, storeFile); if (!resolveAndArchiveFile(storeArchiveDir, file, Long.toString(start))) { throw new IOException("Failed to archive/delete the file for region:" @@ -279,7 +279,7 @@ public class HFileArchiver { private static boolean resolveAndArchive(FileSystem fs, Path baseArchiveDir, Collection toArchive) throws IOException { if (LOG.isTraceEnabled()) LOG.trace("Starting to archive files:" + toArchive); - long start = EnvironmentEdgeManager.currentTimeMillis(); + long start = EnvironmentEdgeManager.nanoTime(); List failures = resolveAndArchive(fs, baseArchiveDir, toArchive, start); // notify that some files were not archived. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.java index 9f40cbf..2692891 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.java @@ -64,7 +64,7 @@ public class TimeoutExceptionInjector { // mark the task is run, to avoid repeats TimeoutExceptionInjector.this.complete = true; } - long end = EnvironmentEdgeManager.currentTimeMillis(); + long end = EnvironmentEdgeManager.nanoTime(); TimeoutException tee = new TimeoutException( "Timeout caused Foreign Exception", start, end, maxTime); String source = "timer-" + timer; @@ -108,7 +108,7 @@ public class TimeoutExceptionInjector { } LOG.debug("Scheduling process timer to run in: " + maxTime + " ms"); timer.schedule(timerTask, maxTime); - this.start = EnvironmentEdgeManager.currentTimeMillis(); + this.start = EnvironmentEdgeManager.nanoTime(); } /** diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java index 3bc1edb..38a0e8a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java @@ -813,7 +813,7 @@ public class BucketCache implements BlockCache, HeapSize { * cache */ private void checkIOErrorIsTolerated() { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); if (this.ioErrorStartTime > 0) { if (cacheEnabled && (now - ioErrorStartTime) > this.ioErrorsTolerationDuration) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java index 37c579a..60299cf 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java @@ -32,7 +32,7 @@ public class BucketCacheStats extends CacheStats { private final AtomicLong ioHitCount = new AtomicLong(0); private final AtomicLong ioHitTime = new AtomicLong(0); private final static int nanoTime = 1000000; - private long lastLogTime = EnvironmentEdgeManager.currentTimeMillis(); + private long lastLogTime = EnvironmentEdgeManager.nanoTime(); public void ioHit(long time) { ioHitCount.incrementAndGet(); @@ -40,7 +40,7 @@ public class BucketCacheStats extends CacheStats { } public long getIOHitsPerSecond() { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); long took = (now - lastLogTime) / 1000; lastLogTime = now; return ioHitCount.get() / took; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java index 25ca73c..feef4b2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java @@ -282,7 +282,7 @@ public class RpcServer implements RpcServerInterface { this.param = param; this.cellScanner = cellScanner; this.connection = connection; - this.timestamp = System.currentTimeMillis(); + this.timestamp = System.nanoTime(); this.response = null; this.delayResponse = false; this.responder = responder; @@ -445,7 +445,7 @@ public class RpcServer implements RpcServerInterface { @Override public void throwExceptionIfCallerDisconnected() throws CallerDisconnectedException { if (!connection.channel.isOpen()) { - long afterTime = System.currentTimeMillis() - timestamp; + long afterTime = System.nanoTime() - timestamp; throw new CallerDisconnectedException( "Aborting call " + this + " after " + afterTime + " ms, since " + "caller disconnected"); @@ -596,7 +596,7 @@ public class RpcServer implements RpcServerInterface { */ private void cleanupConnections(boolean force) { if (force || numConnections > thresholdIdleConnections) { - long currentTime = System.currentTimeMillis(); + long currentTime = System.nanoTime(); if (!force && (currentTime - lastCleanupRunTime) < cleanupInterval) { return; } @@ -633,7 +633,7 @@ public class RpcServer implements RpcServerInterface { } else i++; } - lastCleanupRunTime = System.currentTimeMillis(); + lastCleanupRunTime = System.nanoTime(); } } @@ -731,7 +731,7 @@ public class RpcServer implements RpcServerInterface { try { reader.startAdd(); SelectionKey readKey = reader.registerChannel(channel); - c = getConnection(channel, System.currentTimeMillis()); + c = getConnection(channel, System.nanoTime()); readKey.attach(c); synchronized (connectionList) { connectionList.add(numConnections, c); @@ -753,7 +753,7 @@ public class RpcServer implements RpcServerInterface { if (c == null) { return; } - c.setLastContact(System.currentTimeMillis()); + c.setLastContact(System.nanoTime()); try { count = c.readAndProcess(); } catch (InterruptedException ieo) { @@ -771,7 +771,7 @@ public class RpcServer implements RpcServerInterface { closeConnection(c); // c = null; } else { - c.setLastContact(System.currentTimeMillis()); + c.setLastContact(System.nanoTime()); } } @@ -845,7 +845,7 @@ public class RpcServer implements RpcServerInterface { LOG.info(getName() + ": asyncWrite", e); } } - long now = System.currentTimeMillis(); + long now = System.nanoTime(); if (now < lastPurgeTime + purgeTimeout) { continue; } @@ -994,7 +994,7 @@ public class RpcServer implements RpcServerInterface { if (inHandler) { // set the serve time when the response has to be sent later - call.timestamp = System.currentTimeMillis(); + call.timestamp = System.nanoTime(); if (enqueueInSelector(call)) done = true; } @@ -1041,7 +1041,7 @@ public class RpcServer implements RpcServerInterface { // void doRespond(Call call) throws IOException { // set the serve time when the response has to be sent later - call.timestamp = System.currentTimeMillis(); + call.timestamp = System.nanoTime(); boolean doRegister = false; synchronized (call.connection.responseQueue) { @@ -2119,10 +2119,10 @@ public class RpcServer implements RpcServerInterface { status.setRPCPacket(param); status.resume("Servicing call"); //get an instance of the method arg type - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner); Message result = service.callBlockingMethod(md, controller, param); - int processingTime = (int) (System.currentTimeMillis() - startTime); + int processingTime = (int) (System.nanoTime() - startTime); int qTime = (int) (startTime - receiveTime); if (LOG.isTraceEnabled()) { LOG.trace(CurCall.get().toString() + diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java index 36e00e6..bb951e7 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java @@ -91,7 +91,7 @@ public class TableRecordReaderImpl { } if (logScannerActivity) { LOG.info("Current scan=" + currentScan.toString()); - timestamp = System.currentTimeMillis(); + timestamp = System.nanoTime(); rowcount = 0; } } @@ -196,7 +196,7 @@ public class TableRecordReaderImpl { if (logScannerActivity) { rowcount ++; if (rowcount >= logPerRowCount) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); LOG.info("Mapper took " + (now-timestamp) + "ms to process " + rowcount + " rows"); timestamp = now; @@ -231,7 +231,7 @@ public class TableRecordReaderImpl { return false; } catch (IOException ioe) { if (logScannerActivity) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); LOG.info("Mapper took " + (now-timestamp) + "ms to process " + rowcount + " rows"); LOG.info(ioe); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat.java index d800072..f565641 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat.java @@ -125,7 +125,7 @@ public class HFileOutputFormat extends FileOutputFormat writers = new TreeMap(Bytes.BYTES_COMPARATOR); private byte [] previousRow = HConstants.EMPTY_BYTE_ARRAY; - private final byte [] now = Bytes.toBytes(System.currentTimeMillis()); + private final byte [] now = Bytes.toBytes(System.nanoTime()); private boolean rollRequested = false; public void write(ImmutableBytesWritable row, KeyValue kv) @@ -219,7 +219,7 @@ public class HFileOutputFormat extends FileOutputFormat 5000) { LOG.warn("Took " + waitedTime + "ms to acquire the lock"); } @@ -1580,7 +1580,7 @@ public class AssignmentManager extends ZooKeeperListener { try { // Send OPEN RPC. If it fails on a IOE or RemoteException, the // TimeoutMonitor will pick up the pieces. - long maxWaitTime = System.currentTimeMillis() + + long maxWaitTime = System.nanoTime() + this.server.getConfiguration(). getLong("hbase.regionserver.rpc.startup.waittime", 60000); for (int i = 1; i <= maximumAttempts && !server.isStopped(); i++) { @@ -1616,7 +1616,7 @@ public class AssignmentManager extends ZooKeeperListener { // No need to retry, the region server is a goner. return false; } else if (e instanceof ServerNotRunningYetException) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); if (now < maxWaitTime) { LOG.debug("Server is not yet up; waiting up to " + (maxWaitTime - now) + "ms", e); @@ -1908,12 +1908,12 @@ public class AssignmentManager extends ZooKeeperListener { "try=" + i + " of " + this.maximumAttempts, t); if (maxRegionServerStartupWaitTime < 0) { - maxRegionServerStartupWaitTime = EnvironmentEdgeManager.currentTimeMillis() + + maxRegionServerStartupWaitTime = EnvironmentEdgeManager.nanoTime() + this.server.getConfiguration(). getLong("hbase.regionserver.rpc.startup.waittime", 60000); } try { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); if (now < maxRegionServerStartupWaitTime) { LOG.debug("Server is not yet up; waiting up to " + (maxRegionServerStartupWaitTime - now) + "ms", t); @@ -2535,10 +2535,10 @@ public class AssignmentManager extends ZooKeeperListener { // that if it returns without an exception that there was a period of time // with no regions in transition from the point-of-view of the in-memory // state of the Master. - final long endTime = System.currentTimeMillis() + timeout; + final long endTime = System.nanoTime() + timeout; while (!this.server.isStopped() && regionStates.isRegionsInTransition() - && endTime > System.currentTimeMillis()) { + && endTime > System.nanoTime()) { regionStates.waitForUpdate(100); } @@ -2734,7 +2734,7 @@ public class AssignmentManager extends ZooKeeperListener { * on a frequent interval. */ public void updateRegionsInTransitionMetrics() { - long currentTime = System.currentTimeMillis(); + long currentTime = System.nanoTime(); int totalRITs = 0; int totalRITsOverThreshold = 0; long oldestRITTime = 0; @@ -2788,14 +2788,14 @@ public class AssignmentManager extends ZooKeeperListener { throws IOException, InterruptedException { if (!regionStates.isRegionInTransition(hri)) return true; RegionState rs = null; - long end = (timeOut <= 0) ? Long.MAX_VALUE : EnvironmentEdgeManager.currentTimeMillis() + long end = (timeOut <= 0) ? Long.MAX_VALUE : EnvironmentEdgeManager.nanoTime() + timeOut; // There is already a timeout monitor on regions in transition so I // should not have to have one here too? LOG.info("Waiting on " + rs + " to clear regions-in-transition"); while (!this.server.isStopped() && regionStates.isRegionInTransition(hri)) { regionStates.waitForUpdate(100); - if (EnvironmentEdgeManager.currentTimeMillis() > end) { + if (EnvironmentEdgeManager.nanoTime() > end) { LOG.info("Timed out on waiting for region:" + hri.getEncodedName() + " to be assigned."); return false; } @@ -2873,7 +2873,7 @@ public class AssignmentManager extends ZooKeeperListener { boolean noRSAvailable = this.serverManager.createDestinationServersList().isEmpty(); // Iterate all regions in transition checking for time outs - long now = System.currentTimeMillis(); + long now = System.nanoTime(); // no lock concurrent access ok: we will be working on a copy, and it's java-valid to do // a copy while another thread is adding/removing items for (String regionName : regionStates.getRegionsInTransition().keySet()) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ClusterStatusPublisher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ClusterStatusPublisher.java index d6458c1..5408efb 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ClusterStatusPublisher.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ClusterStatusPublisher.java @@ -136,7 +136,7 @@ public class ClusterStatusPublisher extends Chore { return; } - final long curTime = EnvironmentEdgeManager.currentTimeMillis(); + final long curTime = EnvironmentEdgeManager.nanoTime(); if (lastMessageTime > curTime - messagePeriod) { // We already sent something less than 10 second ago. Done. return; @@ -174,7 +174,7 @@ public class ClusterStatusPublisher extends Chore { */ protected List generateDeadServersListToSend() { // We're getting the message sent since last time, and add them to the list - long since = EnvironmentEdgeManager.currentTimeMillis() - messagePeriod * 2; + long since = EnvironmentEdgeManager.nanoTime() - messagePeriod * 2; for (Pair dead : getDeadServers(since)) { lastSent.putIfAbsent(dead.getFirst(), 0); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java index 563827a..5db55b3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java @@ -106,7 +106,7 @@ public class DeadServer { public synchronized void add(ServerName sn) { this.numProcessing++; if (!deadServers.containsKey(sn)){ - deadServers.put(sn, EnvironmentEdgeManager.currentTimeMillis()); + deadServers.put(sn, EnvironmentEdgeManager.nanoTime()); } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/GeneralBulkAssigner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/GeneralBulkAssigner.java index dd4a0d3..a39a4bb 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/GeneralBulkAssigner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/GeneralBulkAssigner.java @@ -91,10 +91,10 @@ public class GeneralBulkAssigner extends BulkAssigner { pool.shutdown(); // no more task allowed int serverCount = bulkPlan.size(); int regionCount = regionSet.size(); - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); long rpcWaitTime = startTime + timeout; while (!server.isStopped() && !pool.isTerminated() - && rpcWaitTime > System.currentTimeMillis()) { + && rpcWaitTime > System.nanoTime()) { if (failedPlans.isEmpty()) { pool.awaitTermination(100, TimeUnit.MILLISECONDS); } else { @@ -103,7 +103,7 @@ public class GeneralBulkAssigner extends BulkAssigner { } if (!pool.isTerminated()) { LOG.warn("bulk assigner is still running after " - + (System.currentTimeMillis() - startTime) + "ms, shut it down now"); + + (System.nanoTime() - startTime) + "ms, shut it down now"); // some assigner hangs, can't wait any more, shutdown the pool now List notStarted = pool.shutdownNow(); if (notStarted != null && !notStarted.isEmpty()) { @@ -121,11 +121,11 @@ public class GeneralBulkAssigner extends BulkAssigner { Configuration conf = server.getConfiguration(); long perRegionOpenTimeGuesstimate = conf.getLong("hbase.bulk.assignment.perregion.open.time", 1000); - long endTime = Math.max(System.currentTimeMillis(), rpcWaitTime) + long endTime = Math.max(System.nanoTime(), rpcWaitTime) + perRegionOpenTimeGuesstimate * (reassigningRegions + 1); RegionStates regionStates = assignmentManager.getRegionStates(); // We're not synchronizing on regionsInTransition now because we don't use any iterator. - while (!regionSet.isEmpty() && !server.isStopped() && endTime > System.currentTimeMillis()) { + while (!regionSet.isEmpty() && !server.isStopped() && endTime > System.nanoTime()) { Iterator regionInfoIterator = regionSet.iterator(); while (regionInfoIterator.hasNext()) { HRegionInfo hri = regionInfoIterator.next(); @@ -145,7 +145,7 @@ public class GeneralBulkAssigner extends BulkAssigner { } if (LOG.isDebugEnabled()) { - long elapsedTime = System.currentTimeMillis() - startTime; + long elapsedTime = System.nanoTime() - startTime; String status = "successfully"; if (!regionSet.isEmpty()) { status = "with " + regionSet.size() + " regions still in transition"; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 3ecd937..7e0de58 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -406,7 +406,7 @@ MasterServices, Server { // Set our address. this.isa = this.rpcServer.getListenerAddress(); this.serverName = - new ServerName(this.isa.getHostName(), this.isa.getPort(), System.currentTimeMillis()); + new ServerName(this.isa.getHostName(), this.isa.getPort(), System.nanoTime()); this.rsFatals = new MemoryBoundedLogMessageBuffer( conf.getLong("hbase.master.buffer.for.rs.fatals", 1*1024*1024)); @@ -528,7 +528,7 @@ MasterServices, Server { MonitoredTask startupStatus = TaskMonitor.get().createStatus("Master startup"); startupStatus.setDescription("Master startup"); - masterStartTime = System.currentTimeMillis(); + masterStartTime = System.nanoTime(); try { this.registeredZKListenersBeforeRecovery = this.zooKeeper.getListeners(); this.masterAddressManager = new MasterAddressTracker(getZooKeeperWatcher(), this); @@ -685,10 +685,10 @@ MasterServices, Server { long lastMsgTs = 0l; long now = 0l; while (!this.stopped) { - now = System.currentTimeMillis(); + now = System.nanoTime(); if ((now - lastMsgTs) >= this.msgInterval) { doMetrics(); - lastMsgTs = System.currentTimeMillis(); + lastMsgTs = System.nanoTime(); } stopSleeper.sleep(); } @@ -739,7 +739,7 @@ MasterServices, Server { */ status.setStatus("Initializing Master file system"); - this.masterActiveTime = System.currentTimeMillis(); + this.masterActiveTime = System.nanoTime(); // TODO: Do this using Dependency Injection, using PicoContainer, Guice or Spring. this.fileSystemManager = new MasterFileSystem(this, this, metricsMaster, masterRecovery); @@ -1385,21 +1385,21 @@ MasterServices, Server { List partialPlans = this.balancer.balanceCluster(assignments); if (partialPlans != null) plans.addAll(partialPlans); } - long cutoffTime = System.currentTimeMillis() + maximumBalanceTime; + long cutoffTime = System.nanoTime() + maximumBalanceTime; int rpCount = 0; // number of RegionPlans balanced so far long totalRegPlanExecTime = 0; balancerRan = plans != null; if (plans != null && !plans.isEmpty()) { for (RegionPlan plan: plans) { LOG.info("balance " + plan); - long balStartTime = System.currentTimeMillis(); + long balStartTime = System.nanoTime(); //TODO: bulk assign this.assignmentManager.balance(plan); - totalRegPlanExecTime += System.currentTimeMillis()-balStartTime; + totalRegPlanExecTime += System.nanoTime()-balStartTime; rpCount++; if (rpCount < plans.size() && // if performing next balance exceeds cutoff time, exit the loop - (System.currentTimeMillis() + (totalRegPlanExecTime / rpCount)) > cutoffTime) { + (System.nanoTime() + (totalRegPlanExecTime / rpCount)) > cutoffTime) { //TODO: After balance, there should not be a cutoff time (keeping it as a security net for now) LOG.debug("No more balancing till next balance run; maximumBalanceTime=" + maximumBalanceTime); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java index b3a0ae7..f30c802 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java @@ -309,9 +309,9 @@ public class MasterFileSystem { List logDirs = getLogDirs(serverNames); splitLogManager.handleDeadWorkers(serverNames); - splitTime = EnvironmentEdgeManager.currentTimeMillis(); + splitTime = EnvironmentEdgeManager.nanoTime(); splitLogSize = splitLogManager.splitLogDistributed(serverNames, logDirs, META_FILTER); - splitTime = EnvironmentEdgeManager.currentTimeMillis() - splitTime; + splitTime = EnvironmentEdgeManager.nanoTime() - splitTime; if (this.metricsMaster != null) { this.metricsMaster.addMetaWALSplit(splitTime, splitLogSize); } @@ -421,9 +421,9 @@ public class MasterFileSystem { if (distributedLogSplitting) { splitLogManager.handleDeadWorkers(serverNames); - splitTime = EnvironmentEdgeManager.currentTimeMillis(); + splitTime = EnvironmentEdgeManager.nanoTime(); splitLogSize = splitLogManager.splitLogDistributed(serverNames, logDirs, filter); - splitTime = EnvironmentEdgeManager.currentTimeMillis() - splitTime; + splitTime = EnvironmentEdgeManager.nanoTime() - splitTime; } else { for(Path logDir: logDirs){ // splitLogLock ensures that dead region servers' logs are processed diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java index a1da500..583e818 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java @@ -259,7 +259,7 @@ public class RegionStates { String regionName = hri.getEncodedName(); RegionState regionState = new RegionState( - hri, state, System.currentTimeMillis(), newServerName); + hri, state, System.nanoTime(), newServerName); RegionState oldState = regionStates.put(regionName, regionState); if (oldState == null || oldState.getState() != regionState.getState()) { LOG.info("Region transitioned from " + oldState + " to " + regionState); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java index ad83067..3ae5397 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -303,7 +303,7 @@ public class ServerManager { */ private void checkClockSkew(final ServerName serverName, final long serverCurrentTime) throws ClockOutOfSyncException { - long skew = System.currentTimeMillis() - serverCurrentTime; + long skew = System.nanoTime() - serverCurrentTime; if (skew > maxSkew) { String message = "Server " + serverName + " has been " + "rejected; Reported time is too far out of sync with master. " + @@ -436,7 +436,7 @@ public class ServerManager { long previousLogTime = 0; while (!onlineServers.isEmpty()) { - if (System.currentTimeMillis() > (previousLogTime + 1000)) { + if (System.nanoTime() > (previousLogTime + 1000)) { StringBuilder sb = new StringBuilder(); for (ServerName key : this.onlineServers.keySet()) { if (sb.length() > 0) { @@ -445,7 +445,7 @@ public class ServerManager { sb.append(key); } LOG.info("Waiting on regionserver(s) to go down " + sb.toString()); - previousLogTime = System.currentTimeMillis(); + previousLogTime = System.nanoTime(); } synchronized (onlineServers) { @@ -776,7 +776,7 @@ public class ServerManager { maxToStart = Integer.MAX_VALUE; } - long now = System.currentTimeMillis(); + long now = System.nanoTime(); final long startTime = now; long slept = 0; long lastLogTime = 0; @@ -804,7 +804,7 @@ public class ServerManager { // We sleep for some time final long sleepTime = 50; Thread.sleep(sleepTime); - now = System.currentTimeMillis(); + now = System.nanoTime(); slept = now - startTime; oldCount = count; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java index d23e20e..2b878d1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java @@ -305,7 +305,7 @@ public class SplitLogManager extends ZooKeeperListener { LOG.debug("Scheduling batch of logs to split"); SplitLogCounters.tot_mgr_log_split_batch_start.incrementAndGet(); LOG.info("started splitting " + logfiles.length + " logs in " + logDirs); - long t = EnvironmentEdgeManager.currentTimeMillis(); + long t = EnvironmentEdgeManager.nanoTime(); long totalSize = 0; TaskBatch batch = new TaskBatch(); Boolean isMetaRecovery = (filter == null) ? null : false; @@ -359,7 +359,7 @@ public class SplitLogManager extends ZooKeeperListener { } String msg = "finished splitting (more than or equal to) " + totalSize + " bytes in " + batch.installed + " log files in " + logDirs + " in " + - (EnvironmentEdgeManager.currentTimeMillis() - t) + "ms"; + (EnvironmentEdgeManager.nanoTime() - t) + "ms"; status.markComplete(msg); LOG.info(msg); return totalSize; @@ -682,7 +682,7 @@ public class SplitLogManager extends ZooKeeperListener { } private void createNodeSuccess(String path) { - lastNodeCreateTime = EnvironmentEdgeManager.currentTimeMillis(); + lastNodeCreateTime = EnvironmentEdgeManager.nanoTime(); LOG.debug("put up splitlog task at znode " + path); getDataSetWatch(path, zkretries); } @@ -800,7 +800,7 @@ public class SplitLogManager extends ZooKeeperListener { if (task.isUnassigned()) { LOG.info("task " + path + " acquired by " + workerName); } - task.heartbeat(EnvironmentEdgeManager.currentTimeMillis(), new_version, workerName); + task.heartbeat(EnvironmentEdgeManager.nanoTime(), new_version, workerName); SplitLogCounters.tot_mgr_heartbeat.incrementAndGet(); } else { // duplicate heartbeats - heartbeats w/o zk node version @@ -823,7 +823,7 @@ public class SplitLogManager extends ZooKeeperListener { // 2) after a configurable timeout if the server is not marked as dead but has still not // finished the task. This allows to continue if the worker cannot actually handle it, // for any reason. - final long time = EnvironmentEdgeManager.currentTimeMillis() - task.last_update; + final long time = EnvironmentEdgeManager.nanoTime() - task.last_update; final boolean alive = master.getServerManager() != null ? master.getServerManager().isServerOnline(task.cur_worker_name) : true; if (alive && time < timeout) { @@ -854,7 +854,7 @@ public class SplitLogManager extends ZooKeeperListener { if (ZKUtil.setData(this.watcher, path, slt.toByteArray(), version) == false) { LOG.debug("failed to resubmit task " + path + " version changed"); - task.heartbeatNoDetails(EnvironmentEdgeManager.currentTimeMillis()); + task.heartbeatNoDetails(EnvironmentEdgeManager.nanoTime()); return false; } } catch (NoNodeException e) { @@ -864,13 +864,13 @@ public class SplitLogManager extends ZooKeeperListener { getDataSetWatchSuccess(path, null, Integer.MIN_VALUE); } catch (DeserializationException e1) { LOG.debug("Failed to re-resubmit task " + path + " because of deserialization issue", e1); - task.heartbeatNoDetails(EnvironmentEdgeManager.currentTimeMillis()); + task.heartbeatNoDetails(EnvironmentEdgeManager.nanoTime()); return false; } return false; } catch (KeeperException.BadVersionException e) { LOG.debug("failed to resubmit task " + path + " version changed"); - task.heartbeatNoDetails(EnvironmentEdgeManager.currentTimeMillis()); + task.heartbeatNoDetails(EnvironmentEdgeManager.nanoTime()); return false; } catch (KeeperException e) { SplitLogCounters.tot_mgr_resubmit_failed.incrementAndGet(); @@ -950,7 +950,7 @@ public class SplitLogManager extends ZooKeeperListener { } private void createRescanSuccess(String path) { - lastNodeCreateTime = EnvironmentEdgeManager.currentTimeMillis(); + lastNodeCreateTime = EnvironmentEdgeManager.nanoTime(); SplitLogCounters.tot_mgr_rescan.incrementAndGet(); getDataSetWatch(path, zkretries); } @@ -1042,7 +1042,7 @@ public class SplitLogManager extends ZooKeeperListener { task = tasks.get(path); if (task != null || ZKSplitLog.isRescanNode(watcher, path)) { if (task != null) { - task.heartbeatNoDetails(EnvironmentEdgeManager.currentTimeMillis()); + task.heartbeatNoDetails(EnvironmentEdgeManager.nanoTime()); } getDataSetWatch(path, zkretries); } @@ -1098,7 +1098,7 @@ public class SplitLogManager extends ZooKeeperListener { try { this.recoveringRegionLock.lock(); // mark that we're creating recovering znodes - this.lastRecoveringNodeCreationTime = EnvironmentEdgeManager.currentTimeMillis(); + this.lastRecoveringNodeCreationTime = EnvironmentEdgeManager.nanoTime(); for (HRegionInfo region : userRegions) { String regionEncodeName = region.getEncodedName(); @@ -1369,7 +1369,7 @@ public class SplitLogManager extends ZooKeeperListener { // master should spawn both a manager and a worker thread to guarantee // that there is always one worker in the system if (tot > 0 && !found_assigned_task && - ((EnvironmentEdgeManager.currentTimeMillis() - lastNodeCreateTime) > + ((EnvironmentEdgeManager.nanoTime() - lastNodeCreateTime) > unassignedTimeout)) { for (Map.Entry e : tasks.entrySet()) { String path = e.getKey(); @@ -1399,7 +1399,7 @@ public class SplitLogManager extends ZooKeeperListener { } // Garbage collect left-over /hbase/recovering-regions/... znode - long timeInterval = EnvironmentEdgeManager.currentTimeMillis() + long timeInterval = EnvironmentEdgeManager.nanoTime() - lastRecoveringNodeCreationTime; if (!failedRecoveringRegionDeletions.isEmpty() || (tot == 0 && tasks.size() == 0 && (timeInterval > checkRecoveringTimeThreshold))) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java index 4da993e..15b079c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java @@ -328,7 +328,7 @@ public abstract class TableLockManager { .setThreadId(Thread.currentThread().getId()) .setPurpose(purpose) .setIsShared(isShared) - .setCreateTime(EnvironmentEdgeManager.currentTimeMillis()).build(); + .setCreateTime(EnvironmentEdgeManager.nanoTime()).build(); byte[] lockMetadata = toBytes(data); InterProcessReadWriteLock lock = new ZKInterProcessReadWriteLock(zkWatcher, tableLockZNode, diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java index 0326c20..3dc16ad 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java @@ -341,7 +341,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer { // slop for regions private float slop; private Configuration config; - private static final Random RANDOM = new Random(System.currentTimeMillis()); + private static final Random RANDOM = new Random(System.nanoTime()); private static final Log LOG = LogFactory.getLog(BaseLoadBalancer.class); protected MasterServices services; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java index 42aa6e1..fc33e9a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DefaultLoadBalancer.java @@ -56,7 +56,7 @@ import com.google.common.collect.MinMaxPriorityQueue; @InterfaceAudience.Private public class DefaultLoadBalancer extends BaseLoadBalancer { private static final Log LOG = LogFactory.getLog(DefaultLoadBalancer.class); - private static final Random RANDOM = new Random(System.currentTimeMillis()); + private static final Random RANDOM = new Random(System.nanoTime()); private RegionInfoComparator riComparator = new RegionInfoComparator(); private RegionPlan.RegionPlanComparator rpComparator = new RegionPlan.RegionPlanComparator(); @@ -181,7 +181,7 @@ public class DefaultLoadBalancer extends BaseLoadBalancer { public List balanceCluster( Map> clusterMap) { boolean emptyRegionServerPresent = false; - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); ClusterLoadState cs = new ClusterLoadState(clusterMap); @@ -311,7 +311,7 @@ public class DefaultLoadBalancer extends BaseLoadBalancer { // If none needed to fill all to min and none left to drain all to max, // we are done if (neededRegions == 0 && regionsToMove.isEmpty()) { - long endTime = System.currentTimeMillis(); + long endTime = System.nanoTime(); LOG.info("Calculated a load balance in " + (endTime-startTime) + "ms. " + "Moving " + totalNumMoved + " regions off of " + serversOverloaded + " overloaded servers onto " + @@ -389,7 +389,7 @@ public class DefaultLoadBalancer extends BaseLoadBalancer { } } - long endTime = System.currentTimeMillis(); + long endTime = System.nanoTime(); if (!regionsToMove.isEmpty() || neededRegions != 0) { // Emit data so can diagnose how balancer went astray. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredNodeAssignmentHelper.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredNodeAssignmentHelper.java index ba5a243..f87fdcf 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredNodeAssignmentHelper.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredNodeAssignmentHelper.java @@ -163,7 +163,7 @@ public class FavoredNodeAssignmentHelper { put = MetaEditor.makePutFromRegionInfo(regionInfo); byte[] favoredNodes = getFavoredNodes(favoredNodeList); put.add(HConstants.CATALOG_FAMILY, FAVOREDNODES_QUALIFIER, - EnvironmentEdgeManager.currentTimeMillis(), favoredNodes); + EnvironmentEdgeManager.nanoTime(), favoredNodes); LOG.info("Create the region " + regionInfo.getRegionNameAsString() + " with favored nodes " + favoredNodes); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java index 7609e5a..53635f3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java @@ -96,7 +96,7 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { private static final String KEEP_REGION_LOADS = "hbase.master.balancer.stochastic.numRegionLoadsToRemember"; - private static final Random RANDOM = new Random(System.currentTimeMillis()); + private static final Random RANDOM = new Random(System.nanoTime()); private static final Log LOG = LogFactory.getLog(StochasticLoadBalancer.class); private final RegionLocationFinder regionFinder = new RegionLocationFinder(); @@ -187,7 +187,7 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { // return null; //} - long startTime = EnvironmentEdgeManager.currentTimeMillis(); + long startTime = EnvironmentEdgeManager.nanoTime(); // Keep track of servers to iterate through them. Cluster cluster = new Cluster(clusterState, loads, regionFinder); @@ -238,13 +238,13 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { leftRegion); } - if (EnvironmentEdgeManager.currentTimeMillis() - startTime > + if (EnvironmentEdgeManager.nanoTime() - startTime > maxRunningTime) { break; } } - long endTime = EnvironmentEdgeManager.currentTimeMillis(); + long endTime = EnvironmentEdgeManager.nanoTime(); if (initCost > currentCost) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java index b65fbf9..87264cd 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java @@ -46,7 +46,7 @@ public class TimeToLiveHFileCleaner extends BaseHFileCleanerDelegate { @Override public boolean isFileDeletable(FileStatus fStat) { - long currentTime = EnvironmentEdgeManager.currentTimeMillis(); + long currentTime = EnvironmentEdgeManager.nanoTime(); long time = fStat.getModificationTime(); long life = currentTime - time; if (LOG.isTraceEnabled()) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java index 66b0423..b402ae4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java @@ -37,7 +37,7 @@ public class TimeToLiveLogCleaner extends BaseLogCleanerDelegate { @Override public boolean isLogDeletable(FileStatus fStat) { - long currentTime = EnvironmentEdgeManager.currentTimeMillis(); + long currentTime = EnvironmentEdgeManager.nanoTime(); long time = fStat.getModificationTime(); long life = currentTime - time; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java index 5c64ed3..d156acc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java @@ -71,8 +71,8 @@ public class DeleteTableHandler extends TableEventHandler { long waitTime = server.getConfiguration(). getLong("hbase.master.wait.on.region", 5 * 60 * 1000); for (HRegionInfo region : regions) { - long done = System.currentTimeMillis() + waitTime; - while (System.currentTimeMillis() < done) { + long done = System.nanoTime() + waitTime; + while (System.nanoTime() < done) { if (states.isRegionFailedToOpen(region)) { am.regionOffline(region); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java index cecafbc..4ffc65c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java @@ -216,7 +216,7 @@ public class DisableTableHandler extends EventHandler { @Override protected boolean waitUntilDone(long timeout) throws InterruptedException { - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); long remaining = timeout; List regions = null; while (!server.isStopped() && remaining > 0) { @@ -224,7 +224,7 @@ public class DisableTableHandler extends EventHandler { regions = assignmentManager.getRegionStates().getRegionsOfTable(tableName); LOG.debug("Disable waiting until done; " + remaining + " ms remaining; " + regions); if (regions.isEmpty()) break; - remaining = timeout - (System.currentTimeMillis() - startTime); + remaining = timeout - (System.nanoTime() - startTime); } return regions != null && regions.isEmpty(); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java index 65ff8c4..c30c112 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java @@ -88,7 +88,7 @@ public class DispatchMergingRegionHandler extends EventHandler { .getEncodedName()) + " is not online now"); return; } - long startTime = EnvironmentEdgeManager.currentTimeMillis(); + long startTime = EnvironmentEdgeManager.nanoTime(); boolean onSameRS = region_a_location.equals(region_b_location); // Make sure regions are on the same regionserver before send merge @@ -133,7 +133,7 @@ public class DispatchMergingRegionHandler extends EventHandler { // RegionInTransition any more break; } - if ((EnvironmentEdgeManager.currentTimeMillis() - startTime) > timeout) break; + if ((EnvironmentEdgeManager.nanoTime() - startTime) > timeout) break; } catch (InterruptedException e) { InterruptedIOException iioe = new InterruptedIOException(); iioe.initCause(e); @@ -161,7 +161,7 @@ public class DispatchMergingRegionHandler extends EventHandler { LOG.info("Cancel merging regions " + region_a.getRegionNameAsString() + ", " + region_b.getRegionNameAsString() + ", because can't move them together after " - + (EnvironmentEdgeManager.currentTimeMillis() - startTime) + "ms"); + + (EnvironmentEdgeManager.nanoTime() - startTime) + "ms"); } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java index efdb9c4..93fb4a6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java @@ -289,7 +289,7 @@ public class EnableTableHandler extends EventHandler { @Override protected boolean waitUntilDone(long timeout) throws InterruptedException { - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); long remaining = timeout; List regions = null; int lastNumberOfRegions = 0; @@ -304,7 +304,7 @@ public class EnableTableHandler extends EventHandler { lastNumberOfRegions = regions.size(); timeout += waitingTimeForEvents; } - remaining = timeout - (System.currentTimeMillis() - startTime); + remaining = timeout - (System.nanoTime() - startTime); } return isDone(regions); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java index d6c5212..8797f16 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java @@ -837,7 +837,7 @@ public class SnapshotManager implements Stoppable { * @param sentinels map of sentinels to clean */ private synchronized void cleanupSentinels(final Map sentinels) { - long currentTime = EnvironmentEdgeManager.currentTimeMillis(); + long currentTime = EnvironmentEdgeManager.nanoTime(); Iterator> it = sentinels.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = it.next(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java index 66f1f83..9d71eaa 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java @@ -43,7 +43,7 @@ public class MetricsRate extends MetricsBase { super(name, description); this.value = 0; this.prevRate = 0; - this.ts = System.currentTimeMillis(); + this.ts = System.nanoTime(); registry.add(name, this); } @@ -60,7 +60,7 @@ public class MetricsRate extends MetricsBase { } public synchronized void intervalHeartBeat() { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); long diff = (now-ts) / 1000; if (diff < 1){ // To make sure our averages aren't skewed by fast repeated calls, diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.java index 5b5f623..4aa6839 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.java @@ -54,7 +54,7 @@ public class MemoryBoundedLogMessageBuffer { * older messages until the desired memory limit is achieved. */ public synchronized void add(String messageText) { - LogMessage message = new LogMessage(messageText, System.currentTimeMillis()); + LogMessage message = new LogMessage(messageText, System.nanoTime()); usage += message.estimateHeapUsage(); messages.add(message); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java index cb98034..5de75a8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java @@ -187,7 +187,7 @@ public class MonitoredRPCHandlerImpl extends MonitoredTaskImpl long queueTime) { this.methodName = methodName; this.params = params; - this.rpcStartTime = System.currentTimeMillis(); + this.rpcStartTime = System.nanoTime(); this.rpcQueueTime = queueTime; this.state = State.RUNNING; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java index 4dbf04c..817020f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java @@ -39,7 +39,7 @@ class MonitoredTaskImpl implements MonitoredTask { private static final ObjectMapper MAPPER = new ObjectMapper(); public MonitoredTaskImpl() { - startTime = System.currentTimeMillis(); + startTime = System.nanoTime(); statusTime = startTime; stateTime = startTime; } @@ -118,12 +118,12 @@ class MonitoredTaskImpl implements MonitoredTask { @Override public void setStatus(String status) { this.status = status; - statusTime = System.currentTimeMillis(); + statusTime = System.nanoTime(); } protected void setState(State state) { this.state = state; - stateTime = System.currentTimeMillis(); + stateTime = System.nanoTime(); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java index 728d89d..75e9e8e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java @@ -140,12 +140,12 @@ public class TaskMonitor { private boolean canPurge(MonitoredTask stat) { long cts = stat.getCompletionTimestamp(); - return (cts > 0 && System.currentTimeMillis() - cts > EXPIRATION_TIME); + return (cts > 0 && System.nanoTime() - cts > EXPIRATION_TIME); } public void dumpAsText(PrintWriter out) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); List tasks = getTasks(); for (MonitoredTask task : tasks) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java index a2a346f..23b709c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java @@ -94,7 +94,7 @@ public class CompactSplitThread implements CompactionRequestor { @Override public Thread newThread(Runnable r) { Thread t = new Thread(r); - t.setName(n + "-largeCompactions-" + System.currentTimeMillis()); + t.setName(n + "-largeCompactions-" + System.nanoTime()); return t; } }); @@ -105,7 +105,7 @@ public class CompactSplitThread implements CompactionRequestor { @Override public Thread newThread(Runnable r) { Thread t = new Thread(r); - t.setName(n + "-smallCompactions-" + System.currentTimeMillis()); + t.setName(n + "-smallCompactions-" + System.nanoTime()); return t; } }); @@ -117,7 +117,7 @@ public class CompactSplitThread implements CompactionRequestor { @Override public Thread newThread(Runnable r) { Thread t = new Thread(r); - t.setName(n + "-splits-" + System.currentTimeMillis()); + t.setName(n + "-splits-" + System.nanoTime()); return t; } }); @@ -127,7 +127,7 @@ public class CompactSplitThread implements CompactionRequestor { @Override public Thread newThread(Runnable r) { Thread t = new Thread(r); - t.setName(n + "-merges-" + System.currentTimeMillis()); + t.setName(n + "-merges-" + System.nanoTime()); return t; } }); @@ -459,9 +459,9 @@ public class CompactSplitThread implements CompactionRequestor { try { // Note: please don't put single-compaction logic here; // put it into region/store/etc. This is CST logic. - long start = EnvironmentEdgeManager.currentTimeMillis(); + long start = EnvironmentEdgeManager.nanoTime(); boolean completed = region.compact(compaction, store); - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); LOG.info(((completed) ? "Completed" : "Aborted") + " compaction: " + this + "; duration=" + StringUtils.formatTimeDiff(now, start)); if (completed) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionTool.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionTool.java index d40cfb3..eb90762 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionTool.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionTool.java @@ -358,7 +358,7 @@ public class CompactionTool extends Configured implements Tool { Path stagingDir = JobUtil.getStagingDir(conf); try { // Create input file with the store dirs - Path inputPath = new Path(stagingDir, "compact-"+ EnvironmentEdgeManager.currentTimeMillis()); + Path inputPath = new Path(stagingDir, "compact-"+ EnvironmentEdgeManager.nanoTime()); CompactionInputFormat.createInputFile(fs, inputPath, toCompactDirs); CompactionInputFormat.addInputPath(job, inputPath); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/GetClosestRowBeforeTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/GetClosestRowBeforeTracker.java index 9c78658..21a4983 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/GetClosestRowBeforeTracker.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/GetClosestRowBeforeTracker.java @@ -72,7 +72,7 @@ class GetClosestRowBeforeTracker { HConstants.DELIMITER) - this.rowoffset; } this.tablenamePlusDelimiterLength = metaregion? l + 1: -1; - this.oldestts = System.currentTimeMillis() - ttl; + this.oldestts = System.nanoTime() - ttl; this.kvcomparator = c; KeyValue.RowComparator rc = new KeyValue.RowComparator(this.kvcomparator); this.deletes = new TreeMap>(rc); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 7f21e3a..a4a178f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -491,7 +491,7 @@ public class HRegion implements HeapSize { // , Writable{ /* * timestamp.slop provides a server-side constraint on the timestamp. This - * assumes that you base your TS around currentTimeMillis(). In this case, + * assumes that you base your TS around nanoTime(). In this case, * throw an error to the user if the user-specified TS is newer than now + * slop. LATEST_TIMESTAMP == don't use this functionality */ @@ -612,7 +612,7 @@ public class HRegion implements HeapSize { // , Writable{ // Initialize split policy this.splitPolicy = RegionSplitPolicy.create(this, conf); - this.lastFlushTime = EnvironmentEdgeManager.currentTimeMillis(); + this.lastFlushTime = EnvironmentEdgeManager.nanoTime(); // Use maximum of log sequenceid or that which was found in stores // (particularly if no recovered edits, seqid will be -1). long nextSeqid = maxSeqId + 1; @@ -1379,7 +1379,7 @@ public class HRegion implements HeapSize { // , Writable{ if (flushCheckInterval <= 0) { //disabled return false; } - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); //if we flushed in the recent past, we don't need to do again now if ((now - getLastFlushTime() < flushCheckInterval)) { return false; @@ -1451,7 +1451,7 @@ public class HRegion implements HeapSize { // , Writable{ // Don't flush when server aborting, it's unsafe throw new IOException("Aborting flush because server is abortted..."); } - final long startTime = EnvironmentEdgeManager.currentTimeMillis(); + final long startTime = EnvironmentEdgeManager.nanoTime(); // Clear flush flag. // Record latest flush time this.lastFlushTime = startTime; @@ -1595,7 +1595,7 @@ public class HRegion implements HeapSize { // , Writable{ notifyAll(); // FindBugs NN_NAKED_NOTIFY } - long time = EnvironmentEdgeManager.currentTimeMillis() - startTime; + long time = EnvironmentEdgeManager.nanoTime() - startTime; long memstoresize = this.memstoreSize.get(); String msg = "Finished memstore flush of ~" + StringUtils.humanReadableInt(flushsize) + "/" + flushsize + @@ -2025,7 +2025,7 @@ public class HRegion implements HeapSize { // , Writable{ // we acquire at least one. // ---------------------------------- int numReadyToWrite = 0; - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); while (lastIndexExclusive < batchOp.operations.length) { Pair nextPair = batchOp.operations[lastIndexExclusive]; Mutation mutation = nextPair.getFirst(); @@ -2112,7 +2112,7 @@ public class HRegion implements HeapSize { // , Writable{ // we should record the timestamp only after we have acquired the rowLock, // otherwise, newer puts/deletes are not guaranteed to have a newer timestamp - now = EnvironmentEdgeManager.currentTimeMillis(); + now = EnvironmentEdgeManager.nanoTime(); byte[] byteNow = Bytes.toBytes(now); // Nothing to put/delete -- an exception in the above such as NoSuchColumnFamily? @@ -2526,7 +2526,7 @@ public class HRegion implements HeapSize { // , Writable{ while (this.memstoreSize.get() > this.blockingMemStoreSize) { requestFlush(); if (!blocked) { - startTime = EnvironmentEdgeManager.currentTimeMillis(); + startTime = EnvironmentEdgeManager.nanoTime(); LOG.info("Blocking updates for '" + Thread.currentThread().getName() + "' on region " + Bytes.toStringBinary(getRegionName()) + ": memstore size " + @@ -2534,7 +2534,7 @@ public class HRegion implements HeapSize { // , Writable{ " is >= than blocking " + StringUtils.humanReadableInt(this.blockingMemStoreSize) + " size"); } - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); long timeToWait = startTime + busyWaitDuration - now; if (timeToWait <= 0L) { final long totalTime = now - startTime; @@ -2549,7 +2549,7 @@ public class HRegion implements HeapSize { // , Writable{ try { wait(Math.min(timeToWait, threadWakeFrequency)); } catch (InterruptedException ie) { - final long totalTime = EnvironmentEdgeManager.currentTimeMillis() - startTime; + final long totalTime = EnvironmentEdgeManager.nanoTime() - startTime; if (totalTime > 0) { this.updatesBlockedMs.add(totalTime); } @@ -2563,7 +2563,7 @@ public class HRegion implements HeapSize { // , Writable{ } if (blocked) { // Add in the blocked time if appropriate - final long totalTime = EnvironmentEdgeManager.currentTimeMillis() - startTime; + final long totalTime = EnvironmentEdgeManager.nanoTime() - startTime; if(totalTime > 0 ){ this.updatesBlockedMs.add(totalTime); } @@ -2924,7 +2924,7 @@ public class HRegion implements HeapSize { // , Writable{ int period = this.conf.getInt("hbase.hstore.report.period", this.conf.getInt("hbase.master.assignment.timeoutmonitor.timeout", 180000) / 2); - long lastReport = EnvironmentEdgeManager.currentTimeMillis(); + long lastReport = EnvironmentEdgeManager.nanoTime(); while ((entry = reader.next()) != null) { HLogKey key = entry.getKey(); @@ -2935,7 +2935,7 @@ public class HRegion implements HeapSize { // , Writable{ if (intervalEdits >= interval) { // Number of edits interval reached intervalEdits = 0; - long cur = EnvironmentEdgeManager.currentTimeMillis(); + long cur = EnvironmentEdgeManager.nanoTime(); if (lastReport + period <= cur) { status.setStatus("Replaying edits..." + " skipped=" + skippedEdits + @@ -4244,7 +4244,7 @@ public class HRegion implements HeapSize { // , Writable{ meta.checkResources(); // The row key is the region name byte[] row = r.getRegionName(); - final long now = EnvironmentEdgeManager.currentTimeMillis(); + final long now = EnvironmentEdgeManager.nanoTime(); final List cells = new ArrayList(2); cells.add(new KeyValue(row, HConstants.CATALOG_FAMILY, HConstants.REGIONINFO_QUALIFIER, now, @@ -4543,7 +4543,7 @@ public class HRegion implements HeapSize { // , Writable{ // Short circuit the read only case if (processor.readOnly()) { try { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); doProcessRowWithTimeout( processor, now, this, null, null, timeout); processor.postProcess(this, walEdit); @@ -4578,7 +4578,7 @@ public class HRegion implements HeapSize { // , Writable{ lock(this.updatesLock.readLock(), acquiredLocks.size()); locked = true; - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); try { // 4. Let the processor scan the rows, generate mutations and add // waledits @@ -4748,7 +4748,7 @@ public class HRegion implements HeapSize { // , Writable{ // now start my own transaction w = mvcc.beginMemstoreInsert(); try { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); // Process each family for (Map.Entry> family : append.getFamilyMap().entrySet()) { @@ -4832,7 +4832,7 @@ public class HRegion implements HeapSize { // , Writable{ // cluster. A slave cluster receives the final value (not the delta) // as a Put. txid = this.log.appendNoSync(this.getRegionInfo(), this.htableDescriptor.getName(), - walEdits, HConstants.DEFAULT_CLUSTER_ID, EnvironmentEdgeManager.currentTimeMillis(), + walEdits, HConstants.DEFAULT_CLUSTER_ID, EnvironmentEdgeManager.nanoTime(), this.htableDescriptor); } else { recordMutationWithoutWal(append.getFamilyMap()); @@ -4917,7 +4917,7 @@ public class HRegion implements HeapSize { // , Writable{ // now start my own transaction w = mvcc.beginMemstoreInsert(); try { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); // Process each family for (Map.Entry> family: increment.getFamilyMap().entrySet()) { @@ -4978,7 +4978,7 @@ public class HRegion implements HeapSize { // , Writable{ // cluster. A slave cluster receives the final value (not the delta) // as a Put. txid = this.log.appendNoSync(this.getRegionInfo(), this.htableDescriptor.getName(), - walEdits, HConstants.DEFAULT_CLUSTER_ID, EnvironmentEdgeManager.currentTimeMillis(), + walEdits, HConstants.DEFAULT_CLUSTER_ID, EnvironmentEdgeManager.nanoTime(), this.htableDescriptor); } else { recordMutationWithoutWal(increment.getFamilyMap()); @@ -5551,7 +5551,7 @@ public class HRegion implements HeapSize { // , Writable{ final FileSystem fs = FileSystem.get(c); final Path logdir = new Path(c.get("hbase.tmp.dir")); final String logname = "hlog" + tableDir.getName() - + EnvironmentEdgeManager.currentTimeMillis(); + + EnvironmentEdgeManager.nanoTime(); final HLog log = HLogFactory.createHLog(fs, logdir, logname, c); try { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 0696a44..e785fb9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -557,7 +557,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa this.rpcServer.setErrorHandler(this); this.rpcServer.setQosFunction((qosFunction = new QosFunction(this))); - this.startcode = System.currentTimeMillis(); + this.startcode = System.nanoTime(); // login the zookeeper client principal (if using security) ZKUtil.loginClient(this.conf, "hbase.zookeeper.client.keytab.file", @@ -830,10 +830,10 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa LOG.debug("Waiting on " + getOnlineRegionsAsPrintableString()); } } - long now = System.currentTimeMillis(); + long now = System.nanoTime(); if ((now - lastMsg) >= msgInterval) { tryRegionServerReport(lastMsg, now); - lastMsg = System.currentTimeMillis(); + lastMsg = System.nanoTime(); } if (!this.stopped) this.sleeper.sleep(); } // for @@ -1066,8 +1066,8 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa // Only print a message if the count of regions has changed. if (count != lastCount) { // Log every second at most - if (System.currentTimeMillis() > (previousLogTime + 1000)) { - previousLogTime = System.currentTimeMillis(); + if (System.nanoTime() > (previousLogTime + 1000)) { + previousLogTime = System.nanoTime(); lastCount = count; LOG.info("Waiting on " + count + " regions to close"); // Only print out regions still closing if a small number else will @@ -1866,7 +1866,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa return null; } LOG.debug("No master found; retry"); - previousLogTime = System.currentTimeMillis(); + previousLogTime = System.nanoTime(); refresh = true; // let's try pull it from ZK directly sleeper.sleep(); continue; @@ -1882,14 +1882,14 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa e = e instanceof RemoteException ? ((RemoteException)e).unwrapRemoteException() : e; if (e instanceof ServerNotRunningYetException) { - if (System.currentTimeMillis() > (previousLogTime+1000)){ + if (System.nanoTime() > (previousLogTime+1000)){ LOG.info("Master isn't available yet, retrying"); - previousLogTime = System.currentTimeMillis(); + previousLogTime = System.nanoTime(); } } else { - if (System.currentTimeMillis() > (previousLogTime + 1000)) { + if (System.nanoTime() > (previousLogTime + 1000)) { LOG.warn("Unable to connect to master. Retrying. Error was:", e); - previousLogTime = System.currentTimeMillis(); + previousLogTime = System.nanoTime(); } } try { @@ -1927,7 +1927,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa this.requestCount.set(0); LOG.info("reportForDuty to master=" + masterServerName + " with port=" + this.isa.getPort() + ", startcode=" + this.startcode); - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); int port = this.isa.getPort(); RegionServerStartupRequest.Builder request = RegionServerStartupRequest.newBuilder(); request.setPort(port); @@ -2720,7 +2720,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa @Override public GetResponse get(final RpcController controller, final GetRequest request) throws ServiceException { - long before = EnvironmentEdgeManager.currentTimeMillis(); + long before = EnvironmentEdgeManager.nanoTime(); try { requestCount.increment(); HRegion region = getRegion(request.getRegion()); @@ -2764,7 +2764,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa } catch (IOException ie) { throw new ServiceException(ie); } finally { - metricsRegionServer.updateGet(EnvironmentEdgeManager.currentTimeMillis() - before); + metricsRegionServer.updateGet(EnvironmentEdgeManager.nanoTime() - before); } } @@ -2778,7 +2778,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa @Override public MultiGetResponse multiGet(final RpcController controller, final MultiGetRequest request) throws ServiceException { - long before = EnvironmentEdgeManager.currentTimeMillis(); + long before = EnvironmentEdgeManager.nanoTime(); try { requestCount.add(request.getGetCount()); HRegion region = getRegion(request.getRegion()); @@ -2822,7 +2822,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa } catch (IOException ie) { throw new ServiceException(ie); } finally { - metricsRegionServer.updateGet(EnvironmentEdgeManager.currentTimeMillis() - before); + metricsRegionServer.updateGet(EnvironmentEdgeManager.nanoTime() - before); } } @@ -3753,7 +3753,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa @QosPriority(priority = HConstants.REPLAY_QOS) public MultiResponse replay(final RpcController rpcc, final MultiRequest request) throws ServiceException { - long before = EnvironmentEdgeManager.currentTimeMillis(); + long before = EnvironmentEdgeManager.nanoTime(); PayloadCarryingRpcController controller = (PayloadCarryingRpcController) rpcc; CellScanner cellScanner = controller != null ? controller.cellScanner() : null; // Clear scanner so we are not holding on to reference across call. @@ -3787,7 +3787,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa } catch (IOException ie) { throw new ServiceException(ie); } finally { - metricsRegionServer.updateReplay(EnvironmentEdgeManager.currentTimeMillis() - before); + metricsRegionServer.updateReplay(EnvironmentEdgeManager.nanoTime() - before); } } @@ -3875,7 +3875,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa */ protected Result append(final HRegion region, final MutationProto m, final CellScanner cellScanner) throws IOException { - long before = EnvironmentEdgeManager.currentTimeMillis(); + long before = EnvironmentEdgeManager.nanoTime(); Append append = ProtobufUtil.toAppend(m, cellScanner); Result r = null; if (region.getCoprocessorHost() != null) { @@ -3887,7 +3887,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa region.getCoprocessorHost().postAppend(append, r); } } - metricsRegionServer.updateAppend(EnvironmentEdgeManager.currentTimeMillis() - before); + metricsRegionServer.updateAppend(EnvironmentEdgeManager.nanoTime() - before); return r; } @@ -3902,7 +3902,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa protected Result increment(final HRegion region, final MutationProto mutation, final CellScanner cells) throws IOException { - long before = EnvironmentEdgeManager.currentTimeMillis(); + long before = EnvironmentEdgeManager.nanoTime(); Increment increment = ProtobufUtil.toIncrement(mutation, cells); Result r = null; if (region.getCoprocessorHost() != null) { @@ -3914,7 +3914,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa r = region.getCoprocessorHost().postIncrement(increment, r); } } - metricsRegionServer.updateIncrement(EnvironmentEdgeManager.currentTimeMillis() - before); + metricsRegionServer.updateIncrement(EnvironmentEdgeManager.nanoTime() - before); return r; } @@ -3937,7 +3937,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa final List mutations, final CellScanner cells, boolean isReplay) { @SuppressWarnings("unchecked") Pair[] mutationsWithLocks = new Pair[mutations.size()]; - long before = EnvironmentEdgeManager.currentTimeMillis(); + long before = EnvironmentEdgeManager.nanoTime(); boolean batchContainsPuts = false, batchContainsDelete = false; try { ActionResult.Builder resultBuilder = ActionResult.newBuilder(); @@ -4003,7 +4003,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa } } } - long after = EnvironmentEdgeManager.currentTimeMillis(); + long after = EnvironmentEdgeManager.nanoTime(); if (batchContainsPuts) { metricsRegionServer.updatePut(after - before); } @@ -4055,7 +4055,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa public MovedRegionInfo(ServerName serverName, long closeSeqNum) { this.serverName = serverName; this.seqNum = closeSeqNum; - ts = EnvironmentEdgeManager.currentTimeMillis(); + ts = EnvironmentEdgeManager.nanoTime(); } public ServerName getServerName() { @@ -4098,7 +4098,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa private MovedRegionInfo getMovedRegion(final String encodedRegionName) { MovedRegionInfo dest = movedRegions.get(encodedRegionName); - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); if (dest != null) { if (dest.getMoveTime() > (now - TIMEOUT_REGION_MOVED)) { return dest; @@ -4114,7 +4114,7 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa * Remove the expired entries from the moved regions list. */ protected void cleanMovedRegions() { - final long cutOff = System.currentTimeMillis() - TIMEOUT_REGION_MOVED; + final long cutOff = System.nanoTime() - TIMEOUT_REGION_MOVED; Iterator> it = movedRegions.entrySet().iterator(); while (it.hasNext()){ diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java index e58ce37..5134aaa 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java @@ -953,7 +953,7 @@ public class HStore implements Store { + " into tmpdir=" + fs.getTempDir() + ", totalSize=" + StringUtils.humanReadableInt(cr.getSize())); - long compactionStartTime = EnvironmentEdgeManager.currentTimeMillis(); + long compactionStartTime = EnvironmentEdgeManager.nanoTime(); List sfs = null; try { // Commence the compaction. @@ -1047,7 +1047,7 @@ public class HStore implements Store { */ private void logCompactionEndMessage( CompactionRequest cr, List sfs, long compactionStartTime) { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); StringBuilder message = new StringBuilder( "Completed" + (cr.isMajor() ? " major " : " ") + "compaction of " + cr.getFiles().size() + " file(s) in " + this + " of " @@ -1753,7 +1753,7 @@ public class HStore implements Store { this.lock.readLock().lock(); try { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); return this.memstore.updateColumnValue(row, f, diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java index fd100d0..f8574e8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java @@ -279,7 +279,7 @@ public class Leases extends HasThread { } public long getDelay(TimeUnit unit) { - return unit.convert(this.expirationTime - System.currentTimeMillis(), + return unit.convert(this.expirationTime - System.nanoTime(), TimeUnit.MILLISECONDS); } @@ -294,7 +294,7 @@ public class Leases extends HasThread { * Resets the expiration time of the lease. */ public void resetExpirationTime() { - this.expirationTime = System.currentTimeMillis() + this.leaseTimeoutPeriod; + this.expirationTime = System.nanoTime() + this.leaseTimeoutPeriod; } } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java index c1a93ed..87dbabe 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java @@ -49,7 +49,7 @@ class LogRoller extends HasThread implements WALActionsListener { private final AtomicBoolean rollLog = new AtomicBoolean(false); private final Server server; protected final RegionServerServices services; - private volatile long lastrolltime = System.currentTimeMillis(); + private volatile long lastrolltime = System.nanoTime(); // Period to roll log. private final long rollperiod; private final int threadWakeFrequency; @@ -68,7 +68,7 @@ class LogRoller extends HasThread implements WALActionsListener { @Override public void run() { while (!server.isStopped()) { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); boolean periodic = false; if (!rollLog.get()) { periodic = (now - this.lastrolltime) > this.rollperiod; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java index ca34ce4..6f3a0ca 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java @@ -256,7 +256,7 @@ public class MemStore implements HeapSize { void setOldestEditTimeToNow() { if (timeOfOldestEdit == Long.MAX_VALUE) { - timeOfOldestEdit = EnvironmentEdgeManager.currentTimeMillis(); + timeOfOldestEdit = EnvironmentEdgeManager.nanoTime(); } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java index e655e35..02cd7b1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java @@ -396,7 +396,7 @@ class MemStoreFlusher implements FlushRequester { if (!region.getRegionInfo().isMetaRegion() && isTooManyStoreFiles(region)) { if (fqe.isMaximumWait(this.blockingWaitTime)) { - LOG.info("Waited " + (System.currentTimeMillis() - fqe.createTime) + + LOG.info("Waited " + (System.nanoTime() - fqe.createTime) + "ms on a compaction to clean up 'too many store files'; waited " + "long enough... proceeding with flush of " + region.getRegionNameAsString()); @@ -506,13 +506,13 @@ class MemStoreFlusher implements FlushRequester { */ public void reclaimMemStoreMemory() { if (isAboveHighWaterMark()) { - long start = System.currentTimeMillis(); + long start = System.nanoTime(); synchronized (this.blockSignal) { boolean blocked = false; long startTime = 0; while (isAboveHighWaterMark() && !server.isStopped()) { if (!blocked) { - startTime = EnvironmentEdgeManager.currentTimeMillis(); + startTime = EnvironmentEdgeManager.nanoTime(); LOG.info("Blocking updates on " + server.toString() + ": the global memstore size " + StringUtils.humanReadableInt(server.getRegionServerAccounting().getGlobalMemstoreSize()) + @@ -528,11 +528,11 @@ class MemStoreFlusher implements FlushRequester { } catch (InterruptedException ie) { Thread.currentThread().interrupt(); } - long took = System.currentTimeMillis() - start; + long took = System.nanoTime() - start; LOG.warn("Memstore is above high water mark and block " + took + "ms"); } if(blocked){ - final long totalTime = EnvironmentEdgeManager.currentTimeMillis() - startTime; + final long totalTime = EnvironmentEdgeManager.nanoTime() - startTime; if(totalTime > 0){ this.updatesBlockedMsHighWater.add(totalTime); } @@ -603,7 +603,7 @@ class MemStoreFlusher implements FlushRequester { FlushRegionEntry(final HRegion r) { this.region = r; - this.createTime = System.currentTimeMillis(); + this.createTime = System.nanoTime(); this.whenToExpire = this.createTime; } @@ -612,7 +612,7 @@ class MemStoreFlusher implements FlushRequester { * @return True if we have been delayed > maximumWait milliseconds. */ public boolean isMaximumWait(final long maximumWait) { - return (System.currentTimeMillis() - this.createTime) > maximumWait; + return (System.nanoTime() - this.createTime) > maximumWait; } /** @@ -625,19 +625,19 @@ class MemStoreFlusher implements FlushRequester { /** * @param when When to expire, when to come up out of the queue. - * Specify in milliseconds. This method adds System.currentTimeMillis() + * Specify in milliseconds. This method adds System.nanoTime() * to whatever you pass. * @return This. */ public FlushRegionEntry requeue(final long when) { - this.whenToExpire = System.currentTimeMillis() + when; + this.whenToExpire = System.nanoTime() + when; this.requeueCount++; return this; } @Override public long getDelay(TimeUnit unit) { - return unit.convert(this.whenToExpire - System.currentTimeMillis(), + return unit.convert(this.whenToExpire - System.nanoTime(), TimeUnit.MILLISECONDS); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java index f44ea43..cddca92 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java @@ -375,7 +375,7 @@ class MetricsRegionServerWrapperImpl //Compute the number of requests per second - long currentTime = EnvironmentEdgeManager.currentTimeMillis(); + long currentTime = EnvironmentEdgeManager.nanoTime(); // assume that it took PERIOD seconds to start the executor. // this is a guess but it's a pretty good one. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeRequest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeRequest.java index 084576d..c793498 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeRequest.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeRequest.java @@ -64,7 +64,7 @@ class RegionMergeRequest implements Runnable { return; } try { - final long startTime = EnvironmentEdgeManager.currentTimeMillis(); + final long startTime = EnvironmentEdgeManager.nanoTime(); RegionMergeTransaction mt = new RegionMergeTransaction(region_a, region_b, forcible); @@ -116,7 +116,7 @@ class RegionMergeRequest implements Runnable { + region_a + ", region_b=" + region_b + ",merged region=" + mt.getMergedRegionInfo().getRegionNameAsString() + ". Region merge took " - + StringUtils.formatTimeDiff(EnvironmentEdgeManager.currentTimeMillis(), startTime)); + + StringUtils.formatTimeDiff(EnvironmentEdgeManager.nanoTime(), startTime)); } catch (IOException ex) { LOG.error("Merge failed " + this, RemoteExceptionHandler.checkIOException(ex)); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeTransaction.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeTransaction.java index 59f94c0..3fa2f86 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeTransaction.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionMergeTransaction.java @@ -406,7 +406,7 @@ public class RegionMergeTransaction { */ public static HRegionInfo getMergedRegionInfo(final HRegionInfo a, final HRegionInfo b) { - long rid = EnvironmentEdgeManager.currentTimeMillis(); + long rid = EnvironmentEdgeManager.nanoTime(); // Regionid is timestamp. Merged region's id can't be less than that of // merging regions else will insert at wrong location in .META. if (rid < a.getRegionId() || rid < b.getRegionId()) { @@ -493,7 +493,7 @@ public class RegionMergeTransaction { this.mergedRegionInfo, region_a.getRegionInfo(), region_b.getRegionInfo(), server.getServerName(), this.znodeVersion); - long startTime = EnvironmentEdgeManager.currentTimeMillis(); + long startTime = EnvironmentEdgeManager.nanoTime(); int spins = 0; // Now wait for the master to process the merge. We know it's done // when the znode is deleted. The reason we keep tickling the znode is @@ -502,7 +502,7 @@ public class RegionMergeTransaction { if (spins % 10 == 0) { LOG.debug("Still waiting on the master to process the merge for " + this.mergedRegionInfo.getEncodedName() + ", waited " - + (EnvironmentEdgeManager.currentTimeMillis() - startTime) + "ms"); + + (EnvironmentEdgeManager.nanoTime() - startTime) + "ms"); } Thread.sleep(100); // When this returns -1 it means the znode doesn't exist diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java index 87f9b32..c08da34 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java @@ -322,7 +322,7 @@ public class ScanQueryMatcher { // Can't early out now, because DelFam come before any other keys } if (retainDeletesInOutput - || (!isUserScan && (EnvironmentEdgeManager.currentTimeMillis() - timestamp) <= timeToPurgeDeletes) + || (!isUserScan && (EnvironmentEdgeManager.nanoTime() - timestamp) <= timeToPurgeDeletes) || kv.getMemstoreTS() > maxReadPointToTrackVersions) { // always include or it is not time yet to check whether it is OK // to purge deltes or not diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java index 5abca00..ce67491 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java @@ -344,7 +344,7 @@ public class SplitLogWorker extends ZooKeeperListener implements Runnable { SplitLogCounters.tot_wkr_task_acquired.incrementAndGet(); getDataSetWatchAsync(); - t = System.currentTimeMillis(); + t = System.nanoTime(); TaskExecutor.Status status; status = splitTaskExecutor.exec(ZKSplitLog.getFileName(currentTask), @@ -354,7 +354,7 @@ public class SplitLogWorker extends ZooKeeperListener implements Runnable { @Override public boolean progress() { - long t = EnvironmentEdgeManager.currentTimeMillis(); + long t = EnvironmentEdgeManager.nanoTime(); if ((t - last_report_at) > report_period) { last_report_at = t; if (!attemptToOwnTask(false)) { @@ -393,7 +393,7 @@ public class SplitLogWorker extends ZooKeeperListener implements Runnable { } finally { if (t > 0) { LOG.info("worker " + serverName + " done with task " + path + - " in " + (System.currentTimeMillis() - t) + "ms"); + " in " + (System.nanoTime() - t) + "ms"); } synchronized (grabTaskLock) { workerInGrabTask = false; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java index 2d757f6..49fbe09 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java @@ -61,7 +61,7 @@ class SplitRequest implements Runnable { return; } try { - final long startTime = System.currentTimeMillis(); + final long startTime = System.nanoTime(); SplitTransaction st = new SplitTransaction(parent, midKey); //acquire a shared read lock on the table, so that table schema modifications @@ -110,7 +110,7 @@ class SplitRequest implements Runnable { + parent.getRegionNameAsString() + ", new regions: " + st.getFirstDaughter().getRegionNameAsString() + ", " + st.getSecondDaughter().getRegionNameAsString() + ". Split took " - + StringUtils.formatTimeDiff(System.currentTimeMillis(), startTime)); + + StringUtils.formatTimeDiff(System.nanoTime(), startTime)); } catch (IOException ex) { LOG.error("Split failed " + this, RemoteExceptionHandler.checkIOException(ex)); server.checkFileSystem(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java index 4f883a3..89a03c3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java @@ -180,7 +180,7 @@ public class SplitTransaction { * @return Daughter region id (timestamp) to use. */ private static long getDaughterRegionIdTimestamp(final HRegionInfo hri) { - long rid = EnvironmentEdgeManager.currentTimeMillis(); + long rid = EnvironmentEdgeManager.nanoTime(); // Regionid is timestamp. Can't be less than that of parent else will insert // at wrong location in .META. (See HBASE-710). if (rid < hri.getRegionId()) { @@ -532,7 +532,7 @@ public class SplitTransaction { @Override public boolean progress() { - long now = System.currentTimeMillis(); + long now = System.nanoTime(); if (now - lastLog > this.interval) { LOG.info("Opening " + this.hri.getRegionNameAsString()); this.lastLog = now; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java index fb0ac38..7262146 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java @@ -101,7 +101,7 @@ public class StoreScanner extends NonLazyKeyValueScanner explicitColumnQuery = numCol > 0; this.scan = scan; this.columns = columns; - oldestUnexpiredTS = EnvironmentEdgeManager.currentTimeMillis() - ttl; + oldestUnexpiredTS = EnvironmentEdgeManager.nanoTime() - ttl; this.minVersions = minVersions; // We look up row-column Bloom filters for multi-column queries as part of diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java index 3e75b8b..05c3344 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java @@ -61,7 +61,7 @@ public class CompactionRequest implements Comparable { * This ctor should be used by coprocessors that want to subclass CompactionRequest. */ public CompactionRequest() { - this.selectionTime = EnvironmentEdgeManager.currentTimeMillis(); + this.selectionTime = EnvironmentEdgeManager.nanoTime(); this.timeInNanos = System.nanoTime(); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.java index 5df1545..7d334ec 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.java @@ -54,7 +54,7 @@ public class CurrentHourProvider { public static int getCurrentHour() { Tick tick = CurrentHourProvider.tick; - if(System.currentTimeMillis() < tick.expirationTimeInMillis) { + if(System.nanoTime() < tick.expirationTimeInMillis) { return tick.currentHour; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java index 4e9cbc1..d00e11f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java @@ -98,7 +98,7 @@ public class RatioBasedCompactionPolicy extends CompactionPolicy { // If there are expired files, only select them so that compaction deletes them if (comConf.shouldDeleteExpired() && (cfTtl != Long.MAX_VALUE)) { ArrayList expiredSelection = selectExpiredStoreFiles( - candidateSelection, EnvironmentEdgeManager.currentTimeMillis() - cfTtl); + candidateSelection, EnvironmentEdgeManager.nanoTime() - cfTtl); if (expiredSelection != null) { return new CompactionRequest(expiredSelection); } @@ -324,7 +324,7 @@ public class RatioBasedCompactionPolicy extends CompactionPolicy { } // TODO: Use better method for determining stamp of last major (HBASE-2990) long lowTimestamp = StoreUtils.getLowestTimestamp(filesToCompact); - long now = System.currentTimeMillis(); + long now = System.nanoTime(); if (lowTimestamp > 0l && lowTimestamp < (now - mcTime)) { // Major compaction time has elapsed. long cfTtl = this.storeConfigInfo.getStoreFileTtl(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java index 0b47a74..b4041ee 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java @@ -255,7 +255,7 @@ public class OpenRegionHandler extends EventHandler { // Total timeout for meta edit. If we fail adding the edit then close out // the region and let it be assigned elsewhere. long timeout = assignmentTimeout * 10; - long now = System.currentTimeMillis(); + long now = System.nanoTime(); long endTime = now + timeout; // Let our period at which we update OPENING state to be be 1/3rd of the // regions-in-transition timeout period. @@ -277,7 +277,7 @@ public class OpenRegionHandler extends EventHandler { // Go to the loop check. } } - now = System.currentTimeMillis(); + now = System.nanoTime(); } // Is thread still alive? We may have left above loop because server is // stopping or we timed out the edit. Is so, interrupt it. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java index 31440a7..1f86d81 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java @@ -493,7 +493,7 @@ class FSHLog implements HLog, Syncable { //computeFilename will take care of meta hlog filename oldPath = computeFilename(currentFilenum); } - this.filenum = System.currentTimeMillis(); + this.filenum = System.nanoTime(); Path newPath = computeFilename(); // Tell our listeners that a new log is about to be created @@ -1023,7 +1023,7 @@ class FSHLog implements HLog, Syncable { } try { long doneUpto; - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); // First flush all the pending writes to HDFS. Then // issue the sync to HDFS. If sync is successful, then update // syncedTillHere to indicate that transactions till this @@ -1069,7 +1069,7 @@ class FSHLog implements HLog, Syncable { } this.syncedTillHere = Math.max(this.syncedTillHere, doneUpto); - this.metrics.finishSync(EnvironmentEdgeManager.currentTimeMillis() - now); + this.metrics.finishSync(EnvironmentEdgeManager.nanoTime() - now); // TODO: preserving the old behavior for now, but this check is strange. It's not // protected by any locks here, so for all we know rolling locks might start // as soon as we enter the "if". Is this best-effort optimization check? @@ -1204,7 +1204,7 @@ class FSHLog implements HLog, Syncable { } } try { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); // coprocessor hook: if (!coprocessorHost.preWALWrite(info, logKey, logEdit)) { if (logEdit.isReplay()) { @@ -1214,7 +1214,7 @@ class FSHLog implements HLog, Syncable { // write to our buffer for the Hlog file. logSyncer.append(new FSHLog.Entry(logKey, logEdit)); } - long took = EnvironmentEdgeManager.currentTimeMillis() - now; + long took = EnvironmentEdgeManager.nanoTime() - now; coprocessorHost.postWALWrite(info, logKey, logEdit); long len = 0; for (KeyValue kv : logEdit.getKeyValues()) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogFactory.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogFactory.java index fb97f22..55a6f38 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogFactory.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogFactory.java @@ -102,7 +102,7 @@ public class HLogFactory { // A hlog file could be under recovery, so it may take several // tries to get it open. Instead of claiming it is corrupted, retry // to open it up to 5 minutes by default. - long startWaiting = EnvironmentEdgeManager.currentTimeMillis(); + long startWaiting = EnvironmentEdgeManager.nanoTime(); long openTimeout = conf.getInt("hbase.hlog.open.timeout", 300000) + startWaiting; int nbAttempt = 0; while (true) { @@ -137,9 +137,9 @@ public class HLogFactory { if (reporter != null && !reporter.progress()) { throw new InterruptedIOException("Operation is cancelled"); } - if (nbAttempt > 2 && openTimeout < EnvironmentEdgeManager.currentTimeMillis()) { + if (nbAttempt > 2 && openTimeout < EnvironmentEdgeManager.nanoTime()) { LOG.error("Can't open after " + nbAttempt + " attempts and " - + (EnvironmentEdgeManager.currentTimeMillis() - startWaiting) + + (EnvironmentEdgeManager.nanoTime() - startWaiting) + "ms " + " for " + path); } else { try { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java index e037584..72e8fa8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java @@ -283,7 +283,7 @@ public class HLogSplitter { status = TaskMonitor.get().createStatus( "Splitting logs in " + srcDir); - long startTime = EnvironmentEdgeManager.currentTimeMillis(); + long startTime = EnvironmentEdgeManager.nanoTime(); status.setStatus("Determining files to split..."); List splits = null; @@ -301,7 +301,7 @@ public class HLogSplitter { + srcDir.toString()); splits = splitLog(logfiles, latch); - splitTime = EnvironmentEdgeManager.currentTimeMillis() - startTime; + splitTime = EnvironmentEdgeManager.nanoTime() - startTime; String msg = "hlog file splitting completed in " + splitTime + " ms for " + srcDir.toString(); status.markComplete(msg); @@ -1929,14 +1929,14 @@ public class HLogSplitter { private HRegionLocation waitUntilRegionOnline(HRegionLocation loc, byte[] row, final long timeout) throws IOException { - final long endTime = EnvironmentEdgeManager.currentTimeMillis() + timeout; + final long endTime = EnvironmentEdgeManager.nanoTime() + timeout; final long pause = conf.getLong(HConstants.HBASE_CLIENT_PAUSE, HConstants.DEFAULT_HBASE_CLIENT_PAUSE); boolean reloadLocation = false; byte[] tableName = loc.getRegionInfo().getTableName(); int tries = 0; Throwable cause = null; - while (endTime > EnvironmentEdgeManager.currentTimeMillis()) { + while (endTime > EnvironmentEdgeManager.nanoTime()) { try { // Try and get regioninfo from the hosting server. HConnection hconn = getConnectionByTableName(tableName); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogUtil.java index 95fbda9..754637a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogUtil.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogUtil.java @@ -100,7 +100,7 @@ public class HLogUtil { public static Path moveAsideBadEditsFile(final FileSystem fs, final Path edits) throws IOException { Path moveAsideName = new Path(edits.getParent(), edits.getName() + "." - + System.currentTimeMillis()); + + System.nanoTime()); if (!fs.rename(edits, moveAsideName)) { LOG.warn("Rename failed from " + edits + " to " + moveAsideName); } @@ -260,7 +260,7 @@ public class HLogUtil { final CompactionDescriptor c) throws IOException { WALEdit e = WALEdit.createCompaction(c); log.append(info, c.getTableName().toByteArray(), e, - EnvironmentEdgeManager.currentTimeMillis(), htd, false); + EnvironmentEdgeManager.nanoTime(), htd, false); if (LOG.isTraceEnabled()) { LOG.trace("Appended compaction marker " + TextFormat.shortDebugString(c)); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEdit.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEdit.java index d8b163f..9a599a1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEdit.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEdit.java @@ -255,7 +255,7 @@ public class WALEdit implements Writable, HeapSize { */ public static WALEdit createCompaction(final CompactionDescriptor c) { byte [] pbbytes = c.toByteArray(); - KeyValue kv = new KeyValue(METAROW, METAFAMILY, COMPACTION, System.currentTimeMillis(), pbbytes); + KeyValue kv = new KeyValue(METAROW, METAFAMILY, COMPACTION, System.nanoTime(), pbbytes); return new WALEdit().add(kv); //replication scope null so that this won't be replicated } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEditsReplaySink.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEditsReplaySink.java index 37f8dcc..ad98f4b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEditsReplaySink.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEditsReplaySink.java @@ -123,7 +123,7 @@ public class WALEditsReplaySink { dataSize += row.getRow().length; } - long startTime = EnvironmentEdgeManager.currentTimeMillis(); + long startTime = EnvironmentEdgeManager.nanoTime(); // replaying edits by region for (HRegionInfo curRegion : actionsByRegion.keySet()) { @@ -141,7 +141,7 @@ public class WALEditsReplaySink { } } - long endTime = EnvironmentEdgeManager.currentTimeMillis() - startTime; + long endTime = EnvironmentEdgeManager.nanoTime() - startTime; LOG.debug("number of rows:" + actions.size() + " are sent by batch! spent " + endTime + "(ms)!"); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSink.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSink.java index 2a715c0..1f27fad 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSink.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSink.java @@ -34,7 +34,7 @@ public class MetricsSink { public static final String SINK_APPLIED_OPS = "sink.appliedOps"; private MetricsReplicationSource rms; - private long lastTimestampForAge = System.currentTimeMillis(); + private long lastTimestampForAge = System.nanoTime(); public MetricsSink() { rms = CompatibilitySingletonFactory.getInstance(MetricsReplicationSource.class); @@ -48,7 +48,7 @@ public class MetricsSink { */ public long setAgeOfLastAppliedOp(long timestamp) { lastTimestampForAge = timestamp; - long age = System.currentTimeMillis() - lastTimestampForAge; + long age = System.nanoTime() - lastTimestampForAge; rms.setGauge(SINK_AGE_OF_LAST_APPLIED_OP, age); return age; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java index e632c47..a222a09 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java @@ -76,7 +76,7 @@ public class MetricsSource { * @param timestamp write time of the edit */ public void setAgeOfLastShippedOp(long timestamp) { - long age = EnvironmentEdgeManager.currentTimeMillis() - timestamp; + long age = EnvironmentEdgeManager.nanoTime() - timestamp; rms.setGauge(ageOfLastShippedOpKey, age); rms.setGauge(SOURCE_AGE_OF_LAST_SHIPPED_OP, age); this.lastTimestamp = timestamp; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java index a4a0fdc..0f6b129 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java @@ -231,7 +231,7 @@ public class RESTServer implements Constants { // Put up info server. int port = conf.getInt("hbase.rest.info.port", 8085); if (port >= 0) { - conf.setLong("startcode", System.currentTimeMillis()); + conf.setLong("startcode", System.nanoTime()); String a = conf.get("hbase.rest.info.bindAddress", "0.0.0.0"); InfoServer infoServer = new InfoServer("rest", a, port, false, conf); infoServer.setAttribute("hbase.conf", conf); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java index 75156d0..bebd3cd 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java @@ -96,7 +96,7 @@ public class ScannerResultGenerator extends ResultGenerator { } scanner = table.getScanner(scan); cached = null; - id = Long.toString(System.currentTimeMillis()) + + id = Long.toString(System.nanoTime()) + Integer.toHexString(scanner.hashCode()); } finally { table.close(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/client/Client.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/client/Client.java index 3cb6fcd..48428ed 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/client/Client.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/client/Client.java @@ -186,9 +186,9 @@ public class Client { method.addRequestHeader(header); } } - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); int code = httpClient.executeMethod(method); - long endTime = System.currentTimeMillis(); + long endTime = System.nanoTime(); if (LOG.isDebugEnabled()) { LOG.debug(method.getName() + " " + uri + " " + code + " " + method.getStatusText() + " in " + (endTime - startTime) + " ms"); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java index 05e13a2..bf391c3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java @@ -124,7 +124,7 @@ public class AuthenticationTokenSecretManager @Override protected byte[] createPassword(AuthenticationTokenIdentifier identifier) { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); AuthenticationKey secretKey = currentKey; identifier.setKeyId(secretKey.getKeyId()); identifier.setIssueDate(now); @@ -137,7 +137,7 @@ public class AuthenticationTokenSecretManager @Override public byte[] retrievePassword(AuthenticationTokenIdentifier identifier) throws InvalidToken { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); if (identifier.getExpirationDate() < now) { throw new InvalidToken("Token has expired"); } @@ -220,7 +220,7 @@ public class AuthenticationTokenSecretManager return; } - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); Iterator iter = allKeys.values().iterator(); while (iter.hasNext()) { AuthenticationKey key = iter.next(); @@ -244,7 +244,7 @@ public class AuthenticationTokenSecretManager return; } - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); AuthenticationKey prev = currentKey; AuthenticationKey newKey = new AuthenticationKey(++idSeq, Long.MAX_VALUE, // don't allow to expire until it's replaced by a new key @@ -311,7 +311,7 @@ public class AuthenticationTokenSecretManager isMaster = true; while (!stopped) { - long now = EnvironmentEdgeManager.currentTimeMillis(); + long now = EnvironmentEdgeManager.nanoTime(); // clear any expired removeExpiredKeys(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java index a52ba37..f1affe6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java @@ -464,7 +464,7 @@ public final class ExportSnapshot extends Configured implements Tool { throws IOException, InterruptedException { Path stagingDir = JobUtil.getStagingDir(conf); return new Path(stagingDir, INPUT_FOLDER_PREFIX + - String.valueOf(EnvironmentEdgeManager.currentTimeMillis())); + String.valueOf(EnvironmentEdgeManager.nanoTime())); } /** diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java index 5309474..8be3523 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java @@ -231,9 +231,9 @@ public class SnapshotDescriptionUtils { // set the creation time, if one hasn't been set long time = snapshot.getCreationTime(); if (time == SnapshotDescriptionUtils.NO_SNAPSHOT_START_TIME_SPECIFIED) { - time = EnvironmentEdgeManager.currentTimeMillis(); + time = EnvironmentEdgeManager.nanoTime(); LOG.debug("Creation time not specified, setting to:" + time + " (current time:" - + EnvironmentEdgeManager.currentTimeMillis() + ")."); + + EnvironmentEdgeManager.nanoTime() + ")."); SnapshotDescription.Builder builder = snapshot.toBuilder(); builder.setCreationTime(time); snapshot = builder.build(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.java index 5a85e52..71e5944 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.java @@ -219,7 +219,7 @@ public class TBoundedThreadPoolServer extends TServer { long msLeftToWait = serverOptions.stopTimeoutUnit.toMillis(serverOptions.stopTimeoutVal); - long timeMillis = System.currentTimeMillis(); + long timeMillis = System.nanoTime(); LOG.info("Waiting for up to " + msLeftToWait + " ms to finish processing" + " pending requests"); @@ -229,7 +229,7 @@ public class TBoundedThreadPoolServer extends TServer { executorService.awaitTermination(msLeftToWait, TimeUnit.MILLISECONDS); break; } catch (InterruptedException ix) { - long timePassed = System.currentTimeMillis() - timeMillis; + long timePassed = System.nanoTime() - timeMillis; msLeftToWait -= timePassed; timeMillis += timePassed; interrupted = true; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java index d723fb4..bf01da2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java @@ -106,7 +106,7 @@ public class ThriftServer { // Put up info server. int port = conf.getInt("hbase.thrift.info.port", 9095); if (port >= 0) { - conf.setLong("startcode", System.currentTimeMillis()); + conf.setLong("startcode", System.nanoTime()); String a = conf.get("hbase.thrift.info.bindAddress", "0.0.0.0"); infoServer = new InfoServer("thrift", a, port, false, conf); infoServer.setAttribute("hbase.conf", conf); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java index c06b2ec..c396b79 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java @@ -288,7 +288,7 @@ public class ThriftServer { // Put up info server. int port = conf.getInt("hbase.thrift.info.port", 9095); if (port >= 0) { - conf.setLong("startcode", System.currentTimeMillis()); + conf.setLong("startcode", System.nanoTime()); String a = conf.get("hbase.thrift.info.bindAddress", "0.0.0.0"); InfoServer infoServer = new InfoServer("thrift", a, port, false, conf); infoServer.setAttribute("hbase.conf", conf); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java index a3c88c6..ebfe5a9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java @@ -234,9 +234,9 @@ public final class Canary implements Tool { get.addFamily(column.getName()); try { - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); table.get(get); - long time = System.currentTimeMillis() - startTime; + long time = System.nanoTime() - startTime; sink.publishReadTiming(region, column, time); } catch (Exception e) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java index 659e63b..8373286 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java @@ -84,7 +84,7 @@ public class FSHDFSUtils extends FSUtils { final Configuration conf, final CancelableProgressable reporter) throws IOException { LOG.info("Recovering lease on dfs file " + p); - long startWaiting = EnvironmentEdgeManager.currentTimeMillis(); + long startWaiting = EnvironmentEdgeManager.nanoTime(); // Default is 15 minutes. It's huge, but the idea is that if we have a major issue, HDFS // usually needs 10 minutes before marking the nodes as dead. So we're putting ourselves // beyond that limit 'to be safe'. @@ -109,8 +109,8 @@ public class FSHDFSUtils extends FSUtils { } else { // Cycle here until subsequentPause elapses. While spinning, check isFileClosed if // available (should be in hadoop 2.0.5... not in hadoop 1 though. - long localStartWaiting = EnvironmentEdgeManager.currentTimeMillis(); - while ((EnvironmentEdgeManager.currentTimeMillis() - localStartWaiting) < + long localStartWaiting = EnvironmentEdgeManager.nanoTime(); + while ((EnvironmentEdgeManager.nanoTime() - localStartWaiting) < subsequentPause) { Thread.sleep(conf.getInt("hbase.lease.recovery.pause", 1000)); if (isFileClosed(dfs, p)) break; @@ -128,7 +128,7 @@ public class FSHDFSUtils extends FSUtils { boolean checkIfTimedout(final Configuration conf, final long recoveryTimeout, final int nbAttempt, final Path p, final long startWaiting) { - if (recoveryTimeout < EnvironmentEdgeManager.currentTimeMillis()) { + if (recoveryTimeout < EnvironmentEdgeManager.nanoTime()) { LOG.warn("Cannot recoverLease after trying for " + conf.getInt("hbase.lease.recovery.timeout", 900000) + "ms (hbase.lease.recovery.timeout); continuing, but may be DATALOSS!!!; " + @@ -175,7 +175,7 @@ public class FSHDFSUtils extends FSUtils { */ private String getLogMessageDetail(final int nbAttempt, final Path p, final long startWaiting) { return "attempt=" + nbAttempt + " on file=" + p + " after " + - (EnvironmentEdgeManager.currentTimeMillis() - startWaiting) + "ms"; + (EnvironmentEdgeManager.nanoTime() - startWaiting) + "ms"; } /** diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java index 9bb07bb..5247947 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java @@ -724,7 +724,7 @@ public abstract class FSUtils { throws IOException { // Rewrite the file as pb. Move aside the old one first, write new // then delete the moved-aside file. - Path movedAsideName = new Path(p + "." + System.currentTimeMillis()); + Path movedAsideName = new Path(p + "." + System.nanoTime()); if (!fs.rename(p, movedAsideName)) throw new IOException("Failed rename of " + p); setClusterId(fs, rootdir, cid, 100); if (!fs.delete(movedAsideName, false)) { @@ -1648,7 +1648,7 @@ public abstract class FSUtils { public static boolean renameAndSetModifyTime(final FileSystem fs, final Path src, final Path dest) throws IOException { // set the modify time for TimeToLive Cleaner - fs.setTimes(src, EnvironmentEdgeManager.currentTimeMillis(), -1); + fs.setTimes(src, EnvironmentEdgeManager.nanoTime(), -1); return fs.rename(src, dest); } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java index 920b66d..3702bb2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java @@ -178,7 +178,7 @@ public class HBaseFsck extends Configured implements Tool { private HBaseAdmin admin; private HTable meta; protected ExecutorService executor; // threads to retrieve data from regionservers - private long startMillis = System.currentTimeMillis(); + private long startMillis = System.nanoTime(); private HFileCorruptionChecker hfcc; private int retcode = 0; @@ -1336,7 +1336,7 @@ public class HBaseFsck extends Configured implements Tool { throw new IOException(e); } MetaEntry m = - new MetaEntry(metaLocation.getRegionInfo(), sn, System.currentTimeMillis()); + new MetaEntry(metaLocation.getRegionInfo(), sn, System.nanoTime()); HbckInfo hbInfo = new HbckInfo(m); regionInfoMap.put(metaLocation.getRegionInfo().getEncodedName(), hbInfo); return true; @@ -1602,7 +1602,7 @@ public class HBaseFsck extends Configured implements Tool { (hbi.metaEntry == null)? false: hbi.metaEntry.isSplit() && hbi.metaEntry.isOffline(); boolean shouldBeDeployed = inMeta && !isTableDisabled(hbi.metaEntry); boolean recentlyModified = inHdfs && - hbi.getModTime() + timelag > System.currentTimeMillis(); + hbi.getModTime() + timelag > System.nanoTime(); // ========== First the healthy cases ============= if (hbi.containsOnlyHdfsEdits()) { @@ -2431,7 +2431,7 @@ public class HBaseFsck extends Configured implements Tool { */ HTableDescriptor[] getTables(AtomicInteger numSkipped) { List tableNames = new ArrayList(); - long now = System.currentTimeMillis(); + long now = System.nanoTime(); for (HbckInfo hbi : regionInfoMap.values()) { MetaEntry info = hbi.metaEntry; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java index 23b5e97..31dd736 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java @@ -119,8 +119,8 @@ public class HBaseFsckRepair { public static void waitUntilAssigned(HBaseAdmin admin, HRegionInfo region) throws IOException, InterruptedException { long timeout = admin.getConfiguration().getLong("hbase.hbck.assign.timeout", 120000); - long expiration = timeout + System.currentTimeMillis(); - while (System.currentTimeMillis() < expiration) { + long expiration = timeout + System.nanoTime(); + while (System.nanoTime() < expiration) { try { Map rits= admin.getClusterStatus().getRegionsInTransition(); @@ -157,8 +157,8 @@ public class HBaseFsckRepair { } long timeout = admin.getConfiguration() .getLong("hbase.hbck.close.timeout", 120000); - long expiration = timeout + System.currentTimeMillis(); - while (System.currentTimeMillis() < expiration) { + long expiration = timeout + System.nanoTime(); + while (System.nanoTime() < expiration) { try { HRegionInfo rsRegion = ProtobufUtil.getRegionInfo(rs, region.getRegionName()); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HMerge.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HMerge.java index 14ab22b..0593420 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HMerge.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HMerge.java @@ -154,7 +154,7 @@ class HMerge { this.rootDir = FSUtils.getRootDir(conf); Path tabledir = HTableDescriptor.getTableDir(this.rootDir, tableName); this.htd = FSTableDescriptors.getTableDescriptor(this.fs, tabledir); - String logname = "merge_" + System.currentTimeMillis() + HConstants.HREGION_LOGDIR_NAME; + String logname = "merge_" + System.nanoTime() + HConstants.HREGION_LOGDIR_NAME; this.hlog = HLogFactory.createHLog(fs, tabledir, logname, conf); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java index 149b057..766bba7 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java @@ -180,13 +180,13 @@ public class JVMClusterUtil { // Wait for an active master // having an active master before starting the region threads allows // then to succeed on their connection to master - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); while (findActiveMaster(masters) == null) { try { Thread.sleep(100); } catch (InterruptedException ignored) { } - if (System.currentTimeMillis() > startTime + 30000) { + if (System.nanoTime() > startTime + 30000) { throw new RuntimeException("Master not active after 30 seconds"); } } @@ -202,7 +202,7 @@ public class JVMClusterUtil { // Wait for an active master to be initialized (implies being master) // with this, when we return the cluster is complete - startTime = System.currentTimeMillis(); + startTime = System.nanoTime(); final int maxwait = 200000; while (true) { JVMClusterUtil.MasterThread t = findActiveMaster(masters); @@ -210,11 +210,11 @@ public class JVMClusterUtil { return t.master.getServerName().toString(); } // REMOVE - if (System.currentTimeMillis() > startTime + 10000) { + if (System.nanoTime() > startTime + 10000) { Threads.sleep(1000); } - if (System.currentTimeMillis() > startTime + maxwait) { + if (System.nanoTime() > startTime + maxwait) { String msg = "Master not initialized after " + maxwait + "ms seconds"; ReflectionUtils.printThreadInfo(new PrintWriter(System.out), "Thread dump because: " + msg); @@ -251,14 +251,14 @@ public class JVMClusterUtil { } boolean wasInterrupted = false; - final long maxTime = System.currentTimeMillis() + 120 * 1000; + final long maxTime = System.nanoTime() + 120 * 1000; if (regionservers != null) { // first try nicely. for (RegionServerThread t : regionservers) { t.getRegionServer().stop("Shutdown requested"); } for (RegionServerThread t : regionservers) { - if (t.isAlive() && !wasInterrupted && System.currentTimeMillis() < maxTime) { + if (t.isAlive() && !wasInterrupted && System.nanoTime() < maxTime) { try { t.join(maxTime); } catch (InterruptedException e) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ManualEnvironmentEdge.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ManualEnvironmentEdge.java index e33bf0c..ec2120d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ManualEnvironmentEdge.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ManualEnvironmentEdge.java @@ -39,7 +39,7 @@ public class ManualEnvironmentEdge implements EnvironmentEdge { } @Override - public long currentTimeMillis() { + public long nanoTime() { return this.value; } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/Merge.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/Merge.java index c692350..78042c1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/Merge.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/Merge.java @@ -223,7 +223,7 @@ public class Merge extends Configured implements Tool { } Delete delete = new Delete(regioninfo.getRegionName(), - System.currentTimeMillis()); + System.nanoTime()); meta.delete(delete); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java index 1dcae60..0f21d50 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/MetaUtils.java @@ -87,7 +87,7 @@ public class MetaUtils { public synchronized HLog getLog() throws IOException { if (this.log == null) { String logName = - HConstants.HREGION_LOGDIR_NAME + "_" + System.currentTimeMillis(); + HConstants.HREGION_LOGDIR_NAME + "_" + System.nanoTime(); this.log = HLogFactory.createHLog(this.fs, this.fs.getHomeDirectory(), logName, this.conf); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java index f811ab7..f39cf65 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java @@ -436,7 +436,7 @@ public class RegionSplitter { daughterRegions.get(rsLocation).add(dr); } LOG.debug("Done with bucketing. Split time!"); - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); // open the split file and modify it as splits finish FSDataInputStream tmpIn = fs.open(splitFile); @@ -554,7 +554,7 @@ public class RegionSplitter { + " " + splitAlgo.rowToStr(region.getSecond()) + "\n"); splitCount++; if (splitCount % 10 == 0) { - long tDiff = (System.currentTimeMillis() - startTime) + long tDiff = (System.nanoTime() - startTime) / splitCount; LOG.debug("STATUS UPDATE: " + splitCount + " / " + origCount + ". Avg Time / Split = " @@ -580,7 +580,7 @@ public class RegionSplitter { } LOG.debug("All regions have been successfully split!"); } finally { - long tDiff = System.currentTimeMillis() - startTime; + long tDiff = System.nanoTime() - startTime; LOG.debug("TOTAL TIME = " + org.apache.hadoop.util.StringUtils.formatTime(tDiff)); LOG.debug("Splits = " + splitCount); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java index a7afc10..d970079 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java @@ -50,7 +50,7 @@ public class TableLockChecker { public void checkTableLocks() throws IOException { TableLockManager tableLockManager = TableLockManager.createTableLockManager(zkWatcher.getConfiguration(), zkWatcher, null); - final long expireDate = EnvironmentEdgeManager.currentTimeMillis() - expireTimeout; + final long expireDate = EnvironmentEdgeManager.nanoTime() - expireTimeout; MetadataHandler handler = new MetadataHandler() { @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java index a055a5f..dd0c455 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java @@ -318,7 +318,7 @@ public class MiniZooKeeperCluster { // XXX: From o.a.zk.t.ClientBase private static boolean waitForServerDown(int port, long timeout) { - long start = System.currentTimeMillis(); + long start = System.nanoTime(); while (true) { try { Socket sock = new Socket("localhost", port); @@ -333,7 +333,7 @@ public class MiniZooKeeperCluster { return true; } - if (System.currentTimeMillis() > start + timeout) { + if (System.nanoTime() > start + timeout) { break; } try { @@ -347,7 +347,7 @@ public class MiniZooKeeperCluster { // XXX: From o.a.zk.t.ClientBase private static boolean waitForServerUp(int port, long timeout) { - long start = System.currentTimeMillis(); + long start = System.nanoTime(); while (true) { try { Socket sock = new Socket("localhost", port); @@ -374,7 +374,7 @@ public class MiniZooKeeperCluster { LOG.info("server localhost:" + port + " not up " + e); } - if (System.currentTimeMillis() > start + timeout) { + if (System.nanoTime() > start + timeout) { break; } try { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java index d691bd6..9547d91 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java @@ -167,7 +167,7 @@ public abstract class ZKInterProcessLockBase implements InterProcessLock { throws IOException, InterruptedException { boolean hasTimeout = timeoutMs != -1; long waitUntilMs = - hasTimeout ?EnvironmentEdgeManager.currentTimeMillis() + timeoutMs : -1; + hasTimeout ?EnvironmentEdgeManager.nanoTime() + timeoutMs : -1; String createdZNode; try { createdZNode = createLockZNode(); @@ -196,7 +196,7 @@ public abstract class ZKInterProcessLockBase implements InterProcessLock { if (ZKUtil.setWatchIfNodeExists(zkWatcher, zkPathToWatch)) { // Wait for the watcher to fire if (hasTimeout) { - long remainingMs = waitUntilMs - EnvironmentEdgeManager.currentTimeMillis(); + long remainingMs = waitUntilMs - EnvironmentEdgeManager.nanoTime(); if (remainingMs < 0 || !deletedLatch.await(remainingMs, TimeUnit.MILLISECONDS)) { LOG.warn("Unable to acquire the lock in " + timeoutMs + @@ -390,7 +390,7 @@ public abstract class ZKInterProcessLockBase implements InterProcessLock { KeeperException deferred = null; Stat stat = new Stat(); - long expireDate = System.currentTimeMillis() - timeout; //we are using cTime in zookeeper + long expireDate = System.nanoTime() - timeout; //we are using cTime in zookeeper for (String child : children) { if (isChildOfSameType(child)) { String znode = ZKUtil.joinZNode(parentLockNode, child); diff --git a/hbase-server/src/main/resources/hbase-webapps/rest/rest.jsp b/hbase-server/src/main/resources/hbase-webapps/rest/rest.jsp index d9f8647..44d8034 100644 --- a/hbase-server/src/main/resources/hbase-webapps/rest/rest.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/rest/rest.jsp @@ -26,7 +26,7 @@ <% Configuration conf = (Configuration)getServletContext().getAttribute("hbase.conf"); -long startcode = conf.getLong("startcode", System.currentTimeMillis()); +long startcode = conf.getLong("startcode", System.nanoTime()); String listenPort = conf.get("hbase.rest.port", "8080"); %>