public void processWatermark(Watermark mark) {
    if (isDoubleWrite()) {
      return;
    }
    if (specification.shouldDoubleWrite(mark.getTimestamp())) {
      shouldDoubleWrite = true;
      LOG.info(
          "processWatermark {}, subTaskId is {}, should double write is true.", mark, subtaskId);
      LOG.info(
          "begin update mixed-format table, set {} to true",
          MixedFormatValidator.LOG_STORE_CATCH_UP.key());
      UpdateProperties updateProperties = table.updateProperties();
      updateProperties.set(MixedFormatValidator.LOG_STORE_CATCH_UP.key(), String.valueOf(true));
      updateProperties.set(
          MixedFormatValidator.LOG_STORE_CATCH_UP_TIMESTAMP.key(),
          String.valueOf(System.currentTimeMillis()));
      updateProperties.remove(MixedFormatValidator.AUTO_EMIT_LOGSTORE_WATERMARK_GAP.key());
      updateProperties.commit();
      LOG.info("end update mixed-format table.");
    }
  }
This is an automatic logstore writer util class.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/write/AutomaticDoubleWriteStatus.java