Ensure failures are only incremented in RunnableWithMetrics

To maintain consistency, task and fetch ref failure counters should
only be incremented within RunnableWithMetrics.

The Runnable::run() method is the only place with visibility into the
final outcome of a task, which can either complete successfully
or fail.

The following metric should always converge to zero:

plugins_pull_replication_tasks_started_total -
plugins_pull_replication_tasks_completed_total -
plugins_pull_replication_tasks_failed_total

Intermediate statuses should continue to be handled outside the
Runnable implementation, but final state metrics must be updated
only from within it.

Change-Id: I2f07a12b7afca32d3d222d1c06262e4d34ae003f
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java
index b1d553d..a5d1e9e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java
@@ -705,8 +705,6 @@
                     ? RefUpdate.Result.NOT_ATTEMPTED
                     : RefUpdate.Result.REJECTED_OTHER_REASON;
             postReplicationFailedEvent(fetchOp, trackingRefUpdate);
-            queueMetrics.incrementTaskFailed(this);
-            queueMetrics.incrementFetchRefsFailed(this, fetchOp);
 
             if (fetchOp.setToRetry()) {
               postReplicationScheduledEvent(fetchOp);