diff --git a/java/com/google/gerrit/server/git/MergeUtil.java b/java/com/google/gerrit/server/git/MergeUtil.java index 5d7a27b49c..56e81e356a 100644 --- a/java/com/google/gerrit/server/git/MergeUtil.java +++ b/java/com/google/gerrit/server/git/MergeUtil.java @@ -349,13 +349,21 @@ public class MergeUtil { Map resolved = new HashMap<>(); for (Map.Entry> entry : mergeResults.entrySet()) { MergeResult 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(); + } } }