From 1fb753558f0d456251ab7f0f97ec31f65e6e226c Mon Sep 17 00:00:00 2001 From: Viktor Poluksht Date: Tue, 21 Jul 2026 10:08:03 +0200 Subject: [PATCH 1/3] fix: isolate ClickHouse publication --- .infra/clickhouse-sync.yml | 2 + ...84621038147-CreateClickHousePublication.ts | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/migration/1784621038147-CreateClickHousePublication.ts diff --git a/.infra/clickhouse-sync.yml b/.infra/clickhouse-sync.yml index 06371869fd..214125c381 100644 --- a/.infra/clickhouse-sync.yml +++ b/.infra/clickhouse-sync.yml @@ -51,6 +51,8 @@ database.allowPublicKeyRetrieval: "true" snapshot.mode: "no_data" slot.name: "clickhouse_sync" +publication.name: "clickhouse_sync" +publication.autocreate.mode: "disabled" # offset.flush.interval.ms: The number of milliseconds to wait before flushing recent offsets to Kafka. This ensures that offsets are committed within the specified time interval. offset.flush.timeout.ms: 10000 diff --git a/src/migration/1784621038147-CreateClickHousePublication.ts b/src/migration/1784621038147-CreateClickHousePublication.ts new file mode 100644 index 0000000000..29ea23021f --- /dev/null +++ b/src/migration/1784621038147-CreateClickHousePublication.ts @@ -0,0 +1,38 @@ +import type { MigrationInterface, QueryRunner } from 'typeorm'; + +export class CreateClickHousePublication1784621038147 implements MigrationInterface { + name = 'CreateClickHousePublication1784621038147'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(/* sql */ ` + DROP PUBLICATION IF EXISTS "clickhouse_sync" + `); + + await queryRunner.query(/* sql */ ` + CREATE PUBLICATION "clickhouse_sync" + FOR TABLE + "public"."post", + "public"."source", + "public"."keyword", + "public"."niche", + "public"."keyword_niche", + "public"."user", + "public"."content_preference", + "public"."post_keyword", + "public"."post_niche", + "public"."comment", + "public"."campaign", + "public"."post_relation", + "public"."user_personalized_digest", + "public"."user_company", + "public"."highlights_canonical" + WITH (publish_generated_columns = stored) + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(/* sql */ ` + DROP PUBLICATION IF EXISTS "clickhouse_sync" + `); + } +} From 2423158e789cc3db239c8e2d0ea470a56ec31565 Mon Sep 17 00:00:00 2001 From: Viktor Poluksht Date: Tue, 21 Jul 2026 10:40:34 +0200 Subject: [PATCH 2/3] refactor: simplify ClickHouse publication --- ...1784621038147-CreateClickHousePublication.ts | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/migration/1784621038147-CreateClickHousePublication.ts b/src/migration/1784621038147-CreateClickHousePublication.ts index 29ea23021f..9d8c667f58 100644 --- a/src/migration/1784621038147-CreateClickHousePublication.ts +++ b/src/migration/1784621038147-CreateClickHousePublication.ts @@ -10,22 +10,7 @@ export class CreateClickHousePublication1784621038147 implements MigrationInterf await queryRunner.query(/* sql */ ` CREATE PUBLICATION "clickhouse_sync" - FOR TABLE - "public"."post", - "public"."source", - "public"."keyword", - "public"."niche", - "public"."keyword_niche", - "public"."user", - "public"."content_preference", - "public"."post_keyword", - "public"."post_niche", - "public"."comment", - "public"."campaign", - "public"."post_relation", - "public"."user_personalized_digest", - "public"."user_company", - "public"."highlights_canonical" + FOR ALL TABLES WITH (publish_generated_columns = stored) `); } From fc4d8f3ce7f2336b26045cd41efde81b2cc9e1bb Mon Sep 17 00:00:00 2001 From: Viktor Poluksht Date: Tue, 21 Jul 2026 11:59:48 +0200 Subject: [PATCH 3/3] ci: update common orb --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 377ab515f1..96be8d86db 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,6 +1,6 @@ version: 2.1 orbs: - common: dailydotdev/common@0.0.19 + common: dailydotdev/common@0.0.20 jobs: build-app: