[ 
https://issues.apache.org/jira/browse/HDFS-6981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14121921#comment-14121921
 ] 

Haohui Mai commented on HDFS-6981:
----------------------------------

{code}
+  /**
+   * Current layout version for DataNode.
+   * Please see {@link DataNodeLayoutVersion.Feature} on adding new layout 
version.
+   */
+  public static int getDatanodeLayoutVersion() {
+    return DataNodeLayoutVersion.getCurrentLayoutVersion();
+  }
{code}

To avoid the refactoring, you can use reflection to change the value of 
{{DATANODE_LAYOUT_VERSION}} to inject new layout version in the test. This 
should simplify the patch quite a bit.

{code}
   /**
+   * If the DN layout version has been overridden 
+   * @param map
+   * @return
+   */
+  @Override
+  public boolean versionSupportsFederation(
+      Map<Integer, SortedSet<LayoutVersion.LayoutFeature>> map,
+      int layoutVersionIn) {
+    return DataNodeLayoutVersion.supports(
+        LayoutVersion.Feature.FEDERATION, layoutVersionIn);
+  }
+
{code}

It does not seem necessary. Is it related to the above issue?

> DN upgrade with layout version change should not use trash
> ----------------------------------------------------------
>
>                 Key: HDFS-6981
>                 URL: https://issues.apache.org/jira/browse/HDFS-6981
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: datanode
>    Affects Versions: 3.0.0
>            Reporter: James Thomas
>            Assignee: Arpit Agarwal
>         Attachments: HDFS-6981.01.patch, HDFS-6981.02.patch
>
>
> Post HDFS-6800, we can encounter the following scenario:
> # We start with DN software version -55 and initiate a rolling upgrade to 
> version -56
> # We delete some blocks, and they are moved to trash
> # We roll back to DN software version -55 using the -rollback flag – since we 
> are running the old code (prior to this patch), we will restore the previous 
> directory but will not delete the trash
> # We append to some of the blocks that were deleted in step 2
> # We then restart a DN that contains blocks that were appended to – since the 
> trash still exists, it will be restored at this point, the appended-to blocks 
> will be overwritten, and we will lose the appended data
> So I think we need to avoid writing anything to the trash directory if we 
> have a previous directory.
> Thanks to [~james.thomas] for reporting this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to