surendralilhore commented on a change in pull request #3149:
URL: https://github.com/apache/hadoop/pull/3149#discussion_r667084512



##########
File path: 
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azure/NativeAzureFileSystem.java
##########
@@ -915,6 +922,33 @@ public synchronized int read(byte[] b, int off, int len) 
throws FileNotFoundExce
       }
     }
 
+    @Override
+    public int read(long position, byte[] buffer, int offset, int length)
+        throws IOException {
+      if (in instanceof PositionedReadable) {
+        try {
+          int result = ((PositionedReadable) this.in).read(position, buffer,
+              offset, length);
+          if (null != statistics && result > 0) {
+            statistics.incrementBytesRead(result);
+          }
+          return result;
+        } catch (IOException e) {
+          Throwable innerException = 
NativeAzureFileSystemHelper.checkForAzureStorageException(e);
+          if (innerException instanceof StorageException) {
+            LOG.error("Encountered Storage Exception for read on Blob : {}"
+                + " Exception details: {} Error Code : {}",
+                key, e, ((StorageException) innerException).getErrorCode());
+            if 
(NativeAzureFileSystemHelper.isFileNotFoundException((StorageException) 
innerException)) {
+              throw new FileNotFoundException(String.format("%s is not found", 
key));
+            }
+          }
+          throw e;
+        }
+      }
+      return super.read(position, buffer, offset, length);

Review comment:
       I think if "in" is not PositionedReadable steam then we should throw 
exception. We shouldn't change the meaning of read() API by calling 
super.read().
   
   **FSInputStream.read(long, byte[], int, int)** internally call 
**read(byte[], int, int)**, which is not positioned read API. This will change 
the current offset of a file.
   




-- 
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: common-issues-unsubscr...@hadoop.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to