HDFS-6236. ImageServlet should use Time#monotonicNow to measure latency. Contributed by Chris Nauroth.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1586902 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9274626a11
commit
193f11a7ab
|
@ -387,6 +387,9 @@ Release 2.4.1 - UNRELEASED
|
||||||
HDFS-6232. OfflineEditsViewer throws a NPE on edits containing ACL
|
HDFS-6232. OfflineEditsViewer throws a NPE on edits containing ACL
|
||||||
modifications (ajisakaa via cmccabe)
|
modifications (ajisakaa via cmccabe)
|
||||||
|
|
||||||
|
HDFS-6236. ImageServlet should use Time#monotonicNow to measure latency.
|
||||||
|
(cnauroth)
|
||||||
|
|
||||||
Release 2.4.0 - 2014-04-07
|
Release 2.4.0 - 2014-04-07
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.hadoop.hdfs.server.namenode;
|
package org.apache.hadoop.hdfs.server.namenode;
|
||||||
|
|
||||||
import static org.apache.hadoop.util.Time.now;
|
import static org.apache.hadoop.util.Time.monotonicNow;
|
||||||
|
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.security.PrivilegedExceptionAction;
|
import java.security.PrivilegedExceptionAction;
|
||||||
|
@ -116,11 +116,11 @@ public class ImageServlet extends HttpServlet {
|
||||||
throw new IOException(errorMessage);
|
throw new IOException(errorMessage);
|
||||||
}
|
}
|
||||||
CheckpointFaultInjector.getInstance().beforeGetImageSetsHeaders();
|
CheckpointFaultInjector.getInstance().beforeGetImageSetsHeaders();
|
||||||
long start = now();
|
long start = monotonicNow();
|
||||||
serveFile(imageFile);
|
serveFile(imageFile);
|
||||||
|
|
||||||
if (metrics != null) { // Metrics non-null only when used inside name node
|
if (metrics != null) { // Metrics non-null only when used inside name node
|
||||||
long elapsed = now() - start;
|
long elapsed = monotonicNow() - start;
|
||||||
metrics.addGetImage(elapsed);
|
metrics.addGetImage(elapsed);
|
||||||
}
|
}
|
||||||
} else if (parsedParams.isGetEdit()) {
|
} else if (parsedParams.isGetEdit()) {
|
||||||
|
@ -129,11 +129,11 @@ public class ImageServlet extends HttpServlet {
|
||||||
|
|
||||||
File editFile = nnImage.getStorage()
|
File editFile = nnImage.getStorage()
|
||||||
.findFinalizedEditsFile(startTxId, endTxId);
|
.findFinalizedEditsFile(startTxId, endTxId);
|
||||||
long start = now();
|
long start = monotonicNow();
|
||||||
serveFile(editFile);
|
serveFile(editFile);
|
||||||
|
|
||||||
if (metrics != null) { // Metrics non-null only when used inside name node
|
if (metrics != null) { // Metrics non-null only when used inside name node
|
||||||
long elapsed = now() - start;
|
long elapsed = monotonicNow() - start;
|
||||||
metrics.addGetEdit(elapsed);
|
metrics.addGetEdit(elapsed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -469,7 +469,7 @@ public class ImageServlet extends HttpServlet {
|
||||||
|
|
||||||
InputStream stream = request.getInputStream();
|
InputStream stream = request.getInputStream();
|
||||||
try {
|
try {
|
||||||
long start = now();
|
long start = monotonicNow();
|
||||||
MD5Hash downloadImageDigest = TransferFsImage
|
MD5Hash downloadImageDigest = TransferFsImage
|
||||||
.handleUploadImageRequest(request, txid,
|
.handleUploadImageRequest(request, txid,
|
||||||
nnImage.getStorage(), stream,
|
nnImage.getStorage(), stream,
|
||||||
|
@ -478,7 +478,7 @@ public class ImageServlet extends HttpServlet {
|
||||||
downloadImageDigest);
|
downloadImageDigest);
|
||||||
// Metrics non-null only when used inside name node
|
// Metrics non-null only when used inside name node
|
||||||
if (metrics != null) {
|
if (metrics != null) {
|
||||||
long elapsed = now() - start;
|
long elapsed = monotonicNow() - start;
|
||||||
metrics.addPutImage(elapsed);
|
metrics.addPutImage(elapsed);
|
||||||
}
|
}
|
||||||
// Now that we have a new checkpoint, we might be able to
|
// Now that we have a new checkpoint, we might be able to
|
||||||
|
|
|
@ -1897,7 +1897,12 @@ public class TestCheckpoint {
|
||||||
.format(true).build();
|
.format(true).build();
|
||||||
int origPort = cluster.getNameNodePort();
|
int origPort = cluster.getNameNodePort();
|
||||||
int origHttpPort = cluster.getNameNode().getHttpAddress().getPort();
|
int origHttpPort = cluster.getNameNode().getHttpAddress().getPort();
|
||||||
secondary = startSecondaryNameNode(conf);
|
Configuration snnConf = new Configuration(conf);
|
||||||
|
File checkpointDir = new File(MiniDFSCluster.getBaseDirectory(),
|
||||||
|
"namesecondary");
|
||||||
|
snnConf.set(DFSConfigKeys.DFS_NAMENODE_CHECKPOINT_DIR_KEY,
|
||||||
|
checkpointDir.getAbsolutePath());
|
||||||
|
secondary = startSecondaryNameNode(snnConf);
|
||||||
|
|
||||||
// secondary checkpoints once
|
// secondary checkpoints once
|
||||||
secondary.doCheckpoint();
|
secondary.doCheckpoint();
|
||||||
|
|
Loading…
Reference in New Issue