public static DeleteRequest readFrom(DataInputStream stream, ClusterMap map) throws IOException {
    Short version = stream.readShort();
    switch (version) {
      case DELETE_REQUEST_VERSION_1:
        return DeleteRequest_V1.readFrom(stream, map);
      case DELETE_REQUEST_VERSION_2:
        return DeleteRequest_V2.readFrom(stream, map);
      case DELETE_REQUEST_VERSION_3:
        return DeleteRequest_V3.readFrom(stream, map);
      default:
        throw new IllegalStateException("Unknown Delete Request version " + version);
    }
  }
Constructs {@link DeleteRequest} in given version.

@param correlationId    correlationId of the delete request
@param clientId         clientId of the delete request
@param blobId           blobId of the delete request
@param deletionTimeInMs deletion time of the blob in ms
@param version          version of the {@link DeleteRequest}
@param isForceDelete    {@code true} if we should insert a Delete tombstone even if blob is missing on server.
                        Else {@code false}.
ambry-protocol/src/main/java/com/github/ambry/protocol/DeleteRequest.java