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
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
index 9889015..8c243d4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -1137,6 +1137,9 @@
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 @@
// 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)