Skip to content

[Cosmos] Full Fidelity Change Feed (AllVersionsAndDeletes) — SME Signoff: APIs Already GA #46636

@ananth7592

Description

@ananth7592

Summary

The Full Fidelity Change Feed (AllVersionsAndDeletes) feature needs formal SME signoff confirming that the FFCF APIs are already GA-accessible in the Python SDK. Unlike the .NET SDK (which gates FFCF behind #if PREVIEW — see azure-cosmos-dotnet-v3#5814), the Python SDK exposes FFCF as regular public parameters with no preview gating.

This issue requests confirmation that the following APIs are intentionally GA and do not require additional ungating or contract changes.

FFCF APIs Already Public in Python SDK

# API / Surface Location Notes
1 mode="AllVersionsAndDeletes" parameter on query_items_change_feed() container.py (sync), aio/_container.py (async) Exposed as Literal["LatestVersion", "AllVersionsAndDeletes"] — core entry point for FFCF
2 Change feed item response structure (current, previous, metadata dict keys) Returned from query_items_change_feed() when mode="AllVersionsAndDeletes" No typed wrapper class (unlike .NET's ChangeFeedItem<T>) — items are raw dicts
3 Change feed metadata (operationType, lsn, crts, previousLsn) Embedded in response dict under metadata key No typed model (unlike .NET's ChangeFeedMetadata)
4 Operation types: create, replace, delete String values in metadata["operationType"] No enum class (unlike .NET's ChangeFeedOperationType)
5 change_feed_policy parameter on create_container() / replace_container() database.py, aio/_database.py Passed as dict {"retentionDuration": N} — equivalent to .NET's ChangeFeedPolicy
6 feed_range parameter with change feed container.py query_items_change_feed(feed_range=...) Enables scoped FFCF reads
7 Internal state machine (ChangeFeedStateV2 with mode handling) _change_feed/change_feed_state.py Internal (_ prefixed) — sets FullFidelityFeedHeaderValue and wire format headers

Validation Logic

The FFCF mode validation is in _change_feed/change_feed_utils.py:

  • AllVersionsAndDeletes mode cannot be used with partition_key_range_id
  • AllVersionsAndDeletes mode requires start_time="Now" or continuation
  • is_start_from_beginning must be False with FFCF

When Was This Added?

Action Requested

  • SME signoff: Confirm FFCF APIs listed above are intentionally GA and no additional preview/beta gating is needed
  • Confirm whether typed response models (ChangeFeedItem, ChangeFeedMetadata, ChangeFeedOperationType) should be added for parity with .NET, or if raw dicts are the intended GA contract
  • Confirm whether open bugs #43018 (continuation token parsing) and #42799 (NonePartitionKeyValue) are blocking for formal GA declaration

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    ClientThis issue points to a problem in the data-plane of the library.Cosmos

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions