void update(StoreFileList.Builder builder) throws IOException {
    if (nextTrackFile < 0) {
      // we need to call load first to load the prevTimestamp and also the next file
      // we are already in the update method, which is not read only, so pass false
      load(false);
    }
    FileSystem fs = ctx.getRegionFileSystem().getFileSystem();
    long timestamp = Math.max(prevTimestamp + 1, EnvironmentEdgeManager.currentTime());
    write(fs, trackFiles[nextTrackFile],
      builder.setTimestamp(timestamp).setVersion(VERSION).build());
    // record timestamp
    prevTimestamp = timestamp;
    // rotate the file
    nextTrackFile = 1 - nextTrackFile;

    try {
      fs.delete(trackFiles[nextTrackFile], false);
    } catch (IOException e) {
      // we will create new file with overwrite = true, so not a big deal here, only for speed up
      // loading as we do not need to read this file when loading
      LOG.debug("Failed to delete old track file {}, ignoring the exception",
        trackFiles[nextTrackFile], e);
    }
  }
We will set the timestamp and version in this method so just pass the builder in
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileListFile.java