Skip to content

ChangeFeed: Adds GA promotion for AllVersionsAndDeletes (Full Fidelity Change Feed) APIs #5814

@ananth7592

Description

@ananth7592

Summary

The Full Fidelity Change Feed (AllVersionsAndDeletes) feature has been in Preview since SDK version 3.18.0-preview (PR #2122). After multiple iterations of hardening, contract refinements, and CFP integration, the feature is ready for GA promotion.

This issue tracks removing the #if PREVIEW guards from 7 types/members to make them unconditionally public, along with updating the corresponding API contract files.

APIs to Promote

# Type / Member File Line Description
1 ChangeFeedMode.AllVersionsAndDeletes src/ChangeFeed/ChangeFeedMode.cs L56 Core entry point — the mode selector for FFCF
2 ChangeFeedItem<T> src/Resource/FullFidelity/ChangeFeedItem.cs L52 Wrapper for AVAD change items (current + previous + metadata)
3 ChangeFeedMetadata src/Resource/FullFidelity/ChangeFeedMetadata.cs L18 Metadata: operation type, LSN, conflict resolution timestamp, previous LSN
4 ChangeFeedOperationType src/Resource/FullFidelity/ChangeFeedOperationType.cs L12 Enum: Create, Replace, Delete
5 ChangeFeedPolicy src/Resource/Settings/ChangeFeedPolicy.cs L34 Retention policy configuration for the AVAD log
6 ChangeFeedPolicyDefinition src/Fluent/Settings/ChangeFeedPolicyDefinition.cs L12 Fluent builder for setting ChangeFeedPolicy on a container
7 ContainerProperties.ChangeFeedPolicy src/Resource/Settings/ContainerProperties.cs L382 Exposes ChangeFeedPolicy on ContainerProperties

Required Changes

For each file listed above:

  1. Remove the #if PREVIEW / public / #else / internal / #endif block and replace with unconditional public.
  2. Regenerate the GA API contract file (GenAPI) to include the newly public surface.
  3. Verify that preview contract files are updated accordingly (remove the entries that moved to GA).

Notes

  • Container.GetChangeFeedProcessorBuilderWithAllVersionsAndDeletes<T>() is already unconditionally public (no #if PREVIEW guard) — no changes needed there.
  • The pull-model GetChangeFeedIterator<T>() accepting ChangeFeedMode is also already public, but passing AllVersionsAndDeletes is effectively blocked without Preview since the static property itself is internal without the flag.

Related PRs / Issues

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions