YARN-2484. FileSystemRMStateStore#readFile/writeFile should close FSData(In|Out)putStream in final block. Contributed by Tsuyoshi OZAWA

(cherry picked from commit 78b048393a)
This commit is contained in:
Jason Lowe 2014-09-12 14:09:14 +00:00
parent 466bdf79c5
commit 7e69dc8771
2 changed files with 23 additions and 10 deletions

View File

@ -308,6 +308,9 @@ Release 2.6.0 - UNRELEASED
YARN-2541. Fixed ResourceManagerRest.apt.vm table syntax error. (jianhe) YARN-2541. Fixed ResourceManagerRest.apt.vm table syntax error. (jianhe)
YARN-2484. FileSystemRMStateStore#readFile/writeFile should close
FSData(In|Out)putStream in final block (Tsuyoshi OZAWA via jlowe)
Release 2.5.1 - 2014-09-05 Release 2.5.1 - 2014-09-05
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -39,6 +39,7 @@ import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter; import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.DataInputByteBuffer; import org.apache.hadoop.io.DataInputByteBuffer;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.security.Credentials; import org.apache.hadoop.security.Credentials;
import org.apache.hadoop.security.token.delegation.DelegationKey; import org.apache.hadoop.security.token.delegation.DelegationKey;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
@ -573,12 +574,16 @@ public class FileSystemRMStateStore extends RMStateStore {
} }
private byte[] readFile(Path inputPath, long len) throws Exception { private byte[] readFile(Path inputPath, long len) throws Exception {
FSDataInputStream fsIn = fs.open(inputPath); FSDataInputStream fsIn = null;
try {
fsIn = fs.open(inputPath);
// state data will not be that "long" // state data will not be that "long"
byte[] data = new byte[(int) len]; byte[] data = new byte[(int) len];
fsIn.readFully(data); fsIn.readFully(data);
fsIn.close();
return data; return data;
} finally {
IOUtils.cleanup(LOG, fsIn);
}
} }
/* /*
@ -592,10 +597,15 @@ public class FileSystemRMStateStore extends RMStateStore {
FSDataOutputStream fsOut = null; FSDataOutputStream fsOut = null;
// This file will be overwritten when app/attempt finishes for saving the // This file will be overwritten when app/attempt finishes for saving the
// final status. // final status.
try {
fsOut = fs.create(tempPath, true); fsOut = fs.create(tempPath, true);
fsOut.write(data); fsOut.write(data);
fsOut.close(); fsOut.close();
fsOut = null;
fs.rename(tempPath, outputPath); fs.rename(tempPath, outputPath);
} finally {
IOUtils.cleanup(LOG, fsOut);
}
} }
/* /*