protected AzureBlobProperties getBlobProperties(AzureBlobLayoutStrategy.BlobLayout blobLayout)
      throws CloudStorageException {
    Timer.Context storageTimer = azureMetrics.blobGetPropertiesLatency.time();
    String errfmt = "Failed to get blob properties for %s from Azure blob storage due to %s";
    try {
      Response<BlobProperties> response = createOrGetBlobStore(blobLayout.containerName)
          .getBlobClient(blobLayout.blobFilePath)
          .getPropertiesWithResponse(null, null, Context.NONE);
      BlobProperties blobProperties = response.getValue();
      // Success rate is effective, success counter is ineffective because it just monotonically increases
      azureMetrics.blobGetPropertiesSuccessRate.mark();
      logger.trace("Successfully got blob-properties for {} from Azure blob storage with etag = {}",
          blobLayout.blobFilePath, blobProperties.getETag());
      return new AzureBlobProperties(blobProperties, response.getHeaders().getValue(X_MS_REQUEST_ID),
          response.getStatusCode());
    } catch (BlobStorageException bse) {
      String msg = String.format(errfmt, blobLayout, bse.getMessage());
      if (bse.getErrorCode() == BlobErrorCode.BLOB_NOT_FOUND) {
        logger.trace(msg);
        HttpResponse response = bse.getResponse();
        return new AzureBlobProperties(null, bse.getResponse().getHeaders().getValue(X_MS_REQUEST_ID),
            response.getStatusCode());
      }
      azureMetrics.blobGetPropertiesErrorCount.inc();
      logger.error(msg);
      throw new CloudStorageException(msg);
    } catch (Throwable t) {
      azureMetrics.blobGetPropertiesErrorCount.inc();
      String error = String.format(errfmt, blobLayout, t.getMessage());
      logger.error(error);
      throw new CloudStorageException(error);
    } finally {
      storageTimer.stop();
    }
  }
Returns blob properties from Azure
@param blobLayout BlobLayout
@return Blob properties
@throws CloudStorageException
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/AzureCloudDestinationSync.java