Author: ab Date: Fri Mar 2 00:04:31 2007 New Revision: 513652 URL: http://svn.apache.org/viewvc?view=rev&rev=513652 Log: HADOOP-1046 - clean up tmp files belonging to stale incomplete blocks.
Modified: lucene/hadoop/trunk/CHANGES.txt lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDataset.java Modified: lucene/hadoop/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=513652&r1=513651&r2=513652 ============================================================================== --- lucene/hadoop/trunk/CHANGES.txt (original) +++ lucene/hadoop/trunk/CHANGES.txt Fri Mar 2 00:04:31 2007 @@ -177,6 +177,7 @@ 53. HADOOP-1037. Fix bin/slaves.sh, which currently only works with /bin/bash, to specify /bin/bash rather than /bin/sh. (cutting) +54. HADOOP-1046. Clean up tmp from partially received stale block files. (ab) Release 0.11.2 - 2007-02-16 Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDataset.java URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDataset.java?view=diff&rev=513652&r1=513651&r2=513652 ============================================================================== --- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDataset.java (original) +++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDataset.java Fri Mar 2 00:04:31 2007 @@ -435,8 +435,18 @@ // Is it already in the create process? // if (ongoingCreates.containsKey(b)) { + // check how old is the temp file - wait 1 hour + File tmp = (File)ongoingCreates.get(b); + if ((System.currentTimeMillis() - tmp.lastModified()) < 3600 * 1000) { throw new IOException("Block " + b + " has already been started (though not completed), and thus cannot be created."); + } else { + // stale temp file - remove + if (!tmp.delete()) { + throw new IOException("Can't write the block - unable to remove stale temp file " + tmp); + } + ongoingCreates.remove(b); + } } FSVolume v = null; synchronized ( volumes ) {