Skip to content

Commit 2e1f747

Browse files
author
Brian Donovan
committed
fix(chart): add defensive JSON parsing to migration
Guard against malformed or non-dict params in word_cloud slices during upgrade/downgrade. Skips invalid rows instead of aborting the entire migration.
1 parent f8ed170 commit 2e1f747

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

superset/migrations/versions/2026-04-13_19-28_fd0c8583b46d_add_sort_by_series_to_word_cloud_charts.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,13 @@ def upgrade():
6262
for slc in paginated_update(
6363
session.query(Slice).filter(Slice.viz_type == "word_cloud")
6464
):
65-
params = json.loads(slc.params or "{}")
66-
slc.params = json.dumps(upgrade_params(params))
65+
try:
66+
params = json.loads(slc.params or "{}")
67+
if not isinstance(params, dict):
68+
continue
69+
slc.params = json.dumps(upgrade_params(params))
70+
except (json.JSONDecodeError, TypeError):
71+
continue
6772
session.close()
6873

6974

@@ -74,6 +79,11 @@ def downgrade():
7479
for slc in paginated_update(
7580
session.query(Slice).filter(Slice.viz_type == "word_cloud")
7681
):
77-
params = json.loads(slc.params or "{}")
78-
slc.params = json.dumps(downgrade_params(params))
82+
try:
83+
params = json.loads(slc.params or "{}")
84+
if not isinstance(params, dict):
85+
continue
86+
slc.params = json.dumps(downgrade_params(params))
87+
except (json.JSONDecodeError, TypeError):
88+
continue
7989
session.close()

0 commit comments

Comments
 (0)