MergeUtil: Destroy TemporaryBuffer after use
close() does not delete the underlying temp file, it just flushes the results. To close it we must call destroy(). Change-Id: I1d6fc5359b139c6caa8dd6490e95cd1d00cb7ea7
This commit is contained in:
@@ -349,13 +349,21 @@ public class MergeUtil {
|
||||
Map<String, ObjectId> resolved = new HashMap<>();
|
||||
for (Map.Entry<String, MergeResult<? extends Sequence>> entry : mergeResults.entrySet()) {
|
||||
MergeResult<? extends Sequence> p = entry.getValue();
|
||||
try (TemporaryBuffer buf = new TemporaryBuffer.LocalFile(null, 10 * 1024 * 1024)) {
|
||||
@SuppressWarnings("resource") // TemporaryBuffer requires calling close before reading.
|
||||
TemporaryBuffer buf = null;
|
||||
try {
|
||||
// TODO(dborowitz): Respect inCoreLimit here.
|
||||
buf = new TemporaryBuffer.LocalFile(null, 10 * 1024 * 1024);
|
||||
fmt.formatMerge(buf, p, "BASE", oursNameFormatted, theirsNameFormatted, UTF_8);
|
||||
buf.close();
|
||||
buf.close(); // Flush file and close for writes, but leave available for reading.
|
||||
|
||||
try (InputStream in = buf.openInputStream()) {
|
||||
resolved.put(entry.getKey(), ins.insert(Constants.OBJ_BLOB, buf.length(), in));
|
||||
}
|
||||
} finally {
|
||||
if (buf != null) {
|
||||
buf.destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user