private MessageInfo getMessageInfo(BlobItem blobItem) {
    Map<String, String> metadata = blobItem.getMetadata();
    try {
      /**
       * Azure blob metadata contains a field expiryTimeMs.
       * Presence of this field indicates the blob is temporary. ttlUpdated as false in this case.
       * Absence of this field means the blob was either permanent to start with or,
       * transitioned from temporary to permanent through a TTL-UPDATE.
       * There is no way to know which case happened, so just put ttlUpdated as false.
       * expiryTimeMs is included however and replication-code can decide necessary course of action.
       * Same goes for undeleted field and lifeVersion is included for replication-code to decide.
       *
       * We don't upload CRC during backups. This is probably an issue.
       */
      return new MessageInfo(new BlobId(blobItem.getName(), clustermap),
          Long.parseLong(metadata.get(CloudBlobMetadata.FIELD_SIZE)),
          metadata.containsKey(CloudBlobMetadata.FIELD_DELETION_TIME),
          false,
          false,
          Long.parseLong(metadata.containsKey(CloudBlobMetadata.FIELD_EXPIRATION_TIME) ?
              metadata.get(CloudBlobMetadata.FIELD_EXPIRATION_TIME) : String.valueOf(Utils.Infinite_Time)),
          null,
          Short.parseShort(metadata.get(CloudBlobMetadata.FIELD_ACCOUNT_ID)),
          Short.parseShort(metadata.get(CloudBlobMetadata.FIELD_CONTAINER_ID)),
          Long.parseLong(metadata.containsKey(CloudBlobMetadata.FIELD_CREATION_TIME) ?
              metadata.get(CloudBlobMetadata.FIELD_CREATION_TIME) : String.valueOf(System.currentTimeMillis())),
          Short.parseShort(metadata.get(CloudBlobMetadata.FIELD_LIFE_VERSION)));
    } catch (Exception e) {
      recoveryMetrics.metadataError.inc();
      logger.error("Failed to create MessageInfo for blob-id {} from Azure blob metadata due to {}",
          blobItem.getName(), e);
      e.printStackTrace();
    }
    return null;
  }
Create {@link MessageInfo} object from {@link BlobItem} object.
@param blobItem {@link BlobItem} object.
@return {@link MessageInfo} object.
ambry-cloud/src/main/java/com/github/ambry/cloud/RecoveryNetworkClient.java