Przeglądaj źródła

HDFS-4954. In nfs, OpenFileCtx.getFlushedOffset() should handle IOException. Contributed by Brandon Li

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1499321 13f79535-47bb-0310-9956-ffa450edef68
Tsz-wo Sze 12 lat temu
rodzic
commit
4bcf0eb51a

+ 8 - 2
hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/OpenFileCtx.java

@@ -178,7 +178,7 @@ class OpenFileCtx {
   }
   
   // Get flushed offset. Note that flushed data may not be persisted.
-  private long getFlushedOffset() {
+  private long getFlushedOffset() throws IOException {
     return fos.getPos();
   }
   
@@ -515,7 +515,13 @@ class OpenFileCtx {
       commitOffset = getNextOffsetUnprotected();
     }
 
-    long flushed = getFlushedOffset();
+    long flushed = 0;
+    try {
+      flushed = getFlushedOffset();
+    } catch (IOException e) {
+      LOG.error("Can't get flushed offset, error:" + e);
+      return COMMIT_ERROR;
+    }
     LOG.info("getFlushedOffset=" + flushed + " commitOffset=" + commitOffset);
     if (flushed < commitOffset) {
       // Keep stream active

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -444,6 +444,9 @@ Release 2.1.0-beta - 2013-07-02
     HDFS-4943. WebHdfsFileSystem does not work when original file path has
     encoded chars.  (Jerry He via szetszwo)
 
+    HDFS-4954. In nfs, OpenFileCtx.getFlushedOffset() should handle IOException.
+    (Brandon Li via szetszwo)
+
   BREAKDOWN OF HDFS-347 SUBTASKS AND RELATED JIRAS
 
     HDFS-4353. Encapsulate connections to peers in Peer and PeerServer classes.