/tmp/hadoop-${user}/dfs/tmp/tmp/client-${long}.tmp is not cleanup correctly
---------------------------------------------------------------------------
Key: HADOOP-2561
URL: https://issues.apache.org/jira/browse/HADOOP-2561
Project: Hadoop
Issue Type: Bug
Affects Versions: 0.14.0
Reporter: Benjamin Francisoud
Diretory "/tmp/hadoop-${user}/dfs/tmp/tmp" is being filled with those kinfd of
files: client-226966559287638337420857.tmp
I tried to look at the code and found:
h3. DFSClient.java
src/java/org/apache/hadoop/dfs/DFSClient.java
{code:java}
private void closeBackupStream() throws IOException {...}
/* Similar to closeBackupStream(). Theoritically deleting a file
* twice could result in deleting a file that we should not.
*/
private void deleteBackupFile() {...}
private File newBackupFile() throws IOException {
String name = "tmp" + File.separator +
"client-" + Math.abs(r.nextLong());
File result = dirAllocator.createTmpFileForWrite(name,
2 * blockSize,
conf);
return result;
}
{code}
h3. LocalDirAllocator
src/java/org/apache/hadoop/fs/LocalDirAllocator.java#AllocatorPerContext.java
{code:java}
/** Creates a file on the local FS. Pass size as -1 if not known apriori. We
* round-robin over the set of disks (via the configured dirs) and return
* a file on the first path which has enough space. The file is guaranteed
* to go away when the JVM exits.
*/
public File createTmpFileForWrite(String pathStr, long size,
Configuration conf) throws IOException {
// find an appropriate directory
Path path = getLocalPathForWrite(pathStr, size, conf);
File dir = new File(path.getParent().toUri().getPath());
String prefix = path.getName();
// create a temp file on this directory
File result = File.createTempFile(prefix, null, dir);
result.deleteOnExit();
return result;
}
{code}
First it seems to me it's a bit of a mess here I don't know if it's
DFSClient.java#deleteBackupFile() or LocalDirAllocator#createTmpFileForWrite()
{deleteOnExit(); ) who is call ... or both. Why not keep it dry and delete it
only once.
But the most important is the "deleteOnExit();" since it mean if it is never
restarted it will never delete files :(
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.