[
https://issues.apache.org/jira/browse/HDFS-12998?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16365600#comment-16365600
]
Tsz Wo Nicholas Sze commented on HDFS-12998:
--------------------------------------------
Some more comments:
- SnapshotDiffReportListingIterator does not need generic type.
- The code will be simplified if we move all the logic to next().
{code}
private class SnapshotDiffReportListingIterator implements
RemoteIterator<SnapshotDiffReportListing> {
private SnapshotDiffReportListing thisListing;
private final String snapshotDir;
private final String fromSnapshot;
private final String toSnapshot;
private byte[] startPath;
private int index;
private boolean hasNext = true;
private SnapshotDiffReportListingIterator(String snapshotDir,
String fromSnapshot, String toSnapshot) {
this.snapshotDir = snapshotDir;
this.fromSnapshot = fromSnapshot;
this.toSnapshot = toSnapshot;
}
@Override
public boolean hasNext() {
return hasNext;
}
@Override
public SnapshotDiffReportListing next() throws IOException {
if (hasNext) {
thisListing = dfs.getSnapshotDiffReportListing(snapshotDir,
fromSnapshot, toSnapshot, startPath, index);
startPath = thisListing.getLastPath();
index = thisListing.getLastIndex();
hasNext = !(Arrays.equals(startPath, DFSUtilClient.EMPTY_BYTES)
&& index == -1);
return thisListing;
} else {
thisListing = null;
throw new java.util.NoSuchElementException(
"No more entry in SnapshotDiffReport for " + snapshotDir);
}
}
}
{code}
> SnapshotDiff - Provide an iterator-based listing API for calculating
> snapshotDiff
> ---------------------------------------------------------------------------------
>
> Key: HDFS-12998
> URL: https://issues.apache.org/jira/browse/HDFS-12998
> Project: Hadoop HDFS
> Issue Type: Improvement
> Reporter: Shashikant Banerjee
> Assignee: Shashikant Banerjee
> Priority: Major
> Attachments: HDFS-12998.001.patch
>
>
> Currently , SnapshotDiff computation happens over multiple rpc calls to
> namenode depending on the no of snapshotDiff entries where each rpc call
> returns at max 1000 entries by default . Each "getSnapshotDiffreportListing"
> call to namenode returns a partial snapshotDiffreportList which are all
> combined and processed at the client side to generate a final
> snapshotDiffreport. There can be cases where SnapshotDiffReport can be huge
> and in situations as such , the rpc calls to namnode should happen on demand
> at the client side.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]