Fix Cosmos indexing paths for latest emulator#10084
Merged
ReubenBond merged 1 commit intoMay 12, 2026
Merged
Conversation
Use scalar and array terminal index paths in Cosmos indexing policies so newer emulator builds accept provider container creation. Keep grain state indexing opt-in by switching the persistence provider to an excluded-root policy with explicit metadata and configured state field includes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
979cea6 to
2a02bf5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Newer Linux Cosmos emulator builds reject non-root wildcard paths in indexing policy exclusions such as
/StartAt/*,/Address/*, and/"State"/*. That prevents new Cosmos containers from being created in the reminders, clustering, and persistence providers.Solution
Update known scalar fields to use terminal scalar paths (
/?), update scalar array exclusions to use/[]/?, and change the grain storage container policy to exclude root while including metadata and configuredStateFieldsToIndexpaths. This follows the Cosmos indexing policy docs for scalar and array paths while preserving the existing opt-in state indexing behavior.Docs: https://learn.microsoft.com/en-us/azure/cosmos-db/index-policy#including-and-excluding-property-paths
Reviewer focus
Please look closely at
CosmosGrainStorage's excluded-root policy, since it replaces the prior recursiveStateexclusion without broadening defaultStateindexing.Microsoft Reviewers: Open in CodeFlow