@@ -20,17 +20,39 @@ export function resolveEventRepositoryForStore(store: string | undefined): IEven
2020export 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
3658export async function recordRunDebugLog (
0 commit comments