MAPREDUCE-5895. Close streams properly to avoid leakage in TaskLog. Contributed by Kousuke Saruta.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1598209 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
342da5b4d3
commit
61c59c0704
|
@ -244,6 +244,9 @@ Release 2.5.0 - UNRELEASED
|
|||
MAPREDUCE-5862. Line records longer than 2x split size aren't handled
|
||||
correctly (bc Wong via jlowe)
|
||||
|
||||
MAPREDUCE-5895. Close streams properly to avoid leakage in TaskLog.
|
||||
(Kousuke Saruta via devaraj)
|
||||
|
||||
Release 2.4.1 - UNRELEASED
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -199,16 +199,18 @@ public class TaskLog {
|
|||
// file first and then rename.
|
||||
File tmpIndexFile = getTmpIndexFile(currentTaskid, isCleanup);
|
||||
|
||||
BufferedOutputStream bos =
|
||||
new BufferedOutputStream(
|
||||
BufferedOutputStream bos = null;
|
||||
DataOutputStream dos = null;
|
||||
try{
|
||||
bos = new BufferedOutputStream(
|
||||
SecureIOUtils.createForWrite(tmpIndexFile, 0644));
|
||||
DataOutputStream dos = new DataOutputStream(bos);
|
||||
dos = new DataOutputStream(bos);
|
||||
//the format of the index file is
|
||||
//LOG_DIR: <the dir where the task logs are really stored>
|
||||
//STDOUT: <start-offset in the stdout file> <length>
|
||||
//STDERR: <start-offset in the stderr file> <length>
|
||||
//SYSLOG: <start-offset in the syslog file> <length>
|
||||
try{
|
||||
|
||||
dos.writeBytes(LogFileDetail.LOCATION + logLocation + "\n"
|
||||
+ LogName.STDOUT.toString() + ":");
|
||||
dos.writeBytes(Long.toString(prevOutLength) + " ");
|
||||
|
@ -225,8 +227,10 @@ public class TaskLog {
|
|||
+ "\n");
|
||||
dos.close();
|
||||
dos = null;
|
||||
bos.close();
|
||||
bos = null;
|
||||
} finally {
|
||||
IOUtils.cleanup(LOG, dos);
|
||||
IOUtils.cleanup(LOG, dos, bos);
|
||||
}
|
||||
|
||||
File indexFile = getIndexFile(currentTaskid, isCleanup);
|
||||
|
|
Loading…
Reference in New Issue