Implement Experiment Metadata Tracking for Realtime Config Updates#15976
Implement Experiment Metadata Tracking for Realtime Config Updates#15976tusharkhandelwal8 wants to merge 11 commits intomainfrom
Conversation
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. |
|
Please address the CI failures |
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request implements logic to trigger Remote Config Realtime updates when experiment or variant assignments change. It introduces methods to load experiment payloads from the database, map them to configuration keys, and identify keys affected by changes in experiment metadata. Unit tests were added to verify these changes. Feedback suggests adding type safety checks when parsing experiment JSON to prevent crashes, using unionSet: for more concise set merging, and correcting an encoding constant in the test suite.
This PR introduces experiment metadata tracking to the Remote Config Realtime Service. Previously, onConfigUpdate was only triggered if a parameter's value changed. With this change, the SDK now detects changes in A/B test assignments (experiments/variants) for specific parameters, even if their values remain identical.
Key Changes:
Validation / Testing Scenarios:
Testing on Sample iOS App: Link