@Override
    public void onCompletion(String result, Exception exception) {
      long processingStartTimeMs = SystemTime.getInstance().milliseconds();
      metrics.idConverterProcessingTimeInMs.update(processingStartTimeMs - operationStartTimeMs);
      try {
        if (exception == null) {
          BlobId blobId = FrontendUtils.getBlobIdFromString(result, clusterMap);
          accountAndContainerInjector.injectTargetAccountAndContainerFromBlobId(blobId, restRequest,
              metrics.getSignedUrlMetricsGroup);
          securityService.postProcessRequest(restRequest,
              new SecurityPostProcessRequestCallback(restRequest, restResponseChannel, callback));
        }
      } catch (Exception e) {
        exception = e;
      } finally {
        metrics.getSignedUrlIdConverterCallbackProcessingTimeInMs.update(
            SystemTime.getInstance().milliseconds() - processingStartTimeMs);
        if (exception != null) {
          callback.onCompletion(null, exception);
        }
      }
    }
Callback for calls to {@link IdConverter} if the signed URL required is a GET url.
ambry-frontend/src/main/java/com/github/ambry/frontend/GetSignedUrlHandler.java