private AdminResponse handleForceDeleteRequest(DataInputStream requestStream, AdminRequest adminRequest) {
    final int correlationId = adminRequest.getCorrelationId();
    final String clientId = adminRequest.getClientId();
    // check if the force delete request is enabled.
    if (!serverConfig.serverHandleForceDeleteRequestEnabled) {
      logger.error("ForceDelete request is disabled");
      return new AdminResponse(correlationId, clientId, ServerErrorCode.BadRequest);
    }

    ForceDeleteAdminRequest forceDeleteAdminRequest;
    try {
      forceDeleteAdminRequest = ForceDeleteAdminRequest.readFrom(requestStream, adminRequest, storeKeyFactory);
    } catch (Exception e) {
      logger.error("Failed to deserialize ForceDeleteAdminRequest", e);
      return new AdminResponse(correlationId, clientId, ServerErrorCode.BadRequest);
    }

    StoreKey storeKey = forceDeleteAdminRequest.getStoreKey();
    short lifeVersion = forceDeleteAdminRequest.getLifeVersion();
    long operationTimeMs = System.currentTimeMillis();
    BlobId blobId = (BlobId)storeKey;
    short accountId = blobId.getAccountId();
    short containerId = blobId.getContainerId();

    try {
      PartitionId partitionId = blobId.getPartition();
      Store store = storeManager.getStore(partitionId);
      if (store == null) {
        logger.error("ForceDeleteAdminRequest BlobId {}'s partition[{}] doesn't exist or stopped in this host", blobId,
            partitionId.getId());
        return new AdminResponse(correlationId, clientId, ServerErrorCode.ReplicaUnavailable);
      }
      // MessageInfo.size is supposed to be DeleteMessageFormatInputStream.size(). store.forceDelete will recalculate it.
      MessageInfo info = new MessageInfo(storeKey, 0, accountId, containerId, operationTimeMs, lifeVersion);

      store.forceDelete(Collections.singletonList(info));
      return new AdminResponse(correlationId, clientId, ServerErrorCode.NoError);
    } catch (StoreException e) {
      logger.error("ForceDeleteAdminRequest failed to execute on given key {}", blobId, e);
      if (e.getErrorCode() == StoreErrorCodes.AlreadyExist) {
        return new AdminResponse(correlationId, clientId, BlobAlreadyExists);
      }
    } catch (Exception e) {
      logger.error("ForceDeleteAdminRequest Unexpected error when handleForceDeleteRequest", e);
    }
    return new AdminResponse(correlationId, clientId, ServerErrorCode.UnknownError);
  }
Handles {@link ForceDeleteAdminRequest}.
@param requestStream the serialized bytes of the request.
@param adminRequest the {@link AdminRequest} received.
@return the {@link AdminResponse} to the request.
ambry-server/src/main/java/com/github/ambry/server/AmbryServerRequests.java