mz_adapter_types/
dyncfgs.rs1use std::time::Duration;
13
14use mz_dyncfg::{Config, ConfigSet};
15
16use crate::timestamp_selection::ConstraintBasedTimestampSelection;
17
18pub const ALLOW_USER_SESSIONS: Config<bool> = Config::new(
19 "allow_user_sessions",
20 true,
21 "Whether to allow user roles to create new sessions. When false, only system roles will be permitted to create new sessions.",
22);
23
24pub const ENABLE_0DT_DEPLOYMENT: Config<bool> = Config::new(
25 "enable_0dt_deployment",
26 true,
27 "Whether to enable zero-downtime deployments (experimental).",
28);
29
30pub const WITH_0DT_DEPLOYMENT_MAX_WAIT: Config<Duration> = Config::new(
32 "with_0dt_deployment_max_wait",
33 Duration::from_secs(60 * 60),
34 "How long to wait at most for clusters to be hydrated, when doing a zero-downtime deployment.",
35);
36
37pub const WITH_0DT_DEPLOYMENT_DDL_CHECK_INTERVAL: Config<Duration> = Config::new(
38 "with_0dt_deployment_ddl_check_interval",
39 Duration::from_secs(5 * 60),
40 "How often to check for DDL changes during zero-downtime deployment.",
41);
42
43pub const ENABLE_0DT_DEPLOYMENT_PANIC_AFTER_TIMEOUT: Config<bool> = Config::new(
44 "enable_0dt_deployment_panic_after_timeout",
45 false,
46 "Whether to panic if the maximum wait time is reached but preflight checks have not succeeded.",
47);
48
49pub const WITH_0DT_DEPLOYMENT_CAUGHT_UP_CHECK_INTERVAL: Config<Duration> = Config::new(
50 "0dt_deployment_hydration_check_interval",
52 Duration::from_secs(10),
53 "Interval at which to check whether clusters are caught up, when doing zero-downtime deployment.",
54);
55
56pub const ENABLE_0DT_CAUGHT_UP_CHECK: Config<bool> = Config::new(
57 "enable_0dt_caught_up_check",
58 true,
59 "Whether to determine rehydration using a more complicated method that compares collection write frontiers against an allowed lag behind wall-clock time.",
60);
61
62pub const WITH_0DT_CAUGHT_UP_CHECK_ALLOWED_LAG: Config<Duration> = Config::new(
63 "with_0dt_caught_up_check_allowed_lag",
64 Duration::from_secs(60),
65 "Maximum allowed lag when determining whether collections are caught up for 0dt deployments.",
66);
67
68pub const WITH_0DT_CAUGHT_UP_CHECK_CUTOFF: Config<Duration> = Config::new(
69 "with_0dt_caught_up_check_cutoff",
70 Duration::from_secs(10 * 60), "During a 0dt deployment, if a cluster has only 'problematic' (crash-looping) replicas _and_ any collection that is behind by more than this cutoff, the cluster will be ignored in caught-up checks.",
72);
73
74pub const ENABLE_0DT_CAUGHT_UP_REPLICA_STATUS_CHECK: Config<bool> = Config::new(
75 "enable_0dt_caught_up_replica_status_check",
76 true,
77 "Enable checking for crash/OOM-looping replicas during 0dt caught-up checks. Emergency break-glass flag to disable this feature if needed.",
78);
79
80pub const ENABLE_STATEMENT_LIFECYCLE_LOGGING: Config<bool> = Config::new(
82 "enable_statement_lifecycle_logging",
83 true,
84 "Enable logging of statement lifecycle events in mz_internal.mz_statement_lifecycle_history.",
85);
86
87pub const ENABLE_INTROSPECTION_SUBSCRIBES: Config<bool> = Config::new(
89 "enable_introspection_subscribes",
90 true,
91 "Enable installation of introspection subscribes.",
92);
93
94pub const PLAN_INSIGHTS_NOTICE_FAST_PATH_CLUSTERS_OPTIMIZE_DURATION: Config<Duration> = Config::new(
96 "plan_insights_notice_fast_path_clusters_optimize_duration",
97 Duration::from_millis(10),
103 "Enable plan insights fast path clusters calculation if the optimize step took less than this duration.",
104);
105
106pub const ENABLE_CONTINUAL_TASK_BUILTINS: Config<bool> = Config::new(
108 "enable_continual_task_builtins",
109 false,
110 "Create system builtin continual tasks on boot.",
111);
112
113pub const ENABLE_EXPRESSION_CACHE: Config<bool> = Config::new(
115 "enable_expression_cache",
116 true,
117 "Use a cache to store optimized expressions to help speed up start times.",
118);
119
120pub const ENABLE_MULTI_REPLICA_SOURCES: Config<bool> = Config::new(
122 "enable_multi_replica_sources",
123 false,
124 "Enable multi-replica sources.",
125);
126
127pub const ENABLE_PASSWORD_AUTH: Config<bool> = Config::new(
129 "enable_password_auth",
130 false,
131 "Enable password authentication.",
132);
133
134pub const CONSTRAINT_BASED_TIMESTAMP_SELECTION: Config<&'static str> = Config::new(
135 "constraint_based_timestamp_selection",
136 ConstraintBasedTimestampSelection::const_default().as_str(),
137 "Whether to use the constraint-based timestamp selection, one of: enabled, disabled, verify",
138);
139
140pub const PERSIST_FAST_PATH_ORDER: Config<bool> = Config::new(
141 "persist_fast_path_order",
142 false,
143 "If set, send queries with a compatible literal constraint or ordering clause down the Persist fast path.",
144);
145
146pub const FORCE_SWAP_FOR_CC_SIZES: Config<bool> = Config::new(
150 "force_swap_for_cc_sizes",
151 false,
152 "Whether to enable swap for all cc replica sizes.",
153);
154
155pub fn all_dyncfgs(configs: ConfigSet) -> ConfigSet {
157 configs
158 .add(&ALLOW_USER_SESSIONS)
159 .add(&ENABLE_0DT_DEPLOYMENT)
160 .add(&WITH_0DT_DEPLOYMENT_MAX_WAIT)
161 .add(&WITH_0DT_DEPLOYMENT_DDL_CHECK_INTERVAL)
162 .add(&ENABLE_0DT_DEPLOYMENT_PANIC_AFTER_TIMEOUT)
163 .add(&WITH_0DT_DEPLOYMENT_CAUGHT_UP_CHECK_INTERVAL)
164 .add(&ENABLE_0DT_CAUGHT_UP_CHECK)
165 .add(&WITH_0DT_CAUGHT_UP_CHECK_ALLOWED_LAG)
166 .add(&WITH_0DT_CAUGHT_UP_CHECK_CUTOFF)
167 .add(&ENABLE_0DT_CAUGHT_UP_REPLICA_STATUS_CHECK)
168 .add(&ENABLE_STATEMENT_LIFECYCLE_LOGGING)
169 .add(&ENABLE_INTROSPECTION_SUBSCRIBES)
170 .add(&PLAN_INSIGHTS_NOTICE_FAST_PATH_CLUSTERS_OPTIMIZE_DURATION)
171 .add(&ENABLE_CONTINUAL_TASK_BUILTINS)
172 .add(&ENABLE_EXPRESSION_CACHE)
173 .add(&ENABLE_MULTI_REPLICA_SOURCES)
174 .add(&ENABLE_PASSWORD_AUTH)
175 .add(&CONSTRAINT_BASED_TIMESTAMP_SELECTION)
176 .add(&PERSIST_FAST_PATH_ORDER)
177 .add(&FORCE_SWAP_FOR_CC_SIZES)
178}