-
Type:
Task
-
Resolution: Works as Designed
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Change streams
-
None
-
Query Execution
-
QE 2025-09-01, QE 2025-09-15
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Currently, after opening a change stream through Watch(), TryNext() would return false if there is no event.
In majority of the cases, ResumeToken will be updated despite there is no event. We then could decode it to a timestamp and confirm that change stream has processed up to a certain event. However, this behavior is not guaranteed. We have observed in the test that it is possible for the ResumeToken to not update for 200+ seconds and then advanced 200+ seconds all of sudden.
We would like to request change to ensure that TryNext() will always refresh ResumeToken.
This is causing impact to mongosync. Currently, we rely on the above behavior to stop watching changes in the source cluster. If the customer stops source cluster write and send /commit request, we rely on the ResumeToken to update even there is no event from the change stream. Otherwise, the COMMITTING state would appear stuck for an undetermined amount of time.