[ 
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

Reply via email to