Added migration for legacy variable config.#939
Draft
rasmi wants to merge 2 commits intoPAIR-code:mainfrom
Draft
Added migration for legacy variable config.#939rasmi wants to merge 2 commits intoPAIR-code:mainfrom
rasmi wants to merge 2 commits intoPAIR-code:mainfrom
Conversation
08e462b to
1ba7ee0
Compare
jimbojw
approved these changes
Jan 9, 2026
|
|
||
| for (const config of configs) { | ||
| const result = migrateVariableConfig(config); | ||
| if (result !== null) { |
Collaborator
There was a problem hiding this comment.
I can see that this is where the null comes in handy. It's strange to me to see error cases swallowed like this. But maybe it's OK. I'm new here. 😅
|
|
||
| function migrateVariableConfig( | ||
| config: LegacyOrNewConfig, | ||
| ): VariableConfig | null { |
Collaborator
There was a problem hiding this comment.
Nit: It's strange to me to see a null in general and especially as a response indicating an error. What's the current practice in this code base?
I'm persuadable that this is the way to do it. Just noting that I would generally expect something like a CustomError to be thrown.
Collaborator
Author
|
FYI! I don't think this needs to be merged necessarily (I think you can just pull the script in and run the migration as a one-off without necessarily deploying the backport code) |
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The Variables refactor (#859) changed the structure of
VariableConfigobjects but didn't include migration for existing experiments, causing them to crash when loading (see #909).Old format (pre-v19):
New format (v19+):
Changes
utils/src/variables.legacy.utils.ts- Migration utilities withmigrateVariableConfig()andmigrateVariableConfigs()utils/src/variables.utils.ts-extractVariablesFromVariableConfigs()now auto-migrates old configs as a runtime fallbackfunctions/src/migrations/migrate-variable-configs.ts- One-time Firestore migration scriptRunning the Migration
Option 1: One-time database migration
For production, set
GOOGLE_APPLICATION_CREDENTIALSor usegcloud auth application-default login.Option 2: Runtime migration (automatic fallback)
Old configs are automatically migrated at runtime when
extractVariablesFromVariableConfigs()is called. This ensures experiments load even if the database migration hasn't been run, but the one-time script may be preferable for a full fix.