protected OperationTracker getOperationTracker() {
      OperationTracker operationTracker;
      String trackerType = routerConfig.routerPutOperationTrackerType;
      String originatingDcName = clusterMap.getDatacenterName(clusterMap.getLocalDatacenterId());

      Pair<Account, Container> accountContainer = RouterUtils.getAccountContainer(accountService,
          passedInBlobProperties.getAccountId(),
          passedInBlobProperties.getContainerId());

      if(routerConfig.routerParanoidDurabilityEnabled && accountContainer.getSecond().isParanoidDurabilityEnabled()) {
        operationTracker = new ParanoidDurabilityOperationTracker(routerConfig, partitionId, originatingDcName, routerMetrics);
      } else if (trackerType.equals(SimpleOperationTracker.class.getSimpleName())) {
        operationTracker =
            new SimpleOperationTracker(routerConfig, RouterOperation.PutOperation, partitionId, originatingDcName, true,
                routerMetrics);
      } else if (trackerType.equals(AdaptiveOperationTracker.class.getSimpleName())) {
        operationTracker =
            new AdaptiveOperationTracker(routerConfig, routerMetrics, RouterOperation.PutOperation, partitionId,
                originatingDcName, time);
      } else {
        throw new IllegalArgumentException("Unrecognized tracker type: " + trackerType);
      }
      return operationTracker;
    }
Gets an {@link OperationTracker} based on the config;
@return an {@link OperationTracker} based on the config;
ambry-router/src/main/java/com/github/ambry/router/PutOperation.java