boolean finishWriterThreads() throws IOException {
    LOG.debug("Waiting for split writer threads to finish");
    boolean progressFailed = false;
    for (WriterThread t : writerThreads) {
      t.finish();
    }

    for (WriterThread t : writerThreads) {
      if (!progressFailed && reporter != null && !reporter.progress()) {
        progressFailed = true;
      }
      try {
        t.join();
      } catch (InterruptedException ie) {
        IOException iie = new InterruptedIOException();
        iie.initCause(ie);
        throw iie;
      }
    }
    controller.checkForErrors();
    final String msg = this.writerThreads.size() + " split writer threads finished";
    LOG.info(msg);
    updateStatusWithMsg(msg);
    return (!progressFailed);
  }
Wait for writer threads to dump all info to the sink
@return true when there is no error
hbase-server/src/main/java/org/apache/hadoop/hbase/wal/OutputSink.java