@Override
  public MemStoreSize getFlushableSize() {
    MemStoreSize mss = getSnapshotSize();
    if (mss.getDataSize() == 0) {
      // if snapshot is empty the tail of the pipeline (or everything in the memstore) is flushed
      if (compositeSnapshot) {
        MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(pipeline.getPipelineSize());
        MutableSegment currActive = getActive();
        if (!currActive.isEmpty()) {
          memStoreSizing.incMemStoreSize(currActive.getMemStoreSize());
        }
        mss = memStoreSizing.getMemStoreSize();
      } else {
        mss = pipeline.getTailSize();
      }
    }
    return mss.getDataSize() > 0 ? mss : getActive().getMemStoreSize();
  }
Push the current active memstore segment into the pipeline and create a snapshot of the tail of
current compaction pipeline Snapshot must be cleared by call to {@link #clearSnapshot}.
{@link #clearSnapshot(long)}.
@return {@link MemStoreSnapshot}
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java