diff --git a/hdfs/CHANGES.txt b/hdfs/CHANGES.txt index 5cae67db234..c6f9ccf1945 100644 --- a/hdfs/CHANGES.txt +++ b/hdfs/CHANGES.txt @@ -508,6 +508,8 @@ Trunk (unreleased changes) HDFS-2046. Force entropy to come from non-true random for tests. (todd) + HDFS-2073. Add @Override annotation to NameNode. (suresh) + OPTIMIZATIONS HDFS-1458. Improve checkpoint performance by avoiding unnecessary image diff --git a/hdfs/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java b/hdfs/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java index 8a628103628..97863a4ed6c 100644 --- a/hdfs/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java +++ b/hdfs/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java @@ -194,7 +194,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { } - @Override + @Override // VersionedProtocol public ProtocolSignature getProtocolSignature(String protocol, long clientVersion, int clientMethodsHash) throws IOException { return ProtocolSignature.getProtocolSignature( @@ -694,7 +694,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { return namesystem.getBlocks(datanode, size); } - /** {@inheritDoc} */ + @Override // NamenodeProtocol public ExportedBlockKeys getBlockKeys() throws IOException { return namesystem.getBlockKeys(); } @@ -742,39 +742,34 @@ public class NameNode implements NamenodeProtocols, FSConstants { return namesystem.getEditLogSize(); } - /* - * Active name-node cannot journal. - */ @Override // NamenodeProtocol public void journal(NamenodeRegistration registration, int jAction, int length, byte[] args) throws IOException { + // Active name-node cannot journal. throw new UnsupportedActionException("journal"); } - ///////////////////////////////////////////////////// - // ClientProtocol - ///////////////////////////////////////////////////// - + @Override // ClientProtocol public Token getDelegationToken(Text renewer) throws IOException { return namesystem.getDelegationToken(renewer); } - @Override + @Override // ClientProtocol public long renewDelegationToken(Token token) throws InvalidToken, IOException { return namesystem.renewDelegationToken(token); } - @Override + @Override // ClientProtocol public void cancelDelegationToken(Token token) throws IOException { namesystem.cancelDelegationToken(token); } - /** {@inheritDoc} */ + @Override // ClientProtocol public LocatedBlocks getBlockLocations(String src, long offset, long length) @@ -784,20 +779,12 @@ public class NameNode implements NamenodeProtocols, FSConstants { src, offset, length); } - private static String getClientMachine() { - String clientMachine = Server.getRemoteAddress(); - if (clientMachine == null) { - clientMachine = ""; - } - return clientMachine; - } - - /** {@inheritDoc} */ + @Override // ClientProtocol public FsServerDefaults getServerDefaults() throws IOException { return namesystem.getServerDefaults(); } - /** {@inheritDoc} */ + @Override // ClientProtocol public void create(String src, FsPermission masked, String clientName, @@ -822,7 +809,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { metrics.incrCreateFileOps(); } - /** {@inheritDoc} */ + @Override // ClientProtocol public LocatedBlock append(String src, String clientName) throws IOException { String clientMachine = getClientMachine(); @@ -835,31 +822,31 @@ public class NameNode implements NamenodeProtocols, FSConstants { return info; } - /** {@inheritDoc} */ + @Override // ClientProtocol public boolean recoverLease(String src, String clientName) throws IOException { String clientMachine = getClientMachine(); return namesystem.recoverLease(src, clientName, clientMachine); } - /** {@inheritDoc} */ + @Override // ClientProtocol public boolean setReplication(String src, short replication) throws IOException { return namesystem.setReplication(src, replication); } - /** {@inheritDoc} */ + @Override // ClientProtocol public void setPermission(String src, FsPermission permissions) throws IOException { namesystem.setPermission(src, permissions); } - /** {@inheritDoc} */ + @Override // ClientProtocol public void setOwner(String src, String username, String groupname) throws IOException { namesystem.setOwner(src, username, groupname); } - @Override + @Override // ClientProtocol public LocatedBlock addBlock(String src, String clientName, ExtendedBlock previous, @@ -883,7 +870,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { return locatedBlock; } - @Override + @Override // ClientProtocol public LocatedBlock getAdditionalDatanode(final String src, final ExtendedBlock blk, final DatanodeInfo[] existings, final DatanodeInfo[] excludes, final int numAdditionalNodes, final String clientName @@ -924,7 +911,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { } } - /** {@inheritDoc} */ + @Override // ClientProtocol public boolean complete(String src, String clientName, ExtendedBlock last) throws IOException { if(stateChangeLog.isDebugEnabled()) { @@ -940,6 +927,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { * mark the block as corrupt. In the future we might * check the blocks are actually corrupt. */ + @Override public void reportBadBlocks(LocatedBlock[] blocks) throws IOException { stateChangeLog.info("*DIR* NameNode.reportBadBlocks"); for (int i = 0; i < blocks.length; i++) { @@ -952,22 +940,21 @@ public class NameNode implements NamenodeProtocols, FSConstants { } } - /** {@inheritDoc} */ - @Override + @Override // ClientProtocol public LocatedBlock updateBlockForPipeline(ExtendedBlock block, String clientName) throws IOException { return namesystem.updateBlockForPipeline(block, clientName); } - @Override + @Override // ClientProtocol public void updatePipeline(String clientName, ExtendedBlock oldBlock, ExtendedBlock newBlock, DatanodeID[] newNodes) throws IOException { namesystem.updatePipeline(clientName, oldBlock, newBlock, newNodes); } - /** {@inheritDoc} */ + @Override // DatanodeProtocol public void commitBlockSynchronization(ExtendedBlock block, long newgenerationstamp, long newlength, boolean closeFile, boolean deleteblock, DatanodeID[] newtargets) @@ -976,14 +963,14 @@ public class NameNode implements NamenodeProtocols, FSConstants { newgenerationstamp, newlength, closeFile, deleteblock, newtargets); } + @Override // ClientProtocol public long getPreferredBlockSize(String filename) throws IOException { return namesystem.getPreferredBlockSize(filename); } - /** {@inheritDoc} */ @Deprecated - @Override + @Override // ClientProtocol public boolean rename(String src, String dst) throws IOException { if(stateChangeLog.isDebugEnabled()) { stateChangeLog.debug("*DIR* NameNode.rename: " + src + " to " + dst); @@ -999,15 +986,12 @@ public class NameNode implements NamenodeProtocols, FSConstants { return ret; } - /** - * {@inheritDoc} - */ + @Override // ClientProtocol public void concat(String trg, String[] src) throws IOException { namesystem.concat(trg, src); } - /** {@inheritDoc} */ - @Override + @Override // ClientProtocol public void rename(String src, String dst, Options.Rename... options) throws IOException { if(stateChangeLog.isDebugEnabled()) { @@ -1021,14 +1005,13 @@ public class NameNode implements NamenodeProtocols, FSConstants { metrics.incrFilesRenamed(); } - /** - */ @Deprecated + @Override // ClientProtocol public boolean delete(String src) throws IOException { return delete(src, true); } - /** {@inheritDoc} */ + @Override // ClientProtocol public boolean delete(String src, boolean recursive) throws IOException { if (stateChangeLog.isDebugEnabled()) { stateChangeLog.debug("*DIR* Namenode.delete: src=" + src @@ -1044,7 +1027,6 @@ public class NameNode implements NamenodeProtocols, FSConstants { * Check path length does not exceed maximum. Returns true if * length and depth are okay. Returns false if length is too long * or depth is too great. - * */ private boolean checkPathLength(String src) { Path srcPath = new Path(src); @@ -1052,7 +1034,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { srcPath.depth() <= MAX_PATH_DEPTH); } - /** {@inheritDoc} */ + @Override // ClientProtocol public boolean mkdirs(String src, FsPermission masked, boolean createParent) throws IOException { if(stateChangeLog.isDebugEnabled()) { @@ -1067,15 +1049,12 @@ public class NameNode implements NamenodeProtocols, FSConstants { null, masked), createParent); } - /** - */ + @Override // ClientProtocol public void renewLease(String clientName) throws IOException { namesystem.renewLease(clientName); } - /** - */ - @Override + @Override // ClientProtocol public DirectoryListing getListing(String src, byte[] startAfter, boolean needLocation) throws IOException { @@ -1088,24 +1067,13 @@ public class NameNode implements NamenodeProtocols, FSConstants { return files; } - /** - * Get the file info for a specific file. - * @param src The string representation of the path to the file - * @return object containing information regarding the file - * or null if file not found - */ + @Override // ClientProtocol public HdfsFileStatus getFileInfo(String src) throws IOException { metrics.incrFileInfoOps(); return namesystem.getFileInfo(src, true); } - /** - * Get the file info for a specific file. If the path refers to a - * symlink then the FileStatus of the symlink is returned. - * @param src The string representation of the path to the file - * @return object containing information regarding the file - * or null if file not found - */ + @Override // ClientProtocol public HdfsFileStatus getFileLinkInfo(String src) throws IOException { metrics.incrFileInfoOps(); return namesystem.getFileInfo(src, false); @@ -1116,8 +1084,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { return namesystem.getStats(); } - /** - */ + @Override // ClientProtocol public DatanodeInfo[] getDatanodeReport(DatanodeReportType type) throws IOException { DatanodeInfo results[] = namesystem.datanodeReport(type); @@ -1127,7 +1094,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { return results; } - @Override + @Override // ClientProtocol public boolean setSafeMode(SafeModeAction action) throws IOException { return namesystem.setSafeMode(action); } @@ -1139,73 +1106,58 @@ public class NameNode implements NamenodeProtocols, FSConstants { return namesystem.isInSafeMode(); } - @Override + @Override // ClientProtocol public boolean restoreFailedStorage(String arg) throws AccessControlException { return namesystem.restoreFailedStorage(arg); } - @Override + @Override // ClientProtocol public void saveNamespace() throws IOException { namesystem.saveNamespace(); } - /** - * Refresh the list of datanodes that the namenode should allow to - * connect. Re-reads conf by creating new HdfsConfiguration object and - * uses the files list in the configuration to update the list. - */ + @Override // ClientProtocol public void refreshNodes() throws IOException { namesystem.refreshNodes(new HdfsConfiguration()); } - /** - * Returns the size of the current edit log. - */ - @Deprecated + @Deprecated // NamenodeProtocol public long getEditLogSize() throws IOException { return namesystem.getEditLogSize(); } - /** - * Roll the edit log. - */ @Deprecated + @Override // NamenodeProtocol public CheckpointSignature rollEditLog() throws IOException { return namesystem.rollEditLog(); } - /** - * Roll the image - */ - @Deprecated @Override + @Deprecated + @Override // NamenodeProtocol public void rollFsImage(CheckpointSignature sig) throws IOException { namesystem.rollFSImage(sig); } + @Override // ClientProtocol public void finalizeUpgrade() throws IOException { namesystem.finalizeUpgrade(); } + @Override // ClientProtocol public UpgradeStatusReport distributedUpgradeProgress(UpgradeAction action) throws IOException { return namesystem.distributedUpgradeProgress(action); } - /** - * Dumps namenode state into specified file - */ + @Override // ClientProtocol public void metaSave(String filename) throws IOException { namesystem.metaSave(filename); } - /** - * {@inheritDoc} - */ - @Override - public CorruptFileBlocks - listCorruptFileBlocks(String path, String cookie) - throws IOException { + @Override // ClientProtocol + public CorruptFileBlocks listCorruptFileBlocks(String path, String cookie) + throws IOException { Collection fbs = namesystem.listCorruptFileBlocks(path, cookie); @@ -1219,32 +1171,31 @@ public class NameNode implements NamenodeProtocols, FSConstants { return new CorruptFileBlocks(files, lastCookie); } - /** {@inheritDoc} */ + @Override // ClientProtocol public ContentSummary getContentSummary(String path) throws IOException { return namesystem.getContentSummary(path); } - /** {@inheritDoc} */ + @Override // ClientProtocol public void setQuota(String path, long namespaceQuota, long diskspaceQuota) throws IOException { namesystem.setQuota(path, namespaceQuota, diskspaceQuota); } - /** {@inheritDoc} */ + @Override // ClientProtocol public void fsync(String src, String clientName) throws IOException { namesystem.fsync(src, clientName); } - @Override + @Override // ClientProtocol public void setTimes(String src, long mtime, long atime) throws IOException { namesystem.setTimes(src, mtime, atime); } - @Override - public void createSymlink(String target, String link, FsPermission dirPerms, - boolean createParent) - throws IOException { + @Override // ClientProtocol + public void createSymlink(String target, String link, FsPermission dirPerms, + boolean createParent) throws IOException { metrics.incrCreateSymlinkOps(); /* We enforce the MAX_PATH_LENGTH limit even though a symlink target * URI may refer to a non-HDFS file system. @@ -1262,7 +1213,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { new PermissionStatus(ugi.getShortUserName(), null, dirPerms), createParent); } - @Override + @Override // ClientProtocol public String getLinkTarget(String path) throws IOException { metrics.incrGetLinkTargetOps(); /* Resolves the first symlink in the given path, returning a @@ -1285,11 +1236,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { } - //////////////////////////////////////////////////////////////// - // DatanodeProtocol - //////////////////////////////////////////////////////////////// - /** - */ + @Override // DatanodeProtocol public DatanodeRegistration registerDatanode(DatanodeRegistration nodeReg) throws IOException { verifyVersion(nodeReg.getVersion()); @@ -1298,32 +1245,19 @@ public class NameNode implements NamenodeProtocols, FSConstants { return nodeReg; } - /** - * Data node notify the name node that it is alive - * Return an array of block-oriented commands for the datanode to execute. - * This will be either a transfer or a delete operation. - */ + @Override // DatanodeProtocol public DatanodeCommand[] sendHeartbeat(DatanodeRegistration nodeReg, - long capacity, - long dfsUsed, - long remaining, - long blockPoolUsed, - int xmitsInProgress, - int xceiverCount, - int failedVolumes) throws IOException { + long capacity, long dfsUsed, long remaining, long blockPoolUsed, + int xmitsInProgress, int xceiverCount, int failedVolumes) + throws IOException { verifyRequest(nodeReg); return namesystem.handleHeartbeat(nodeReg, capacity, dfsUsed, remaining, blockPoolUsed, xceiverCount, xmitsInProgress, failedVolumes); } - /** - * sends block report to the corresponding namenode (for the poolId) - * @return DataNodeCommand from the namenode - * @throws IOException - */ + @Override // DatanodeProtocol public DatanodeCommand blockReport(DatanodeRegistration nodeReg, - String poolId, - long[] blocks) throws IOException { + String poolId, long[] blocks) throws IOException { verifyRequest(nodeReg); BlockListAsLongs blist = new BlockListAsLongs(blocks); if(stateChangeLog.isDebugEnabled()) { @@ -1338,10 +1272,9 @@ public class NameNode implements NamenodeProtocols, FSConstants { return null; } - public void blockReceived(DatanodeRegistration nodeReg, - String poolId, - Block blocks[], - String delHints[]) throws IOException { + @Override // DatanodeProtocol + public void blockReceived(DatanodeRegistration nodeReg, String poolId, + Block blocks[], String delHints[]) throws IOException { verifyRequest(nodeReg); if(stateChangeLog.isDebugEnabled()) { stateChangeLog.debug("*BLOCK* NameNode.blockReceived: " @@ -1352,9 +1285,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { } } - /** - * Handle an error report from a datanode. - */ + @Override // DatanodeProtocol public void errorReport(DatanodeRegistration nodeReg, int errorCode, String msg) throws IOException { String dnName = (nodeReg == null ? "unknown DataNode" : nodeReg.getName()); @@ -1375,10 +1306,12 @@ public class NameNode implements NamenodeProtocols, FSConstants { } } + @Override // DatanodeProtocol, NamenodeProtocol public NamespaceInfo versionRequest() throws IOException { return namesystem.getNamespaceInfo(); } + @Override // DatanodeProtocol public UpgradeCommand processUpgradeCommand(UpgradeCommand comm) throws IOException { return namesystem.processDistributedUpgradeCommand(comm); } @@ -1539,7 +1472,7 @@ public class NameNode implements NamenodeProtocols, FSConstants { return false; } - @Override + @Override // RefreshAuthorizationPolicyProtocol public void refreshServiceAcl() throws IOException { if (!serviceAuthEnabled) { throw new AuthorizationException("Service Level Authorization not enabled!"); @@ -1551,21 +1484,21 @@ public class NameNode implements NamenodeProtocols, FSConstants { } } - @Override + @Override // RefreshAuthorizationPolicyProtocol public void refreshUserToGroupsMappings() throws IOException { LOG.info("Refreshing all user-to-groups mappings. Requested by user: " + UserGroupInformation.getCurrentUser().getShortUserName()); Groups.getUserToGroupsMappingService().refresh(); } - @Override + @Override // RefreshAuthorizationPolicyProtocol public void refreshSuperUserGroupsConfiguration() { LOG.info("Refreshing SuperUser proxy group mapping list "); ProxyUsers.refreshSuperUserGroupsConfiguration(); } - @Override + @Override // GetUserMappingsProtocol public String[] getGroupsForUser(String user) throws IOException { if (LOG.isDebugEnabled()) { LOG.debug("Getting groups for user " + user); @@ -1744,4 +1677,12 @@ public class NameNode implements NamenodeProtocols, FSConstants { System.exit(-1); } } + + private static String getClientMachine() { + String clientMachine = Server.getRemoteAddress(); + if (clientMachine == null) { + clientMachine = ""; + } + return clientMachine; + } }