[ 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)