Measure time taken for negotiation in protocol V2

Reason why this change is needed:
Getting this metric will help estimate how much time is spent
on negotiation in fetch V2.

What this patch does:
Measure time spent on negotiation rounds in UploadPack.fetchV2()
and save it in an instance of PackStatistics.Accumulator.
This is the same way the statistics are already gathered for
protocol V0/V1.

Change-Id: I14e55dd6ff743cb0b21b4953b533269ef069abb1
This commit is contained in:
Alexa Panfil 2020-09-11 09:34:23 +00:00
parent 292919b12a
commit c3458a6e03
1 changed files with 8 additions and 1 deletions

View File

@ -1137,6 +1137,9 @@ private void fetchV2(PacketLineOut pckOut) throws IOException {
advertised = refIdSet(getAdvertisedOrDefaultRefs().values());
}
PackStatistics.Accumulator accumulator = new PackStatistics.Accumulator();
long negotiateStart = System.currentTimeMillis();
ProtocolV2Parser parser = new ProtocolV2Parser(transferConfig);
FetchV2Request req = parser.parseFetchRequest(pckIn);
currentRequest = req;
@ -1238,7 +1241,11 @@ private void fetchV2(PacketLineOut pckOut) throws IOException {
// But sideband-all is not used, so we have to write it ourselves.
pckOut.writeString("packfile\n"); //$NON-NLS-1$
}
sendPack(new PackStatistics.Accumulator(),
accumulator.timeNegotiating = System.currentTimeMillis()
- negotiateStart;
sendPack(accumulator,
req,
req.getClientCapabilities().contains(OPTION_INCLUDE_TAG)
? db.getRefDatabase().getRefsByPrefix(R_TAGS)