This is an automated email from the ASF dual-hosted git repository.

voonhous pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hudi.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 1950c2a00205 docs(streamer): document checkpoint v2 reset for the Hudi 
incremental source (#19573)
1950c2a00205 is described below

commit 1950c2a00205920f11befe32f5a84f619251fe7c
Author: deepakpanda93 <[email protected]>
AuthorDate: Wed Aug 19 14:31:47 2026 +0530

    docs(streamer): document checkpoint v2 reset for the Hudi incremental 
source (#19573)
    
    * docs(streamer): document checkpoint v2 reset for the Hudi incremental 
source
    
    apache/hudi#12718 changed how --checkpoint is interpreted for the Hudi
    incremental source once the target table is at table version 8 or higher, 
but
    the Checkpointing section still only described the Kafka and DFS formats. A
    user resetting a checkpoint on such a table hits an IllegalArgumentException
    with no documentation to consult.
    
    Verified end to end on Spark 3.5.7 with Hudi 1.2.0, running HoodieStreamer
    with HoodieIncrSource against a table-version-9 source table whose four
    commits have distinct requested and completion times:
    
    - No override ingests everything and stores streamer.checkpoint.key.v2 =
      20260810122008215, the completion time of the last source commit. So the
      checkpoint really is completion time based, not request time based.
    - --checkpoint 20260810122006588, a bare timestamp, fails with
      "Illegal checkpoint key override ... Valid format is either
      resumeFromInstantRequestTime:<checkpoint value> or
      resumeFromInstantCompletionTime:<checkpoint value>."
    - --checkpoint resumeFromInstantRequestTime:20260810122006588 and
      --checkpoint resumeFromInstantCompletionTime:20260810122007406 both
      succeed and both ingest exactly ids 31,32,41,42, confirming the two forms
      name the same boundary and that the request time form is translated to the
      matching completion time.
    - Both record the value passed under streamer.checkpoint.reset.key.v2
      verbatim.
    - S3EventsHoodieIncrSource with a bare --checkpoint is not rejected by the
      parser at all, confirming the DATASOURCES_NOT_SUPPORTED_WITH_CKPT_V2
      exclusion in CheckpointUtils; it fails later on unrelated S3 event schema.
    
    The upgrade guard is documented from
    
StreamerCheckpointUtils.assertNoCheckpointOverrideDuringUpgradeForHoodieIncSource,
    which throws when --checkpoint or --ignore-checkpoint is combined with a
    Hudi incremental source on a run that would upgrade or downgrade the table.
    
    Applied to next, 1.2.0, 1.1.1, 1.0.2 and 1.0.1. Not 1.0.0:
    HoodieIncrSourceCheckpointValUtils does not exist in that release, so the
    prefixed format would be wrong there.
    
    Closes #16813.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    
    * docs(streamer): name the checkpoint metadata keys correctly, note the 
1.0.1 floor
    
    Two corrections after running the end-to-end test across every 1.x release.
    
    Checkpoint metadata key. The section claimed checkpoints are stored as
    `streamer.checkpoint.key`, which is not a key Hudi writes. The real ones are
    deltastreamer.checkpoint.key / deltastreamer.checkpoint.reset_key
    (StreamerCheckpointV1:29-30, written at :55 and :60) and
    streamer.checkpoint.key.v2 / streamer.checkpoint.reset.key.v2
    (StreamerCheckpointV2:32-33, written at :61 and :66), selected by
    CheckpointUtils.shouldTargetCheckpointV2 on the write table version. 
Confirmed
    by running the streamer both ways against the same source: the default
    version-9 target commit carries streamer.checkpoint.key.v2, and a target
    forced to hoodie.write.table.version=6 carries
    `deltastreamer.checkpoint.key" : "20260810134321000`.
    
    StreamerCheckpointV2 also has addV1Props(), which would add the v1 keys
    alongside the v2 ones, so I checked before wording this as an either/or. It
    has no callers anywhere in main or test at release-1.2.0, and no commit
    produced during testing carried both sets, so the mapping is stated plainly
    without hedging.
    
    Version floor. The prefixed --checkpoint form was tested on 1.0.0, 1.0.1,
    1.0.2, 1.1.0, 1.1.1 and 1.2.0. It works from 1.0.1 onward, on table version 
8
    (1.0.1, 1.0.2) and table version 9 (1.1.0, 1.1.1, 1.2.0) alike, and both
    prefixes resolve to the same resume point on the earliest and latest of 
those.
    On 1.0.0 it fails outright with
    "DateTimeParseException: Text 'resumeFromInstant' could not be parsed at
    index 0", while a bare value is accepted and read as a completion time. 
Since
    readers on the current docs may be running 1.0.0, the section now states the
    1.0.1 floor rather than leaving them to hit that error.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    
    * docs(streamer): name the checkpoint reset key correctly too
    
    Review feedback on apache/hudi#19573: the existing bullet said --checkpoint
    sets `streamer.checkpoint.reset_key`, which does not reconcile with the
    `streamer.checkpoint.reset.key.v2` named in the new subsection.
    
    It does not reconcile because that key does not exist either. It has the 
same
    missing-prefix defect as the checkpoint key line already corrected in
    d92a88e38e9c: the real reset keys are deltastreamer.checkpoint.reset_key
    (StreamerCheckpointV1:30, written at :60) and
    streamer.checkpoint.reset.key.v2 (StreamerCheckpointV2:33, written at :66),
    chosen by the same write-table-version test.
    
    Reworded the bullet to name both, mirroring the phrasing used for the
    checkpoint key a few lines above.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    
    * docs(streamer): stop tying the checkpoint key to table version alone
    
    Review feedback on apache/hudi#19573 challenged the two lines I edited in 
the
    Kafka/DFS paragraph, which said the .v2 keys apply at table version 8 and
    above and the deltastreamer.* keys below that. Testing shows that rule is
    wrong, though not for the reason given in the review.
    
    The reviewer's mechanism does not match release-1.2.0: StreamSync has no
    createCheckpoint() method, and extractCheckpointMetadata 
(StreamSync:911-927)
    uses whatever Checkpoint object the source returned for the next batch,
    falling back to buildCheckpointFromGeneralSource only when the source
    supplied none.
    
    What actually decides the key is the source's checkpoint type.
    InputBatch(batch, String) wraps the value in StreamerCheckpointV2
    unconditionally (InputBatch:43-44), so sources that hand back a plain 
string,
    such as Kafka and DFS, always produce a V2 checkpoint. Confirmed by running
    ParquetDFSSource twice against the same input: the v2 key is written at 
table
    version 9 and equally at table version 6.
    
    HoodieIncrSource is different because it returns a Checkpoint object whose
    type is chosen by table version, which is why the earlier version 6 run of
    that source produced deltastreamer.checkpoint.key.
    
    So the split is by source, and only within the Hudi incremental source by
    table version. Both lines now name the two keys and say what the choice
    depends on, without asserting a version rule that does not hold for Kafka or
    DFS. The version specific detail stays in the incremental source subsection
    below, where it is backed by tests.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
---
 website/docs/hoodie_streaming_ingestion.md         | 45 +++++++++++++++++++++-
 .../version-1.0.1/hoodie_streaming_ingestion.md    | 45 +++++++++++++++++++++-
 .../version-1.0.2/hoodie_streaming_ingestion.md    | 45 +++++++++++++++++++++-
 .../version-1.1.1/hoodie_streaming_ingestion.md    | 45 +++++++++++++++++++++-
 .../version-1.2.0/hoodie_streaming_ingestion.md    | 45 +++++++++++++++++++++-
 5 files changed, 215 insertions(+), 10 deletions(-)

diff --git a/website/docs/hoodie_streaming_ingestion.md 
b/website/docs/hoodie_streaming_ingestion.md
index 1fb282a5d718..6937ed01d22b 100644
--- a/website/docs/hoodie_streaming_ingestion.md
+++ b/website/docs/hoodie_streaming_ingestion.md
@@ -312,14 +312,55 @@ Read more in depth about concurrency control in the 
[concurrency control concept
 Hudi Streamer uses checkpoints to keep track of what data has been read 
already so it can resume without needing to reprocess all data.
 When using a Kafka source, the checkpoint is the [Kafka 
Offset](https://cwiki.apache.org/confluence/display/KAFKA/Offset+Management) 
 When using a DFS source, the checkpoint is the 'last modified' timestamp of 
the latest file read.
-Checkpoints are saved in the .hoodie commit file as `streamer.checkpoint.key`.
+Checkpoints are saved in the .hoodie commit file. Completion time checkpoints 
are stored under
+`streamer.checkpoint.key.v2` and request time checkpoints under 
`deltastreamer.checkpoint.key`. Which one applies
+depends on the source, and for the Hudi incremental source also on the table 
version — see below.
 
 If you need to change the checkpoints for reprocessing or replaying data you 
can use the following options:
 
-- `--checkpoint` will set `streamer.checkpoint.reset_key` in the commit file 
to overwrite the current checkpoint. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired timestamp. For type 
`single_offset`, we assume that topic consists of a sing [...]
+- `--checkpoint` will set the matching reset key in the commit file to 
overwrite the current checkpoint, either `streamer.checkpoint.reset.key.v2` or 
`deltastreamer.checkpoint.reset_key`. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired ti [...]
 - `--source-limit` will set a maximum amount of data to read from the source. 
For DFS sources, this is max # of bytes read.
 For Kafka, this is the max # of events to read.
 
+#### Resetting the checkpoint for the Hudi incremental source
+
+When Hudi Streamer writes a target table at table version 8 or higher using 
`HoodieIncrSource`, it tracks progress by
+**completion time** instead of requested instant time, and records it in the 
commit metadata under
+`streamer.checkpoint.key.v2`. A bare timestamp would be ambiguous between the 
two, so `--checkpoint` has to state which
+one it is. This form is required from Hudi 1.0.1 onward; on 1.0.0 the prefixes 
are not recognised and `--checkpoint`
+takes a bare completion time.
+
+```shell
+# resume after the instant with this requested instant time
+--checkpoint resumeFromInstantRequestTime:20250110120000000
+
+# resume after the instant with this completion time
+--checkpoint resumeFromInstantCompletionTime:20250110120005000
+```
+
+Both forms resume from the same position. The request time form is translated 
internally to the completion time of that
+same instant, and ingestion proceeds in completion time order either way. 
Whichever value you pass is recorded verbatim
+under `streamer.checkpoint.reset.key.v2`.
+
+Passing a bare timestamp is rejected:
+
+```plain
+Illegal checkpoint key override `20250110120000000`. Valid format is either
+`resumeFromInstantRequestTime:<checkpoint value>` or 
`resumeFromInstantCompletionTime:<checkpoint value>`.
+```
+
+:::note
+`S3EventsHoodieIncrSource` and `GcsEventsHoodieIncrSource` are excluded from 
completion time checkpoints. They continue
+to take a plain `--checkpoint` value regardless of the table version.
+:::
+
+:::caution
+Do not pass `--checkpoint` or `--ignore-checkpoint` on the run that upgrades 
or downgrades the table version while using
+a Hudi incremental source. Rather than risk applying the override under the 
wrong checkpoint semantics, Hudi fails the
+job with a message asking you to drop those options. Let the upgrade finish 
first, then reset the checkpoint on a later
+run.
+:::
+
 ### Transformers
 
 Hudi Streamer supports custom transformation on records before writing to 
storage. This is done by supplying 
diff --git a/website/versioned_docs/version-1.0.1/hoodie_streaming_ingestion.md 
b/website/versioned_docs/version-1.0.1/hoodie_streaming_ingestion.md
index 5f559242e8b9..949e45194cf9 100644
--- a/website/versioned_docs/version-1.0.1/hoodie_streaming_ingestion.md
+++ b/website/versioned_docs/version-1.0.1/hoodie_streaming_ingestion.md
@@ -310,14 +310,55 @@ Read more in depth about concurrency control in the 
[concurrency control concept
 `HoodieStreamer` uses checkpoints to keep track of what data has been read 
already so it can resume without needing to reprocess all data.
 When using a Kafka source, the checkpoint is the [Kafka 
Offset](https://cwiki.apache.org/confluence/display/KAFKA/Offset+Management) 
 When using a DFS source, the checkpoint is the 'last modified' timestamp of 
the latest file read.
-Checkpoints are saved in the .hoodie commit file as `streamer.checkpoint.key`.
+Checkpoints are saved in the .hoodie commit file. Completion time checkpoints 
are stored under
+`streamer.checkpoint.key.v2` and request time checkpoints under 
`deltastreamer.checkpoint.key`. Which one applies
+depends on the source, and for the Hudi incremental source also on the table 
version — see below.
 
 If you need to change the checkpoints for reprocessing or replaying data you 
can use the following options:
 
-- `--checkpoint` will set `streamer.checkpoint.reset_key` in the commit file 
to overwrite the current checkpoint. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired timestamp. For type 
`single_offset`, we assume that topic consists of a sing [...]
+- `--checkpoint` will set the matching reset key in the commit file to 
overwrite the current checkpoint, either `streamer.checkpoint.reset.key.v2` or 
`deltastreamer.checkpoint.reset_key`. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired ti [...]
 - `--source-limit` will set a maximum amount of data to read from the source. 
For DFS sources, this is max # of bytes read.
 For Kafka, this is the max # of events to read.
 
+#### Resetting the checkpoint for the Hudi incremental source
+
+When Hudi Streamer writes a target table at table version 8 or higher using 
`HoodieIncrSource`, it tracks progress by
+**completion time** instead of requested instant time, and records it in the 
commit metadata under
+`streamer.checkpoint.key.v2`. A bare timestamp would be ambiguous between the 
two, so `--checkpoint` has to state which
+one it is. This form is required from Hudi 1.0.1 onward; on 1.0.0 the prefixes 
are not recognised and `--checkpoint`
+takes a bare completion time.
+
+```shell
+# resume after the instant with this requested instant time
+--checkpoint resumeFromInstantRequestTime:20250110120000000
+
+# resume after the instant with this completion time
+--checkpoint resumeFromInstantCompletionTime:20250110120005000
+```
+
+Both forms resume from the same position. The request time form is translated 
internally to the completion time of that
+same instant, and ingestion proceeds in completion time order either way. 
Whichever value you pass is recorded verbatim
+under `streamer.checkpoint.reset.key.v2`.
+
+Passing a bare timestamp is rejected:
+
+```plain
+Illegal checkpoint key override `20250110120000000`. Valid format is either
+`resumeFromInstantRequestTime:<checkpoint value>` or 
`resumeFromInstantCompletionTime:<checkpoint value>`.
+```
+
+:::note
+`S3EventsHoodieIncrSource` and `GcsEventsHoodieIncrSource` are excluded from 
completion time checkpoints. They continue
+to take a plain `--checkpoint` value regardless of the table version.
+:::
+
+:::caution
+Do not pass `--checkpoint` or `--ignore-checkpoint` on the run that upgrades 
or downgrades the table version while using
+a Hudi incremental source. Rather than risk applying the override under the 
wrong checkpoint semantics, Hudi fails the
+job with a message asking you to drop those options. Let the upgrade finish 
first, then reset the checkpoint on a later
+run.
+:::
+
 ### Transformers
 
 `HoodieStreamer` supports custom transformation on records before writing to 
storage. This is done by supplying 
diff --git a/website/versioned_docs/version-1.0.2/hoodie_streaming_ingestion.md 
b/website/versioned_docs/version-1.0.2/hoodie_streaming_ingestion.md
index c922b4831d07..edc61eed2a61 100644
--- a/website/versioned_docs/version-1.0.2/hoodie_streaming_ingestion.md
+++ b/website/versioned_docs/version-1.0.2/hoodie_streaming_ingestion.md
@@ -310,14 +310,55 @@ Read more in depth about concurrency control in the 
[concurrency control concept
 `HoodieStreamer` uses checkpoints to keep track of what data has been read 
already so it can resume without needing to reprocess all data.
 When using a Kafka source, the checkpoint is the [Kafka 
Offset](https://cwiki.apache.org/confluence/display/KAFKA/Offset+Management) 
 When using a DFS source, the checkpoint is the 'last modified' timestamp of 
the latest file read.
-Checkpoints are saved in the .hoodie commit file as `streamer.checkpoint.key`.
+Checkpoints are saved in the .hoodie commit file. Completion time checkpoints 
are stored under
+`streamer.checkpoint.key.v2` and request time checkpoints under 
`deltastreamer.checkpoint.key`. Which one applies
+depends on the source, and for the Hudi incremental source also on the table 
version — see below.
 
 If you need to change the checkpoints for reprocessing or replaying data you 
can use the following options:
 
-- `--checkpoint` will set `streamer.checkpoint.reset_key` in the commit file 
to overwrite the current checkpoint. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired timestamp. For type 
`single_offset`, we assume that topic consists of a sing [...]
+- `--checkpoint` will set the matching reset key in the commit file to 
overwrite the current checkpoint, either `streamer.checkpoint.reset.key.v2` or 
`deltastreamer.checkpoint.reset_key`. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired ti [...]
 - `--source-limit` will set a maximum amount of data to read from the source. 
For DFS sources, this is max # of bytes read.
 For Kafka, this is the max # of events to read.
 
+#### Resetting the checkpoint for the Hudi incremental source
+
+When Hudi Streamer writes a target table at table version 8 or higher using 
`HoodieIncrSource`, it tracks progress by
+**completion time** instead of requested instant time, and records it in the 
commit metadata under
+`streamer.checkpoint.key.v2`. A bare timestamp would be ambiguous between the 
two, so `--checkpoint` has to state which
+one it is. This form is required from Hudi 1.0.1 onward; on 1.0.0 the prefixes 
are not recognised and `--checkpoint`
+takes a bare completion time.
+
+```shell
+# resume after the instant with this requested instant time
+--checkpoint resumeFromInstantRequestTime:20250110120000000
+
+# resume after the instant with this completion time
+--checkpoint resumeFromInstantCompletionTime:20250110120005000
+```
+
+Both forms resume from the same position. The request time form is translated 
internally to the completion time of that
+same instant, and ingestion proceeds in completion time order either way. 
Whichever value you pass is recorded verbatim
+under `streamer.checkpoint.reset.key.v2`.
+
+Passing a bare timestamp is rejected:
+
+```plain
+Illegal checkpoint key override `20250110120000000`. Valid format is either
+`resumeFromInstantRequestTime:<checkpoint value>` or 
`resumeFromInstantCompletionTime:<checkpoint value>`.
+```
+
+:::note
+`S3EventsHoodieIncrSource` and `GcsEventsHoodieIncrSource` are excluded from 
completion time checkpoints. They continue
+to take a plain `--checkpoint` value regardless of the table version.
+:::
+
+:::caution
+Do not pass `--checkpoint` or `--ignore-checkpoint` on the run that upgrades 
or downgrades the table version while using
+a Hudi incremental source. Rather than risk applying the override under the 
wrong checkpoint semantics, Hudi fails the
+job with a message asking you to drop those options. Let the upgrade finish 
first, then reset the checkpoint on a later
+run.
+:::
+
 ### Transformers
 
 `HoodieStreamer` supports custom transformation on records before writing to 
storage. This is done by supplying 
diff --git a/website/versioned_docs/version-1.1.1/hoodie_streaming_ingestion.md 
b/website/versioned_docs/version-1.1.1/hoodie_streaming_ingestion.md
index 286d5765c751..a52dc442bae3 100644
--- a/website/versioned_docs/version-1.1.1/hoodie_streaming_ingestion.md
+++ b/website/versioned_docs/version-1.1.1/hoodie_streaming_ingestion.md
@@ -310,14 +310,55 @@ Read more in depth about concurrency control in the 
[concurrency control concept
 Hudi Streamer uses checkpoints to keep track of what data has been read 
already so it can resume without needing to reprocess all data.
 When using a Kafka source, the checkpoint is the [Kafka 
Offset](https://cwiki.apache.org/confluence/display/KAFKA/Offset+Management) 
 When using a DFS source, the checkpoint is the 'last modified' timestamp of 
the latest file read.
-Checkpoints are saved in the .hoodie commit file as `streamer.checkpoint.key`.
+Checkpoints are saved in the .hoodie commit file. Completion time checkpoints 
are stored under
+`streamer.checkpoint.key.v2` and request time checkpoints under 
`deltastreamer.checkpoint.key`. Which one applies
+depends on the source, and for the Hudi incremental source also on the table 
version — see below.
 
 If you need to change the checkpoints for reprocessing or replaying data you 
can use the following options:
 
-- `--checkpoint` will set `streamer.checkpoint.reset_key` in the commit file 
to overwrite the current checkpoint. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired timestamp. For type 
`single_offset`, we assume that topic consists of a sing [...]
+- `--checkpoint` will set the matching reset key in the commit file to 
overwrite the current checkpoint, either `streamer.checkpoint.reset.key.v2` or 
`deltastreamer.checkpoint.reset_key`. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired ti [...]
 - `--source-limit` will set a maximum amount of data to read from the source. 
For DFS sources, this is max # of bytes read.
 For Kafka, this is the max # of events to read.
 
+#### Resetting the checkpoint for the Hudi incremental source
+
+When Hudi Streamer writes a target table at table version 8 or higher using 
`HoodieIncrSource`, it tracks progress by
+**completion time** instead of requested instant time, and records it in the 
commit metadata under
+`streamer.checkpoint.key.v2`. A bare timestamp would be ambiguous between the 
two, so `--checkpoint` has to state which
+one it is. This form is required from Hudi 1.0.1 onward; on 1.0.0 the prefixes 
are not recognised and `--checkpoint`
+takes a bare completion time.
+
+```shell
+# resume after the instant with this requested instant time
+--checkpoint resumeFromInstantRequestTime:20250110120000000
+
+# resume after the instant with this completion time
+--checkpoint resumeFromInstantCompletionTime:20250110120005000
+```
+
+Both forms resume from the same position. The request time form is translated 
internally to the completion time of that
+same instant, and ingestion proceeds in completion time order either way. 
Whichever value you pass is recorded verbatim
+under `streamer.checkpoint.reset.key.v2`.
+
+Passing a bare timestamp is rejected:
+
+```plain
+Illegal checkpoint key override `20250110120000000`. Valid format is either
+`resumeFromInstantRequestTime:<checkpoint value>` or 
`resumeFromInstantCompletionTime:<checkpoint value>`.
+```
+
+:::note
+`S3EventsHoodieIncrSource` and `GcsEventsHoodieIncrSource` are excluded from 
completion time checkpoints. They continue
+to take a plain `--checkpoint` value regardless of the table version.
+:::
+
+:::caution
+Do not pass `--checkpoint` or `--ignore-checkpoint` on the run that upgrades 
or downgrades the table version while using
+a Hudi incremental source. Rather than risk applying the override under the 
wrong checkpoint semantics, Hudi fails the
+job with a message asking you to drop those options. Let the upgrade finish 
first, then reset the checkpoint on a later
+run.
+:::
+
 ### Transformers
 
 Hudi Streamer supports custom transformation on records before writing to 
storage. This is done by supplying 
diff --git a/website/versioned_docs/version-1.2.0/hoodie_streaming_ingestion.md 
b/website/versioned_docs/version-1.2.0/hoodie_streaming_ingestion.md
index 7886ff13251b..a4958454598a 100644
--- a/website/versioned_docs/version-1.2.0/hoodie_streaming_ingestion.md
+++ b/website/versioned_docs/version-1.2.0/hoodie_streaming_ingestion.md
@@ -312,14 +312,55 @@ Read more in depth about concurrency control in the 
[concurrency control concept
 Hudi Streamer uses checkpoints to keep track of what data has been read 
already so it can resume without needing to reprocess all data.
 When using a Kafka source, the checkpoint is the [Kafka 
Offset](https://cwiki.apache.org/confluence/display/KAFKA/Offset+Management) 
 When using a DFS source, the checkpoint is the 'last modified' timestamp of 
the latest file read.
-Checkpoints are saved in the .hoodie commit file as `streamer.checkpoint.key`.
+Checkpoints are saved in the .hoodie commit file. Completion time checkpoints 
are stored under
+`streamer.checkpoint.key.v2` and request time checkpoints under 
`deltastreamer.checkpoint.key`. Which one applies
+depends on the source, and for the Hudi incremental source also on the table 
version — see below.
 
 If you need to change the checkpoints for reprocessing or replaying data you 
can use the following options:
 
-- `--checkpoint` will set `streamer.checkpoint.reset_key` in the commit file 
to overwrite the current checkpoint. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired timestamp. For type 
`single_offset`, we assume that topic consists of a sing [...]
+- `--checkpoint` will set the matching reset key in the commit file to 
overwrite the current checkpoint, either `streamer.checkpoint.reset.key.v2` or 
`deltastreamer.checkpoint.reset_key`. Format of checkpoint depends on 
[KAFKA_CHECKPOINT_TYPE](configurations.md#hoodiestreamersourcekafkacheckpointtype).
 By default (for type `string`), checkpoint should be provided as: 
`topicName,0:offset0,1:offset1,2:offset2`. For type `timestamp`, checkpoint 
should be provided as long value of desired ti [...]
 - `--source-limit` will set a maximum amount of data to read from the source. 
For DFS sources, this is max # of bytes read.
 For Kafka, this is the max # of events to read.
 
+#### Resetting the checkpoint for the Hudi incremental source
+
+When Hudi Streamer writes a target table at table version 8 or higher using 
`HoodieIncrSource`, it tracks progress by
+**completion time** instead of requested instant time, and records it in the 
commit metadata under
+`streamer.checkpoint.key.v2`. A bare timestamp would be ambiguous between the 
two, so `--checkpoint` has to state which
+one it is. This form is required from Hudi 1.0.1 onward; on 1.0.0 the prefixes 
are not recognised and `--checkpoint`
+takes a bare completion time.
+
+```shell
+# resume after the instant with this requested instant time
+--checkpoint resumeFromInstantRequestTime:20250110120000000
+
+# resume after the instant with this completion time
+--checkpoint resumeFromInstantCompletionTime:20250110120005000
+```
+
+Both forms resume from the same position. The request time form is translated 
internally to the completion time of that
+same instant, and ingestion proceeds in completion time order either way. 
Whichever value you pass is recorded verbatim
+under `streamer.checkpoint.reset.key.v2`.
+
+Passing a bare timestamp is rejected:
+
+```plain
+Illegal checkpoint key override `20250110120000000`. Valid format is either
+`resumeFromInstantRequestTime:<checkpoint value>` or 
`resumeFromInstantCompletionTime:<checkpoint value>`.
+```
+
+:::note
+`S3EventsHoodieIncrSource` and `GcsEventsHoodieIncrSource` are excluded from 
completion time checkpoints. They continue
+to take a plain `--checkpoint` value regardless of the table version.
+:::
+
+:::caution
+Do not pass `--checkpoint` or `--ignore-checkpoint` on the run that upgrades 
or downgrades the table version while using
+a Hudi incremental source. Rather than risk applying the override under the 
wrong checkpoint semantics, Hudi fails the
+job with a message asking you to drop those options. Let the upgrade finish 
first, then reset the checkpoint on a later
+run.
+:::
+
 ### Transformers
 
 Hudi Streamer supports custom transformation on records before writing to 
storage. This is done by supplying 

Reply via email to