private void createEmptyWriter() throws IOException {
      int index = existingWriters.size();
      boolean isInMajorRange = (index >= majorRangeFromIndex) && (index < majorRangeToIndex);
      // Stripe boundary count = stripe count + 1, so last stripe index is (#boundaries minus 2)
      boolean isLastWriter = !hasAnyWriter && (index == (boundaries.size() - 2));
      boolean needEmptyFile = isInMajorRange || isLastWriter;
      existingWriters.add(needEmptyFile ? writerFactory.createWriter() : null);
      hasAnyWriter |= needEmptyFile;
      currentWriterEndKey = (existingWriters.size() + 1 == boundaries.size())
        ? null
        : boundaries.get(existingWriters.size() + 1);
    }
Called if there are no cells for some stripe. We need to have something in the writer list
for this stripe, so that writer-boundary list indices correspond to each other. We can insert
null in the writer list for that purpose, except in the following cases where we actually
need a file: 1) If we are in range for which we are compacting all the files, we need to
create an empty file to preserve stripe metadata. 2) If we have not produced any file at all
for this compactions, and this is the last chance (the last stripe), we need to preserve last
seqNum (see also HBASE-6059).
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java