From 53539c560a9c8fb914f30bc1c0a13b7385b08214 Mon Sep 17 00:00:00 2001 From: elramen <158566966+elramen@users.noreply.github.com> Date: Tue, 20 Oct 2026 23:40:19 +0200 Subject: [PATCH 1/3] fix: Use zstd for bool and int attributes --- .../0073_items_bool_int_codecs.py | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py diff --git a/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py b/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py new file mode 100644 index 0000000000..5ca4895675 --- /dev/null +++ b/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py @@ -0,0 +1,63 @@ +"""Add ZSTD(1) to the attributes_bool and attributes_int map columns. + +These are the only two attribute map families without an explicit codec: 0024 +gave attributes_string_* and attributes_float_* ZSTD(1) (copied from +eap_spans), but bool and int were new column kinds with no precedent and fell +back to the LZ4 default. +""" + +from snuba.clickhouse.columns import Bool, Column, Int, Map, String +from snuba.clusters.storage_sets import StorageSetKey +from snuba.migrations import migration, operations +from snuba.migrations.columns import MigrationModifiers as Modifiers +from snuba.migrations.operations import OperationTarget + +storage_set = StorageSetKey.EVENTS_ANALYTICS_PLATFORM + +local_tables = [ + "eap_items_1_local", + "eap_items_1_downsample_8_local", + "eap_items_1_downsample_64_local", + "eap_items_1_downsample_512_local", + "eap_items_2_local", + "eap_items_2_downsample_8_local", + "eap_items_2_downsample_64_local", + "eap_items_2_downsample_512_local", + +] + + +def _columns(codecs: list[str] | None) -> list[Column[Modifiers]]: + modifiers = Modifiers(codecs=codecs) if codecs else None + return [ + Column("attributes_bool", Map(String(), Bool(), modifiers=modifiers)), + Column("attributes_int", Map(String(), Int(64), modifiers=modifiers)), + ] + + +class Migration(migration.ClickhouseNodeMigration): + blocking = False + + def forwards_ops(self) -> list[operations.SqlOperation]: + return [ + operations.ModifyColumn( + storage_set=storage_set, + table_name=table, + column=column, + target=OperationTarget.LOCAL, + ) + for table in local_tables + for column in _columns(["ZSTD(1)"]) + ] + + def backwards_ops(self) -> list[operations.SqlOperation]: + return [ + operations.ModifyColumn( + storage_set=storage_set, + table_name=table, + column=column, + target=OperationTarget.LOCAL, + ) + for table in local_tables + for column in _columns(None) + ] From 149a4a9ddc2461427e4e37fa72f6ee106dac1cda Mon Sep 17 00:00:00 2001 From: elramen <158566966+elramen@users.noreply.github.com> Date: Thu, 22 Oct 2026 17:32:34 +0200 Subject: [PATCH 2/3] fix rollback --- .../events_analytics_platform/0073_items_bool_int_codecs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py b/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py index 5ca4895675..843ff1c912 100644 --- a/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py +++ b/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py @@ -59,5 +59,6 @@ def backwards_ops(self) -> list[operations.SqlOperation]: target=OperationTarget.LOCAL, ) for table in local_tables - for column in _columns(None) + # REMOVE CODEC not supported, so rollback declares LZ4 explicitly + for column in _columns(["LZ4"]) ] From 6d5c5c3186dcdc8840af51dda30e15d95ffdc849 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 15:33:33 +0000 Subject: [PATCH 3/3] [getsentry/action-github-commit] Auto commit --- .../events_analytics_platform/0073_items_bool_int_codecs.py | 1 - 1 file changed, 1 deletion(-) diff --git a/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py b/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py index 843ff1c912..1304c3ae8f 100644 --- a/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py +++ b/snuba/snuba_migrations/events_analytics_platform/0073_items_bool_int_codecs.py @@ -23,7 +23,6 @@ "eap_items_2_downsample_8_local", "eap_items_2_downsample_64_local", "eap_items_2_downsample_512_local", - ]