public void printKeysAbsentInServer(RemoteReplicaInfo rinfo) {
    String output = getFilePath(rinfo, BLOB_STATE_MISMATCHES_FILE);
    azureBlobMap.values().stream()
        .filter(azureBlob -> {
          // ignore blobs absent in server and have expired/obsolete in azure
          return !(azureBlob.isExpired() || azureBlob.isDeleted());
        })
        .forEach(azureBlob -> {
          String msg = String.join(BackupCheckerFileManager.COLUMN_SEPARATOR,
          BLOB_ABSENT_IN_SERVER.name(),
          MessageInfo.toText(null), MessageInfo.toText(azureBlob),
          "\n");
          fileManager.appendToFile(output, msg);
          metrics.backupIntegrityError.inc();
    });
    azureBlobMap.clear();
  }
Prints keys absent in server, but present in cloud. This may happen if the blob is compacted or somehow went
missing from the server but is still present in azure backups.
@param rinfo
ambry-replication/src/main/java/com/github/ambry/replication/BackupCheckerThread.java