LargePackedWholeObject: Refactor to open DfsReader in try-with-resource

Change-Id: Ia9557e6c1ab230dbe2e94e025a49e93159d8658c
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
This commit is contained in:
David Pursehouse 2018-04-11 13:59:00 +09:00 committed by Matthias Sohn
parent aaf4b35557
commit b0ac5f9c89
1 changed files with 15 additions and 21 deletions

View File

@ -104,32 +104,26 @@ public byte[] getCachedBytes() throws LargeObjectException {
/** {@inheritDoc} */
@Override
public ObjectStream openStream() throws MissingObjectException, IOException {
DfsReader ctx = db.newReader();
InputStream in;
try {
in = new PackInputStream(pack, objectOffset + headerLength, ctx);
} catch (IOException packGone) {
// If the pack file cannot be pinned into the cursor, it
// probably was repacked recently. Go find the object
// again and open the stream from that location instead.
//
try (DfsReader ctx = db.newReader()) {
try {
in = new PackInputStream(pack, objectOffset + headerLength, ctx);
} catch (IOException packGone) {
// If the pack file cannot be pinned into the cursor, it
// probably was repacked recently. Go find the object
// again and open the stream from that location instead.
//
ObjectId obj = pack.getReverseIdx(ctx).findObject(objectOffset);
return ctx.open(obj, type).openStream();
} finally {
ctx.close();
}
} finally {
ctx.close();
}
// Align buffer to inflater size, at a larger than default block.
// This reduces the number of context switches from the
// caller down into the pack stream inflation.
int bufsz = 8192;
in = new BufferedInputStream(
new InflaterInputStream(in, ctx.inflater(), bufsz),
bufsz);
return new ObjectStream.Filter(type, size, in);
// Align buffer to inflater size, at a larger than default block.
// This reduces the number of context switches from the
// caller down into the pack stream inflation.
int bufsz = 8192;
in = new BufferedInputStream(
new InflaterInputStream(in, ctx.inflater(), bufsz), bufsz);
return new ObjectStream.Filter(type, size, in);
}
}
}