PackWriter: Report more stats during partial writes
It can be useful for a server operator to know how long a pack writer spent writing out objects, even if the request aborts and never finishes. Record more of the stats data inside of a finally block, to ensure these can be included into the server's monitoring. Change-Id: I00858aa393a948f8e742e64ae4c00953eadaef95
This commit is contained in:
parent
2475d95374
commit
bc90ce7788
|
@ -1029,43 +1029,44 @@ public void writePack(ProgressMonitor compressMonitor,
|
|||
stats.totalObjects = objCnt;
|
||||
beginPhase(PackingPhase.WRITING, writeMonitor, objCnt);
|
||||
long writeStart = System.currentTimeMillis();
|
||||
try {
|
||||
out.writeFileHeader(PACK_VERSION_GENERATED, objCnt);
|
||||
out.flush();
|
||||
|
||||
out.writeFileHeader(PACK_VERSION_GENERATED, objCnt);
|
||||
out.flush();
|
||||
writeObjects(out);
|
||||
if (!edgeObjects.isEmpty() || !cachedPacks.isEmpty()) {
|
||||
for (Statistics.ObjectType typeStat : stats.objectTypes) {
|
||||
if (typeStat == null)
|
||||
continue;
|
||||
stats.thinPackBytes += typeStat.bytes;
|
||||
}
|
||||
}
|
||||
|
||||
stats.reusedPacks = Collections.unmodifiableList(cachedPacks);
|
||||
for (CachedPack pack : cachedPacks) {
|
||||
long deltaCnt = pack.getDeltaCount();
|
||||
stats.reusedObjects += pack.getObjectCount();
|
||||
stats.reusedDeltas += deltaCnt;
|
||||
stats.totalDeltas += deltaCnt;
|
||||
reuseSupport.copyPackAsIs(out, pack, reuseValidate);
|
||||
}
|
||||
writeChecksum(out);
|
||||
out.flush();
|
||||
} finally {
|
||||
stats.timeWriting = System.currentTimeMillis() - writeStart;
|
||||
stats.depth = depth;
|
||||
|
||||
writeObjects(out);
|
||||
if (!edgeObjects.isEmpty() || !cachedPacks.isEmpty()) {
|
||||
for (Statistics.ObjectType typeStat : stats.objectTypes) {
|
||||
if (typeStat == null)
|
||||
continue;
|
||||
stats.thinPackBytes += typeStat.bytes;
|
||||
typeStat.cntDeltas += typeStat.reusedDeltas;
|
||||
stats.reusedObjects += typeStat.reusedObjects;
|
||||
stats.reusedDeltas += typeStat.reusedDeltas;
|
||||
stats.totalDeltas += typeStat.cntDeltas;
|
||||
}
|
||||
}
|
||||
|
||||
for (CachedPack pack : cachedPacks) {
|
||||
long deltaCnt = pack.getDeltaCount();
|
||||
stats.reusedObjects += pack.getObjectCount();
|
||||
stats.reusedDeltas += deltaCnt;
|
||||
stats.totalDeltas += deltaCnt;
|
||||
reuseSupport.copyPackAsIs(out, pack, reuseValidate);
|
||||
}
|
||||
writeChecksum(out);
|
||||
out.flush();
|
||||
stats.timeWriting = System.currentTimeMillis() - writeStart;
|
||||
stats.totalBytes = out.length();
|
||||
stats.reusedPacks = Collections.unmodifiableList(cachedPacks);
|
||||
stats.depth = depth;
|
||||
|
||||
for (Statistics.ObjectType typeStat : stats.objectTypes) {
|
||||
if (typeStat == null)
|
||||
continue;
|
||||
typeStat.cntDeltas += typeStat.reusedDeltas;
|
||||
|
||||
stats.reusedObjects += typeStat.reusedObjects;
|
||||
stats.reusedDeltas += typeStat.reusedDeltas;
|
||||
stats.totalDeltas += typeStat.cntDeltas;
|
||||
}
|
||||
|
||||
reader.release();
|
||||
endPhase(writeMonitor);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue