[
https://issues.apache.org/jira/browse/HDFS-16911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17704714#comment-17704714
]
ASF GitHub Bot commented on HDFS-16911:
---------------------------------------
umamaheswararao commented on code in PR #5364:
URL: https://github.com/apache/hadoop/pull/5364#discussion_r1146899680
##########
hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCpSync.java:
##########
@@ -286,6 +299,36 @@ private boolean getAllDiffs() throws IOException {
return false;
}
+ /**
+ * Check if the filesystem implementation has a method named
+ * getSnapshotDiffReport.
+ */
+ private static Method getSnapshotDiffReportMethod(FileSystem fs)
+ throws NoSuchMethodException {
+ return fs.getClass().getMethod(
+ "getSnapshotDiffReport", Path.class, String.class, String.class);
+ }
+
+ /**
+ * Get the snapshotDiff b/w the fromSnapshot & toSnapshot for the given
+ * filesystem.
+ */
+ private static SnapshotDiffReport getSnapshotDiffReport(
+ final FileSystem fs,
+ final Path snapshotDir,
+ final String fromSnapshot,
+ final String toSnapshot) throws IOException {
+ try {
+ return (SnapshotDiffReport) getSnapshotDiffReportMethod(fs).invoke(
+ fs, snapshotDir, fromSnapshot, toSnapshot);
+ } catch (InvocationTargetException e) {
+ throw new IOException(e.getCause());
+ } catch (NoSuchMethodException|IllegalAccessException e) {
Review Comment:
NoSuchMethod sanity check already covered looks like before calling this
API. IllegalAccess should noyt happen ideally. So runtime should be ok.
Tiny Nit: Message: "Failed to ...."
> Distcp with snapshot diff to support Ozone filesystem.
> ------------------------------------------------------
>
> Key: HDFS-16911
> URL: https://issues.apache.org/jira/browse/HDFS-16911
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: distcp
> Reporter: Sadanand Shenoy
> Priority: Major
> Labels: pull-request-available
>
> Currently in DistcpSync i.e the step which applies the diff b/w 2 provided
> snapshots as arguments to the distcp job with -diff option, only
> DistributedFilesystem and WebHDFS filesytems are supported.
>
> {code:java}
> // currently we require both the source and the target file system are
> // DistributedFileSystem or (S)WebHdfsFileSystem.
> if (!(srcFs instanceof DistributedFileSystem
> || srcFs instanceof WebHdfsFileSystem)) {
> throw new IllegalArgumentException("Unsupported source file system: "
> + srcFs.getScheme() + "://. " +
> "Supported file systems: hdfs://, webhdfs:// and swebhdfs://.");
> }
> if (!(tgtFs instanceof DistributedFileSystem
> || tgtFs instanceof WebHdfsFileSystem)) {
> throw new IllegalArgumentException("Unsupported target file system: "
> + tgtFs.getScheme() + "://. " +
> "Supported file systems: hdfs://, webhdfs:// and swebhdfs://.");
> }{code}
> As Ozone now supports snapshot feature after HDDS-6517, add support to use
> distcp with ozone snapshots.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]