protected void applyPut(MessageSievingInputStream validMessageDetectionInputStream,
      RemoteReplicaInfo remoteReplicaInfo) throws StoreException, IOException {
    List<MessageInfo> messageInfoList = validMessageDetectionInputStream.getValidMessageInfoList();
    if (messageInfoList.size() == 0) {
      logger.debug("MessageInfoList is of size 0 as all messages are invalidated, deprecated, deleted or expired.");
    } else {
      MessageFormatWriteSet writeSet =
          new MessageFormatWriteSet(validMessageDetectionInputStream, messageInfoList, false);
      remoteReplicaInfo.getLocalStore().put(writeSet);
    }
  }
Applies PUT to local store and creates the blob locally
@param validMessageDetectionInputStream Stream of valid blob IDs
@param remoteReplicaInfo Info about remote replica from which we are replicating
@throws StoreException
@throws IOException
ambry-replication/src/main/java/com/github/ambry/replication/ReplicaThread.java