|
@@ -35,6 +35,8 @@ import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
|
|
|
|
|
|
+import static org.apache.hadoop.util.Time.monotonicNow;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Customizable RPC performance monitor. Receives events from the RPC server
|
|
* Customizable RPC performance monitor. Receives events from the RPC server
|
|
* and aggregates them via JMX.
|
|
* and aggregates them via JMX.
|
|
@@ -120,12 +122,12 @@ public class FederationRPCPerformanceMonitor implements RouterRpcMonitor {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void startOp() {
|
|
public void startOp() {
|
|
- START_TIME.set(this.getNow());
|
|
|
|
|
|
+ START_TIME.set(monotonicNow());
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public long proxyOp() {
|
|
public long proxyOp() {
|
|
- PROXY_TIME.set(this.getNow());
|
|
|
|
|
|
+ PROXY_TIME.set(monotonicNow());
|
|
long processingTime = getProcessingTime();
|
|
long processingTime = getProcessingTime();
|
|
if (processingTime >= 0) {
|
|
if (processingTime >= 0) {
|
|
metrics.addProcessingTime(processingTime);
|
|
metrics.addProcessingTime(processingTime);
|
|
@@ -188,13 +190,6 @@ public class FederationRPCPerformanceMonitor implements RouterRpcMonitor {
|
|
metrics.incrRouterFailureLocked();
|
|
metrics.incrRouterFailureLocked();
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * Get current time.
|
|
|
|
- * @return Current time in nanoseconds.
|
|
|
|
- */
|
|
|
|
- private long getNow() {
|
|
|
|
- return System.nanoTime();
|
|
|
|
- }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* Get time between we receiving the operation and sending it to the Namenode.
|
|
* Get time between we receiving the operation and sending it to the Namenode.
|
|
@@ -214,7 +209,7 @@ public class FederationRPCPerformanceMonitor implements RouterRpcMonitor {
|
|
*/
|
|
*/
|
|
private long getProxyTime() {
|
|
private long getProxyTime() {
|
|
if (PROXY_TIME.get() != null && PROXY_TIME.get() > 0) {
|
|
if (PROXY_TIME.get() != null && PROXY_TIME.get() > 0) {
|
|
- return getNow() - PROXY_TIME.get();
|
|
|
|
|
|
+ return monotonicNow() - PROXY_TIME.get();
|
|
}
|
|
}
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|