HDFS-9396. Total files and directories on jmx and web UI on standby is uninitialized. Contributed by Kihwal Lee.
This commit is contained in:
parent
6351d3fa63
commit
a2a104f3d3
|
@ -2293,6 +2293,9 @@ Release 2.8.0 - UNRELEASED
|
|||
HDFS-9245. Fix findbugs warnings in hdfs-nfs/WriteCtx.
|
||||
(Mingliang Liu via xyao)
|
||||
|
||||
HDFS-9396. Total files and directories on jmx and web UI on standby is
|
||||
uninitialized. (kihwal)
|
||||
|
||||
Release 2.7.3 - UNRELEASED
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -1218,13 +1218,7 @@ public class FSDirectory implements Closeable {
|
|||
}
|
||||
|
||||
long totalInodes() {
|
||||
readLock();
|
||||
try {
|
||||
return rootDir.getDirectoryWithQuotaFeature().getSpaceConsumed()
|
||||
.getNameSpace();
|
||||
} finally {
|
||||
readUnlock();
|
||||
}
|
||||
return getInodeMapSize();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -24,8 +24,10 @@ import org.apache.hadoop.fs.FileSystem;
|
|||
import org.apache.hadoop.fs.Path;
|
||||
import org.apache.hadoop.hdfs.DFSConfigKeys;
|
||||
import org.apache.hadoop.hdfs.DFSTestUtil;
|
||||
import org.apache.hadoop.hdfs.DistributedFileSystem;
|
||||
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
||||
import org.apache.hadoop.hdfs.MiniDFSNNTopology;
|
||||
import org.apache.hadoop.hdfs.protocol.HdfsConstants.SafeModeAction;
|
||||
import org.apache.hadoop.hdfs.server.namenode.FSNamesystem;
|
||||
import org.apache.hadoop.io.IOUtils;
|
||||
import org.junit.Test;
|
||||
|
@ -119,4 +121,58 @@ public class TestHAMetrics {
|
|||
cluster.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHAInodeCount() throws Exception {
|
||||
Configuration conf = new Configuration();
|
||||
conf.setInt(DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_KEY, 1);
|
||||
conf.setInt(DFSConfigKeys.DFS_HA_LOGROLL_PERIOD_KEY, Integer.MAX_VALUE);
|
||||
|
||||
MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf)
|
||||
.nnTopology(MiniDFSNNTopology.simpleHATopology()).numDataNodes(1)
|
||||
.build();
|
||||
FileSystem fs = null;
|
||||
try {
|
||||
cluster.waitActive();
|
||||
|
||||
FSNamesystem nn0 = cluster.getNamesystem(0);
|
||||
FSNamesystem nn1 = cluster.getNamesystem(1);
|
||||
|
||||
cluster.transitionToActive(0);
|
||||
fs = HATestUtil.configureFailoverFs(cluster, conf);
|
||||
DFSTestUtil.createFile(fs, new Path("/testHAInodeCount1"),
|
||||
10, (short)1, 1L);
|
||||
DFSTestUtil.createFile(fs, new Path("/testHAInodeCount2"),
|
||||
10, (short)1, 1L);
|
||||
DFSTestUtil.createFile(fs, new Path("/testHAInodeCount3"),
|
||||
10, (short)1, 1L);
|
||||
DFSTestUtil.createFile(fs, new Path("/testHAInodeCount4"),
|
||||
10, (short)1, 1L);
|
||||
|
||||
// 1 dir and 4 files
|
||||
assertEquals(5, nn0.getFilesTotal());
|
||||
// The SBN still has one dir, which is "/".
|
||||
assertEquals(1, nn1.getFilesTotal());
|
||||
|
||||
// Save fsimage so that nn does not build up namesystem by replaying
|
||||
// edits, but load from the image.
|
||||
((DistributedFileSystem)fs).setSafeMode(SafeModeAction.SAFEMODE_ENTER);
|
||||
((DistributedFileSystem)fs).saveNamespace();
|
||||
|
||||
// Flip the two namenodes and restart the standby, which will load
|
||||
// the fsimage.
|
||||
cluster.transitionToStandby(0);
|
||||
cluster.transitionToActive(1);
|
||||
cluster.restartNameNode(0);
|
||||
assertEquals(nn0.getHAState(), "standby");
|
||||
|
||||
// The restarted standby should report the correct count
|
||||
nn0 = cluster.getNamesystem(0);
|
||||
assertEquals(5, nn0.getFilesTotal());
|
||||
} finally {
|
||||
IOUtils.cleanup(LOG, fs);
|
||||
cluster.shutdown();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue