Author: wheat9 Date: Fri Mar 28 18:11:57 2014 New Revision: 1582849 URL: http://svn.apache.org/r1582849 Log: HDFS-6156. Merge r1582847 from trunk.
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshotInfo.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshottableDirectoryStatus.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotManager.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotStatsMXBean.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.html hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotStatsMXBean.java Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1582849&r1=1582848&r2=1582849&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Fri Mar 28 18:11:57 2014 @@ -41,6 +41,9 @@ Release 2.5.0 - UNRELEASED HDFS-6162. Format strings should use platform independent line separator. (suresh) + HDFS-6156. Simplify the JMX API that provides snapshot information. + (wheat9) + Release 2.4.0 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshotInfo.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshotInfo.java?rev=1582849&r1=1582848&r2=1582849&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshotInfo.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshotInfo.java Fri Mar 28 18:11:57 2014 @@ -86,10 +86,11 @@ public class SnapshotInfo { private final String snapshotDirectory; private final long modificationTime; - public Bean(Snapshot s) { - this.snapshotID = s.getRoot().getLocalName(); - this.snapshotDirectory = s.getRoot().getFullPathName(); - this.modificationTime = s.getRoot().getModificationTime(); + public Bean(String snapshotID, String snapshotDirectory, + long modificationTime) { + this.snapshotID = snapshotID; + this.snapshotDirectory = snapshotDirectory; + this.modificationTime = modificationTime; } public String getSnapshotID() { Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshottableDirectoryStatus.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshottableDirectoryStatus.java?rev=1582849&r1=1582848&r2=1582849&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshottableDirectoryStatus.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/SnapshottableDirectoryStatus.java Fri Mar 28 18:11:57 2014 @@ -176,16 +176,15 @@ public class SnapshottableDirectoryStatu private final String owner; private final String group; - public Bean(SnapshottableDirectoryStatus s) { - this.path = s.getFullPath().toString(); - this.snapshotNumber = s.getSnapshotNumber(); - this.snapshotQuota = s.getSnapshotQuota(); - this.modificationTime = s.getDirStatus().getModificationTime(); - this.permission = - Short.valueOf(Integer.toOctalString( - s.getDirStatus().getPermission().toShort())); - this.owner = s.getDirStatus().getOwner(); - this.group = s.getDirStatus().getGroup(); + public Bean(String path, int snapshotNumber, int snapshotQuota, + long modificationTime, short permission, String owner, String group) { + this.path = path; + this.snapshotNumber = snapshotNumber; + this.snapshotQuota = snapshotQuota; + this.modificationTime = modificationTime; + this.permission = permission; + this.owner = owner; + this.group = group; } public String getPath() { Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotManager.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotManager.java?rev=1582849&r1=1582848&r2=1582849&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotManager.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotManager.java Fri Mar 28 18:11:57 2014 @@ -387,44 +387,43 @@ public class SnapshotManager implements } @Override // SnapshotStatsMXBean - public SnapshotDirectoryMXBean getSnapshotStats() { - SnapshottableDirectoryStatus[] stats = getSnapshottableDirListing(null); - if (stats == null) { - return null; - } - return new SnapshotDirectoryMXBean(stats); - } - - public class SnapshotDirectoryMXBean { - private List<SnapshottableDirectoryStatus.Bean> directory = + public SnapshottableDirectoryStatus.Bean[] + getSnapshottableDirectories() { + List<SnapshottableDirectoryStatus.Bean> beans = new ArrayList<SnapshottableDirectoryStatus.Bean>(); - private List<SnapshotInfo.Bean> snapshots = - new ArrayList<SnapshotInfo.Bean>(); - - public SnapshotDirectoryMXBean(SnapshottableDirectoryStatus[] stats) { - set(stats); + for (INodeDirectorySnapshottable d : getSnapshottableDirs()) { + beans.add(toBean(d)); } + return beans.toArray(new SnapshottableDirectoryStatus.Bean[beans.size()]); + } - public void set(SnapshottableDirectoryStatus[] stats) { - for (SnapshottableDirectoryStatus s : stats) { - directory.add(new SnapshottableDirectoryStatus.Bean(s)); - try { - for (Snapshot shot : getSnapshottableRoot( - s.getFullPath().toString()).getSnapshotList()) { - snapshots.add(new SnapshotInfo.Bean(shot)); - } - } catch (IOException e) { - continue; - } + @Override // SnapshotStatsMXBean + public SnapshotInfo.Bean[] getSnapshots() { + List<SnapshotInfo.Bean> beans = new ArrayList<SnapshotInfo.Bean>(); + for (INodeDirectorySnapshottable d : getSnapshottableDirs()) { + for (Snapshot s : d.getSnapshotList()) { + beans.add(toBean(s)); } } + return beans.toArray(new SnapshotInfo.Bean[beans.size()]); + } - public List<SnapshottableDirectoryStatus.Bean> getDirectory() { - return directory; - } + public static SnapshottableDirectoryStatus.Bean toBean( + INodeDirectorySnapshottable d) { + return new SnapshottableDirectoryStatus.Bean( + d.getFullPathName(), + d.getNumSnapshots(), + d.getSnapshotQuota(), + d.getModificationTime(), + Short.valueOf(Integer.toOctalString( + d.getFsPermissionShort())), + d.getUserName(), + d.getGroupName()); + } - public List<SnapshotInfo.Bean> getSnapshots() { - return snapshots; - } + public static SnapshotInfo.Bean toBean(Snapshot s) { + return new SnapshotInfo.Bean( + s.getRoot().getLocalName(), s.getRoot().getFullPathName(), + s.getRoot().getModificationTime()); } } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotStatsMXBean.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotStatsMXBean.java?rev=1582849&r1=1582848&r2=1582849&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotStatsMXBean.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/SnapshotStatsMXBean.java Fri Mar 28 18:11:57 2014 @@ -17,7 +17,8 @@ */ package org.apache.hadoop.hdfs.server.namenode.snapshot; -import org.apache.hadoop.hdfs.server.namenode.snapshot.SnapshotManager.SnapshotDirectoryMXBean; +import org.apache.hadoop.hdfs.protocol.SnapshotInfo; +import org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus; /** * This is an interface used to retrieve statistic information related to @@ -30,5 +31,13 @@ public interface SnapshotStatsMXBean { * * @return the list of snapshottable directories */ - public SnapshotDirectoryMXBean getSnapshotStats(); + public SnapshottableDirectoryStatus.Bean[] getSnapshottableDirectories(); + + /** + * Return the list of snapshots + * + * @return the list of snapshots + */ + public SnapshotInfo.Bean[] getSnapshots(); + } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.html URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.html?rev=1582849&r1=1582848&r2=1582849&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.html (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.html Fri Mar 28 18:11:57 2014 @@ -189,7 +189,7 @@ <script type="text/x-dust-template" id="tmpl-snapshot"> <div class="page-header"><h1>Snapshot Summary</h1></div> -<div class="page-header"><h1><small>Snapshottable directories: {@size key=SnapshotStats.directory}{/size}</small></div> +<div class="page-header"><h1><small>Snapshottable directories: {@size key=SnapshottableDirectories}{/size}</small></div> <small> <table class="table"> <thead> @@ -203,7 +203,7 @@ <th>Group</th> </tr> </thead> - {#SnapshotStats.directory} + {#SnapshottableDirectories} <tr> <td>{path}</td> <td>{snapshotNumber}</td> @@ -213,11 +213,11 @@ <td>{owner}</td> <td>{group}</td> </tr> - {/SnapshotStats.directory} + {/SnapshottableDirectories} </table> </small> -<div class="page-header"><h1><small>Snapshotted directories: {@size key=SnapshotStats.snapshots}{/size}</small></div> +<div class="page-header"><h1><small>Snapshotted directories: {@size key=Snapshots}{/size}</small></div> <small> <table class="table"> @@ -228,13 +228,13 @@ <th>Modification Time</th> </tr> </thead> - {#SnapshotStats.snapshots} + {#Snapshots} <tr> <td>{snapshotID}</td> <td>{snapshotDirectory}</td> <td>{modificationTime|date_tostring}</td> </tr> - {/SnapshotStats.snapshots} + {/Snapshots} </table> </small> </script> Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotStatsMXBean.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotStatsMXBean.java?rev=1582849&r1=1582848&r2=1582849&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotStatsMXBean.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotStatsMXBean.java Fri Mar 28 18:11:57 2014 @@ -59,17 +59,20 @@ public class TestSnapshotStatsMXBean { ObjectName mxbeanName = new ObjectName( "Hadoop:service=NameNode,name=SnapshotInfo"); - CompositeData statsbean = - (CompositeData) mbs.getAttribute(mxbeanName, "SnapshotStats"); - int numDirectories = Array.getLength(statsbean.get("directory")); + CompositeData[] directories = + (CompositeData[]) mbs.getAttribute( + mxbeanName, "SnapshottableDirectories"); + int numDirectories = Array.getLength(directories); assertEquals(sm.getNumSnapshottableDirs(), numDirectories); - int numSnapshots = Array.getLength(statsbean.get("snapshots")); + CompositeData[] snapshots = + (CompositeData[]) mbs.getAttribute(mxbeanName, "Snapshots"); + int numSnapshots = Array.getLength(snapshots); assertEquals(sm.getNumSnapshots(), numSnapshots); - CompositeData directory = (CompositeData) Array.get(statsbean.get("directory"), 0); - CompositeData snapshots = (CompositeData) Array.get(statsbean.get("snapshots"), 0); - assertTrue(((String) directory.get("path")).contains(pathName)); - assertTrue(((String) snapshots.get("snapshotDirectory")).contains(pathName)); + CompositeData d = (CompositeData) Array.get(directories, 0); + CompositeData s = (CompositeData) Array.get(snapshots, 0); + assertTrue(((String) d.get("path")).contains(pathName)); + assertTrue(((String) s.get("snapshotDirectory")).contains(pathName)); } finally { if (cluster != null) { cluster.shutdown();