You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by fa...@apache.org on 2017/06/08 22:56:22 UTC
hadoop git commit: HADOOP-14504 ProvidedFileStatusIterator#next() may
throw IndexOutOfBoundsException (Aaron Fabbri)
Repository: hadoop
Updated Branches:
refs/heads/HADOOP-13345 30baa089d -> 6a06ed834
HADOOP-14504 ProvidedFileStatusIterator#next() may throw IndexOutOfBoundsException (Aaron Fabbri)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6a06ed83
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6a06ed83
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6a06ed83
Branch: refs/heads/HADOOP-13345
Commit: 6a06ed834bcceae7b65305d49b65c4bf6a7438ad
Parents: 30baa08
Author: Aaron Fabbri <fa...@apache.org>
Authored: Thu Jun 8 15:55:20 2017 -0700
Committer: Aaron Fabbri <fa...@apache.org>
Committed: Thu Jun 8 15:55:20 2017 -0700
----------------------------------------------------------------------
.../java/org/apache/hadoop/fs/s3a/Listing.java | 3 +++
.../org/apache/hadoop/fs/s3a/TestListing.java | 24 ++++++++++++++++++++
2 files changed, 27 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a06ed83/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Listing.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Listing.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Listing.java
index b45fc43..5299c6c 100644
--- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Listing.java
+++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Listing.java
@@ -271,6 +271,9 @@ public class Listing {
@Override
public FileStatus next() throws IOException {
+ if (!hasNext()) {
+ throw new NoSuchElementException();
+ }
return filteredStatusList.get(index++);
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6a06ed83/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestListing.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestListing.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestListing.java
index 43eb2c0..e647327 100644
--- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestListing.java
+++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestListing.java
@@ -29,8 +29,12 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.NoSuchElementException;
import java.util.Set;
+import static org.apache.hadoop.fs.s3a.Listing.ACCEPT_ALL;
+import static org.apache.hadoop.fs.s3a.Listing.ProvidedFileStatusIterator;
+
/**
* Place for the S3A listing classes; keeps all the small classes under control.
*/
@@ -91,4 +95,24 @@ public class TestListing extends AbstractS3AMockTest {
}
Assert.assertTrue(actualPaths.equals(expectedPaths));
}
+
+ @Test
+ public void testProvidedFileStatusIteratorEnd() throws Exception {
+ FileStatus[] statuses = {
+ new FileStatus(100, false, 1, 8192, 0, new Path("s3a://blah/blah"))
+ };
+ ProvidedFileStatusIterator it = new ProvidedFileStatusIterator(statuses,
+ ACCEPT_ALL, new Listing.AcceptAllButS3nDirs());
+
+ Assert.assertTrue("hasNext() should return true first time", it.hasNext());
+ Assert.assertNotNull("first element should not be null", it.next());
+ Assert.assertFalse("hasNext() should now be false", it.hasNext());
+ try {
+ it.next();
+ Assert.fail("next() should have thrown exception");
+ } catch (NoSuchElementException e) {
+ // Correct behavior. Any other exceptions are propagated as failure.
+ return;
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org