private void replayWALBatchMutate(Map<byte[], List<ExtendedCell>> family2Cells)
    throws IOException {
    startRegionOperation(Operation.REPLAY_BATCH_MUTATE);
    try {
      for (Map.Entry<byte[], List<ExtendedCell>> entry : family2Cells.entrySet()) {
        applyToMemStore(getStore(entry.getKey()), entry.getValue(), false, memStoreSizing);
      }
    } finally {
      closeRegionOperation(Operation.REPLAY_BATCH_MUTATE);
    }
  }
Replay the batch mutate for secondary replica.
<p/>
We will directly apply the cells to the memstore. This is because:
<ol>
<li>All the cells are gotten from {@link WALEdit}, so we only have {@link Put} and
{@link Delete} here</li>
<li>The replay is single threaded, we do not need to acquire row lock, as the region is read
only so no one else can write it.</li>
<li>We do not need to write WAL.</li>
<li>We will advance MVCC in the caller directly.</li>
</ol>
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java