ahmarsuhail commented on a change in pull request #3927:
URL: https://github.com/apache/hadoop/pull/3927#discussion_r828203561
##########
File path:
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AInputStream.java
##########
@@ -781,6 +781,46 @@ public void readFully(long position, byte[] buffer, int
offset, int length)
}
}
+ /**
+ * {@inheritDoc}
+ *
+ * This implements a more efficient method for skip. It calls lazy seek
+ * which will either make a new get request or do a default skip.
+ * If lazy seek fails, try doing a default skip.
+ *
+ * @param n Number of bytes to be skipped
+ * @return Number of bytes skipped
+ * @throws IOException on any problem
+ */
+ @Override
+ @Retries.OnceTranslated
+ public long skip(final long n) throws IOException {
+
+ if (n <= 0) {
+ return 0;
+ }
+
+ checkNotClosed();
+ streamStatistics.skipOperationStarted();
+
+ long targetPos = pos + n;
Review comment:
After implementing the test, I realised that `read()` uses the
`nextReadPos` to get the byte. To get the correct byte after a skip, we need to
update nextReadPos too. We can just do this inside the `skip()` method and
don't need to update it in the places I mentioned above.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]