UploadPack: Record negotiation stats on fetchV2 call

ServiceV2 is not collecting wants/have in PackStatistics. This records
the stats for fetch and push-negotiation.

Change-Id: Iefd79f36b3d7837195e8bd9fc7007de352089e66
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 f245eae..3264f55 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -1189,6 +1189,7 @@ private void fetchV2(PacketLineOut pckOut) throws IOException {
 
 		PackStatistics.Accumulator accumulator = new PackStatistics.Accumulator();
 		Instant negotiateStart = Instant.now();
+		accumulator.advertised = advertised.size();
 
 		ProtocolV2Parser parser = new ProtocolV2Parser(transferConfig);
 		FetchV2Request req = parser.parseFetchRequest(pckIn);
@@ -1209,6 +1210,7 @@ private void fetchV2(PacketLineOut pckOut) throws IOException {
 		// TODO(ifrade): Avoid mutating the parsed request.
 		req.getWantIds().addAll(wantedRefs.values());
 		wantIds = req.getWantIds();
+		accumulator.wants = wantIds.size();
 
 		boolean sectionSent = false;
 		boolean mayHaveShallow = req.getDepth() != 0
@@ -1766,7 +1768,6 @@ private boolean negotiate(FetchRequest req,
 					&& line.length() == PACKET_HAVE.length() + 40) {
 				peerHas.add(ObjectId
 						.fromString(line.substring(PACKET_HAVE.length())));
-				accumulator.haves++;
 			} else if (line.equals(PACKET_DONE)) {
 				last = processHaveLines(peerHas, last, pckOut, accumulator, Option.NONE);
 
@@ -1798,6 +1799,7 @@ private ObjectId processHaveLines(List<ObjectId> peerHas, ObjectId last,
 			parseWants(accumulator);
 		if (peerHas.isEmpty())
 			return last;
+		accumulator.haves += peerHas.size();
 
 		sentReady = false;
 		int haveCnt = 0;