fix(migrations): Handle no params in time comparison migration (#32155)

This commit is contained in:
Antonio Rivero 2025-02-05 23:00:22 +01:00 committed by GitHub
parent ea5879bf2b
commit 6ed9dae2f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 0 deletions

View File

@ -63,6 +63,8 @@ time_map = {
def upgrade_comparison_params(slice_params: dict[str, Any]) -> dict[str, Any]: def upgrade_comparison_params(slice_params: dict[str, Any]) -> dict[str, Any]:
if not slice_params or not isinstance(slice_params, dict):
return {}
params = deepcopy(slice_params) params = deepcopy(slice_params)
# Update time_comparison to time_compare # Update time_comparison to time_compare
@ -103,6 +105,8 @@ def upgrade():
) )
): ):
try: try:
if not slc.params: # Noop if there's no params on the slice
continue
params = json.loads(slc.params) params = json.loads(slc.params)
updated_slice_params = upgrade_comparison_params(params) updated_slice_params = upgrade_comparison_params(params)
slc.params = json.dumps(updated_slice_params) slc.params = json.dumps(updated_slice_params)
@ -119,6 +123,8 @@ def upgrade():
def downgrade_comparison_params(slice_params: dict[str, Any]) -> dict[str, Any]: def downgrade_comparison_params(slice_params: dict[str, Any]) -> dict[str, Any]:
if not slice_params or not isinstance(slice_params, dict):
return {}
params = deepcopy(slice_params) params = deepcopy(slice_params)
params["enable_time_comparison"] = False params["enable_time_comparison"] = False
@ -199,6 +205,8 @@ def downgrade():
) )
): ):
try: try:
if not slc.params: # Noop if there's no params on the slice
continue
params = json.loads(slc.params) params = json.loads(slc.params)
updated_slice_params = downgrade_comparison_params(params) updated_slice_params = downgrade_comparison_params(params)
slc.params = json.dumps(updated_slice_params) slc.params = json.dumps(updated_slice_params)

View File

@ -229,3 +229,15 @@ def test_downgrade_chart_params_other_than_custom_false():
original_params = deepcopy(params_v2_other_than_custom_false) original_params = deepcopy(params_v2_other_than_custom_false)
downgraded_params = downgrade_comparison_params(original_params) downgraded_params = downgrade_comparison_params(original_params)
assert downgraded_params == params_v1_other_than_custom_false assert downgraded_params == params_v1_other_than_custom_false
def test_upgrade_chart_params_empty():
"""
Ensure that the migration does not fail when params is None or empty.
"""
assert upgrade_comparison_params(None) == {}
assert upgrade_comparison_params({}) == {}
assert upgrade_comparison_params("") == {}
assert downgrade_comparison_params(None) == {}
assert downgrade_comparison_params({}) == {}
assert downgrade_comparison_params("") == {}