[ https://issues.apache.org/jira/browse/HDFS-17509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17844966#comment-17844966 ]
ASF GitHub Bot commented on HDFS-17509: --------------------------------------- LiuGuH commented on code in PR #6784: URL: https://github.com/apache/hadoop/pull/6784#discussion_r1595385718 ########## hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java: ########## @@ -667,39 +667,28 @@ public void rename2(final String src, final String dst, public void concat(String trg, String[] src) throws IOException { rpcServer.checkOperation(NameNode.OperationCategory.WRITE); - // See if the src and target files are all in the same namespace - LocatedBlocks targetBlocks = getBlockLocations(trg, 0, 1); - if (targetBlocks == null) { - throw new IOException("Cannot locate blocks for target file - " + trg); - } - LocatedBlock lastLocatedBlock = targetBlocks.getLastLocatedBlock(); - String targetBlockPoolId = lastLocatedBlock.getBlock().getBlockPoolId(); - for (String source : src) { - LocatedBlocks sourceBlocks = getBlockLocations(source, 0, 1); - if (sourceBlocks == null) { - throw new IOException( - "Cannot located blocks for source file " + source); - } - String sourceBlockPoolId = - sourceBlocks.getLastLocatedBlock().getBlock().getBlockPoolId(); - if (!sourceBlockPoolId.equals(targetBlockPoolId)) { - throw new IOException("Cannot concatenate source file " + source - + " because it is located in a different namespace" - + " with block pool id " + sourceBlockPoolId - + " from the target file with block pool id " - + targetBlockPoolId); - } - } + // Concat only effects when all files in same namespace. + // And in router view, a file only exists in one RemoteLocation. Review Comment: Emmm, there is a scene . 1) If a file is already exist in two nameservices. And the add router mount. NS1 /user/test/file NS2 /user/test/file 2) Add router mount. hdfs dfsrouteradmin -add /user/test NS1,NS2 /user/test -order RANDOM 3) getDestination hdfs dfsrouteradmin -getDestination /user/test/file Will return NS1,NS2 For a file in Router view with more than one nameservices, I think should thrown Exception for concat method. Look forward to your guidance , thanks ! @ZanderXu > RBF: Fix ClientProtocol.concat will throw NPE if tgr is a empty file. > ---------------------------------------------------------------------- > > Key: HDFS-17509 > URL: https://issues.apache.org/jira/browse/HDFS-17509 > Project: Hadoop HDFS > Issue Type: Bug > Reporter: liuguanghua > Priority: Minor > Labels: pull-request-available > > hdfs dfs -concat /tmp/merge /tmp/t1 /tmp/t2 > When /tmp/merge is a empty file, this command will throw NPE via DFSRouter. > > -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org