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 ha...@apache.org on 2008/06/30 23:10:33 UTC
svn commit: r672924 - in /hadoop/core/branches/branch-0.18: CHANGES.txt
src/hdfs/org/apache/hadoop/dfs/DFSClient.java
src/test/org/apache/hadoop/dfs/TestDistributedFileSystem.java
Author: hairong
Date: Mon Jun 30 14:10:32 2008
New Revision: 672924
URL: http://svn.apache.org/viewvc?rev=672924&view=rev
Log:
Merge -r 672920:672921 from trunk to branch 0.18 to move the change of HADOOP-3539 into the release 0.18.0 section.
Modified:
hadoop/core/branches/branch-0.18/CHANGES.txt
hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/DFSClient.java
hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDistributedFileSystem.java
Modified: hadoop/core/branches/branch-0.18/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.18/CHANGES.txt?rev=672924&r1=672923&r2=672924&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.18/CHANGES.txt (original)
+++ hadoop/core/branches/branch-0.18/CHANGES.txt Mon Jun 30 14:10:32 2008
@@ -688,6 +688,9 @@
HADOOP-3635. Uncaught exception in DataBlockScanner.
(Tsz Wo (Nicholas), SZE via hairong)
+ HADOOP-3539. Exception when closing DFSClient while multiple files are
+ open. (Benjamin Gufler via hairong)
+
Release 0.17.1 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/DFSClient.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/DFSClient.java?rev=672924&r1=672923&r2=672924&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/DFSClient.java (original)
+++ hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/DFSClient.java Mon Jun 30 14:10:32 2008
@@ -207,20 +207,18 @@
synchronized (this) {
checkOpen();
synchronized (pendingCreates) {
- Iterator file_itr = pendingCreates.keySet().iterator();
- while (file_itr.hasNext()) {
- String name = (String) file_itr.next();
- OutputStream out = pendingCreates.get(name);
- try {
- if (out != null) {
+ while (!pendingCreates.isEmpty()) {
+ String name = pendingCreates.firstKey();
+ OutputStream out = pendingCreates.remove(name);
+ if (out != null) {
+ try {
out.close();
+ } catch (IOException ie) {
+ System.err.println("Exception closing file " + name);
+ ie.printStackTrace();
}
- } catch (IOException ie) {
- System.err.println("Exception closing file " + name);
- ie.printStackTrace();
}
}
- pendingCreates.clear();
}
this.clientRunning = false;
try {
Modified: hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDistributedFileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDistributedFileSystem.java?rev=672924&r1=672923&r2=672924&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDistributedFileSystem.java (original)
+++ hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDistributedFileSystem.java Mon Jun 30 14:10:32 2008
@@ -22,6 +22,7 @@
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
public class TestDistributedFileSystem extends junit.framework.TestCase {
public void testFileSystemCloseAll() throws Exception {
@@ -42,4 +43,26 @@
if (cluster != null) {cluster.shutdown();}
}
}
+
+ /**
+ * Tests DFSClient.close throws no ConcurrentModificationException if
+ * multiple files are open.
+ */
+ public void testDFSClose() throws Exception {
+ Configuration conf = new Configuration();
+ MiniDFSCluster cluster = new MiniDFSCluster(conf, 2, true, null);
+ FileSystem fileSys = cluster.getFileSystem();
+
+ try {
+ // create two files
+ fileSys.create(new Path("/test/dfsclose/file-0"));
+ fileSys.create(new Path("/test/dfsclose/file-1"));
+
+ fileSys.close();
+ }
+ finally {
+ if (cluster != null) {cluster.shutdown();}
+ }
+ }
+
}