private int finishSyncLowerThanTxid(long txid) {
    int finished = 0;
    for (Iterator<SyncFuture> iter = syncFutures.iterator(); iter.hasNext();) {
      SyncFuture sync = iter.next();
      if (sync.getTxid() <= txid) {
        markFutureDoneAndOffer(sync, txid, null);
        iter.remove();
        finished++;
      } else {
        break;
      }
    }
    return finished;
  }
This method is to adapt {@link FSHLog} and {@link AsyncFSWAL}. For {@link AsyncFSWAL}, we use
{@link AbstractFSWAL#highestProcessedAppendTxid} at the point we calling
{@link AsyncFSWAL#doWriterSync} method as successful syncedTxid. For {@link FSHLog}, because we
use multi-thread {@code SyncRunner}s, we used the result of {@link CompletableFuture} as
successful syncedTxid.
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java