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 en...@apache.org on 2009/02/13 15:14:31 UTC

svn commit: r744117 - in /hadoop/core/branches/branch-0.19: ./ src/core/org/apache/hadoop/fs/s3/ src/core/org/apache/hadoop/fs/s3native/ src/hdfs/org/apache/hadoop/hdfs/ src/test/org/apache/hadoop/fs/

Author: enis
Date: Fri Feb 13 14:14:30 2009
New Revision: 744117

URL: http://svn.apache.org/viewvc?rev=744117&view=rev
Log:
Merge r744113:744114 from trunk to branch-0.19. Fixes HADOOP-4760.

Modified:
    hadoop/core/branches/branch-0.19/CHANGES.txt
    hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3InputStream.java
    hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3OutputStream.java
    hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3native/NativeS3FileSystem.java
    hadoop/core/branches/branch-0.19/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java
    hadoop/core/branches/branch-0.19/src/test/org/apache/hadoop/fs/FileSystemContractBaseTest.java

Modified: hadoop/core/branches/branch-0.19/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.19/CHANGES.txt?rev=744117&r1=744116&r2=744117&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.19/CHANGES.txt (original)
+++ hadoop/core/branches/branch-0.19/CHANGES.txt Fri Feb 13 14:14:30 2009
@@ -105,6 +105,9 @@
     HADOOP-5067. Fixes TaskInProgress.java to keep track of count of failed and
     killed tasks correctly. (Amareshwari Sriramadasu via ddas)
 
+    HADOOP-4760. HDFS streams should not throw exceptions when closed twice. 
+    (enis)
+
 Release 0.19.0 - 2008-11-18
 
   INCOMPATIBLE CHANGES

Modified: hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3InputStream.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3InputStream.java?rev=744117&r1=744116&r2=744117&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3InputStream.java (original)
+++ hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3InputStream.java Fri Feb 13 14:14:30 2009
@@ -168,7 +168,7 @@
   @Override
   public void close() throws IOException {
     if (closed) {
-      throw new IOException("Stream closed");
+      return;
     }
     if (blockStream != null) {
       blockStream.close();

Modified: hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3OutputStream.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3OutputStream.java?rev=744117&r1=744116&r2=744117&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3OutputStream.java (original)
+++ hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3/S3OutputStream.java Fri Feb 13 14:14:30 2009
@@ -200,7 +200,7 @@
   @Override
   public synchronized void close() throws IOException {
     if (closed) {
-      throw new IOException("Stream closed");
+      return;
     }
 
     flush();

Modified: hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3native/NativeS3FileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3native/NativeS3FileSystem.java?rev=744117&r1=744116&r2=744117&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3native/NativeS3FileSystem.java (original)
+++ hadoop/core/branches/branch-0.19/src/core/org/apache/hadoop/fs/s3native/NativeS3FileSystem.java Fri Feb 13 14:14:30 2009
@@ -164,7 +164,7 @@
     @Override
     public synchronized void close() throws IOException {
       if (closed) {
-        throw new IOException("Stream closed");
+        return;
       }
 
       backupStream.close();

Modified: hadoop/core/branches/branch-0.19/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.19/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java?rev=744117&r1=744116&r2=744117&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.19/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java (original)
+++ hadoop/core/branches/branch-0.19/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java Fri Feb 13 14:14:30 2009
@@ -204,12 +204,13 @@
    * created and close connections to the namenode.
    */
   public synchronized void close() throws IOException {
-    checkOpen();
-    clientRunning = false;
-    leasechecker.close();
-
-    // close connections to the namenode
-    RPC.stopProxy(rpcNamenode);
+    if(clientRunning) {
+      clientRunning = false;
+      leasechecker.close();
+  
+      // close connections to the namenode
+      RPC.stopProxy(rpcNamenode);
+    }
   }
 
   /**
@@ -1568,11 +1569,11 @@
      */
     @Override
     public synchronized void close() throws IOException {
-      checkOpen();
       if (closed) {
-        throw new IOException("Stream closed");
+        return;
       }
-
+      checkOpen();
+      
       if ( blockReader != null ) {
         blockReader.close();
         blockReader = null;
@@ -2525,12 +2526,8 @@
     }
 
     private void isClosed() throws IOException {
-      if (closed) {
-        if (lastException != null) {
+      if (closed && lastException != null) {
           throw lastException;
-        } else {
-          throw new IOException("Stream closed.");
-        }
       }
     }
 
@@ -3052,6 +3049,8 @@
      */
     @Override
     public void close() throws IOException {
+      if(closed)
+        return;
       closeInternal();
       leasechecker.remove(src);
       

Modified: hadoop/core/branches/branch-0.19/src/test/org/apache/hadoop/fs/FileSystemContractBaseTest.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.19/src/test/org/apache/hadoop/fs/FileSystemContractBaseTest.java?rev=744117&r1=744116&r2=744117&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.19/src/test/org/apache/hadoop/fs/FileSystemContractBaseTest.java (original)
+++ hadoop/core/branches/branch-0.19/src/test/org/apache/hadoop/fs/FileSystemContractBaseTest.java Fri Feb 13 14:14:30 2009
@@ -423,6 +423,26 @@
         fs.exists(path("/test/new/newdir/dir/subdir/file2")));
   }
 
+  public void testInputStreamClosedTwice() throws IOException {
+    //HADOOP-4760 according to Closeable#close() closing already-closed 
+    //streams should have no effect. 
+    Path src = path("/test/hadoop/file");
+    createFile(src);
+    FSDataInputStream in = fs.open(src);
+    in.close();
+    in.close();
+  }
+  
+  public void testOutputStreamClosedTwice() throws IOException {
+    //HADOOP-4760 according to Closeable#close() closing already-closed 
+    //streams should have no effect. 
+    Path src = path("/test/hadoop/file");
+    FSDataOutputStream out = fs.create(src);
+    out.writeChar('H'); //write some data
+    out.close();
+    out.close();
+  }
+  
   protected Path path(String pathString) {
     return new Path(pathString).makeQualified(fs);
   }