Skip to content

Commit 5cfe68e

Browse files
committed
Add percent-based rollout of clickhouse logs
1 parent 0f5503b commit 5cfe68e

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

apps/webapp/app/env.server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,6 +1120,7 @@ const EnvironmentSchema = z
11201120
EVENTS_CLICKHOUSE_COMPRESSION_REQUEST: z.string().default("1"),
11211121
EVENTS_CLICKHOUSE_BATCH_SIZE: z.coerce.number().int().default(1000),
11221122
EVENTS_CLICKHOUSE_FLUSH_INTERVAL_MS: z.coerce.number().int().default(1000),
1123+
EVENT_REPOSITORY_CLICKHOUSE_ROLLOUT_PERCENT: z.coerce.number().optional(),
11231124
EVENT_REPOSITORY_DEFAULT_STORE: z.enum(["postgres", "clickhouse"]).default("postgres"),
11241125
EVENTS_CLICKHOUSE_MAX_TRACE_SUMMARY_VIEW_COUNT: z.coerce.number().int().default(250_000),
11251126

apps/webapp/app/v3/eventRepository/index.server.ts

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,39 @@ export function resolveEventRepositoryForStore(store: string | undefined): IEven
2020
export async function getEventRepository(
2121
featureFlags: Record<string, unknown> | undefined
2222
): Promise<{ repository: IEventRepository; store: string }> {
23-
const taskEventRepository = await flags({
23+
const taskEventRepository = await resolveTaskEventRepositoryFlag(featureFlags);
24+
25+
if (taskEventRepository === "clickhouse") {
26+
return { repository: clickhouseEventRepository, store: "clickhouse" };
27+
}
28+
29+
return { repository: eventRepository, store: getTaskEventStore() };
30+
}
31+
32+
async function resolveTaskEventRepositoryFlag(
33+
featureFlags: Record<string, unknown> | undefined
34+
): Promise<"clickhouse" | "postgres"> {
35+
const flag = await flags({
2436
key: FEATURE_FLAG.taskEventRepository,
2537
defaultValue: env.EVENT_REPOSITORY_DEFAULT_STORE,
2638
overrides: featureFlags,
2739
});
2840

29-
if (taskEventRepository === "clickhouse") {
30-
return { repository: clickhouseEventRepository, store: "clickhouse" };
41+
if (flag === "clickhouse") {
42+
return "clickhouse";
3143
}
3244

33-
return { repository: eventRepository, store: getTaskEventStore() };
45+
if (env.EVENT_REPOSITORY_CLICKHOUSE_ROLLOUT_PERCENT) {
46+
const rolloutPercent = env.EVENT_REPOSITORY_CLICKHOUSE_ROLLOUT_PERCENT;
47+
48+
const randomNumber = Math.random();
49+
50+
if (randomNumber < rolloutPercent) {
51+
return "clickhouse";
52+
}
53+
}
54+
55+
return flag;
3456
}
3557

3658
export async function recordRunDebugLog(

0 commit comments

Comments
 (0)