1pub struct SalukiKey {
6 pub yaml_path: &'static str,
7 pub description: &'static str,
8 pub default: &'static str,
9 pub documentation: Option<&'static str>,
12 pub value_type: &'static str,
14 pub schema_default: Option<&'static str>,
15 pub env_vars: &'static [&'static str],
16 pub env_var_override: Option<&'static [&'static str]>,
17 pub additional_yaml_paths: &'static [&'static str],
18 pub used_by: &'static [&'static str],
19 pub test_json: Option<&'static str>,
20 pub pipeline_affinity: &'static str,
21 pub filename: &'static str,
22}
23
24pub static SALUKI_KEYS: &[SalukiKey] = &[
25 SalukiKey {
27 yaml_path: "data_plane.otlp.receiver_grpc_endpoint_temporary",
28 description: "ADP OTLP gRPC listen endpoint",
29 default: "localhost:6317",
30 documentation: Some(
31 "Temporary development key for setting ADP's OTLP listen endpoints independently from the Agent's.",
32 ),
33 value_type: "ValueType::String",
34 schema_default: Some("localhost:6317"),
35 env_vars: &[],
36 env_var_override: None,
37 additional_yaml_paths: &[],
38 used_by: &["TYPED_CONFIG_SYSTEM"],
39 test_json: None,
40 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Otlp])",
41 filename: "data_plane.rs",
42 },
43 SalukiKey {
44 yaml_path: "data_plane.otlp.receiver_http_endpoint_temporary",
45 description: "ADP OTLP HTTP listen endpoint",
46 default: "localhost:6318",
47 documentation: Some(
48 "Temporary development key for setting ADP's OTLP listen endpoints independently from the Agent's.",
49 ),
50 value_type: "ValueType::String",
51 schema_default: Some("localhost:6318"),
52 env_vars: &[],
53 env_var_override: None,
54 additional_yaml_paths: &[],
55 used_by: &["TYPED_CONFIG_SYSTEM"],
56 test_json: None,
57 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Otlp])",
58 filename: "data_plane.rs",
59 },
60 SalukiKey {
61 yaml_path: "data_plane.serializer_zstd_compressor_level",
62 description: "ADP zstd compression level",
63 default: "3",
64 documentation: Some(
65 "ADP-specific zstd compression level, taking precedence over the Core Agent's \
66 `serializer_zstd_compressor_level`. When this key is unset, ADP falls back to \
67 `serializer_zstd_compressor_level` if you set that key explicitly, and otherwise uses its \
68 own default of 3. Level 3 achieves ~6% smaller payloads (65.3 MB vs \
69 69.3 MB) without a net CPU increase, since ADP is more efficient than the Agent and can \
70 afford higher compression. Configure via `DD_DATA_PLANE_SERIALIZER_ZSTD_COMPRESSOR_LEVEL` \
71 or in ADP-specific configuration.",
72 ),
73 value_type: "ValueType::Integer",
74 schema_default: Some("3"),
75 env_vars: &[],
76 env_var_override: None,
77 additional_yaml_paths: &[],
78 used_by: &["TYPED_CONFIG_SYSTEM"],
79 test_json: None,
80 pipeline_affinity: "PipelineAffinity::CrossCutting",
81 filename: "data_plane.rs",
82 },
83 SalukiKey {
84 yaml_path: "data_plane.stop_timeout",
85 description: "ADP graceful shutdown timeout (s)",
86 default: "derived",
87 documentation: Some(
88 "### `data_plane.stop_timeout`
89
90\
91 ADP uses `data_plane.stop_timeout` as the topology-wide graceful shutdown timeout. \
92 If this key is unset, ADP defaults to `aggregator_stop_timeout + forwarder_stop_timeout`.",
93 ),
94 value_type: "ValueType::Integer",
95 schema_default: None,
96 env_vars: &[],
97 env_var_override: None,
98 additional_yaml_paths: &[],
99 used_by: &["GET_TYPED"],
100 test_json: None,
101 pipeline_affinity: "PipelineAffinity::CrossCutting",
102 filename: "data_plane.rs",
103 },
104 SalukiKey {
106 yaml_path: "dogstatsd_allow_context_heap_allocs",
107 description: "Allow heap allocations for contexts",
108 default: "",
109 documentation: None,
110 value_type: "ValueType::Bool",
111 schema_default: Some("true"),
112 env_vars: &[],
113 env_var_override: None,
114 additional_yaml_paths: &[],
115 used_by: &["DOGSTATSD_CONFIGURATION"],
116 test_json: None,
117 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
118 filename: "dogstatsd.rs",
119 },
120 SalukiKey {
121 yaml_path: "dogstatsd_autoscale_udp_listeners",
122 description: "Bind multiple UDP sockets via SO_REUSEPORT",
123 default: "",
124 documentation: None,
125 value_type: "ValueType::Bool",
126 schema_default: Some("false"),
127 env_vars: &[],
128 env_var_override: None,
129 additional_yaml_paths: &[],
130 used_by: &["DOGSTATSD_CONFIGURATION"],
131 test_json: None,
132 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
133 filename: "dogstatsd.rs",
134 },
135 SalukiKey {
136 yaml_path: "dogstatsd_buffer_count",
137 description: "Baseline receive buffers",
138 default: "128",
139 documentation: None,
140 value_type: "ValueType::Integer",
141 schema_default: Some("128"),
142 env_vars: &[],
143 env_var_override: None,
144 additional_yaml_paths: &[],
145 used_by: &["DOGSTATSD_CONFIGURATION"],
146 test_json: None,
147 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
148 filename: "dogstatsd.rs",
149 },
150 SalukiKey {
151 yaml_path: "dogstatsd_buffer_count_max",
152 description: "Maximum receive buffer count",
153 default: "32768",
154 documentation: None,
155 value_type: "ValueType::Integer",
156 schema_default: Some("32768"),
157 env_vars: &[],
158 env_var_override: None,
159 additional_yaml_paths: &[],
160 used_by: &["DOGSTATSD_CONFIGURATION"],
161 test_json: None,
162 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
163 filename: "dogstatsd.rs",
164 },
165 SalukiKey {
166 yaml_path: "dogstatsd_cached_contexts_limit",
167 description: "Max cached metric contexts",
168 default: "",
169 documentation: None,
170 value_type: "ValueType::Integer",
171 schema_default: None,
172 env_vars: &[],
173 env_var_override: None,
174 additional_yaml_paths: &[],
175 used_by: &["DOGSTATSD_CONFIGURATION"],
176 test_json: None,
177 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
178 filename: "dogstatsd.rs",
179 },
180 SalukiKey {
181 yaml_path: "dogstatsd_cached_tagsets_limit",
182 description: "Max cached tagsets",
183 default: "",
184 documentation: None,
185 value_type: "ValueType::Integer",
186 schema_default: None,
187 env_vars: &[],
188 env_var_override: None,
189 additional_yaml_paths: &[],
190 used_by: &["DOGSTATSD_CONFIGURATION"],
191 test_json: None,
192 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
193 filename: "dogstatsd.rs",
194 },
195 SalukiKey {
196 yaml_path: "dogstatsd_minimum_sample_rate",
197 description: "Floor for metric sample rates",
198 default: "",
199 documentation: Some(
200 "ADP enforces a minimum sample rate on incoming metrics to prevent memory exhaustion \
201 from extremely low sample rates on histograms and sketches. Sending metrics with a \
202 very high inverse sample rate (for example `@0.0000001`) can cause unbounded memory \
203 growth in a sketch; this setting prevents that. The default is conservative enough \
204 that normal clients are unaffected.",
205 ),
206 value_type: "ValueType::Float",
207 schema_default: None,
208 env_vars: &[],
209 env_var_override: None,
210 additional_yaml_paths: &[],
211 used_by: &["DOGSTATSD_CONFIGURATION"],
212 test_json: None,
213 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
214 filename: "dogstatsd.rs",
215 },
216 SalukiKey {
217 yaml_path: "metric_tag_value_allowlist",
218 description: "Per-metric tag value allow-list",
219 default: "[]",
220 documentation: Some(concat!(
221 "### `metric_tag_value_allowlist`\n\n",
222 "Use `metric_tag_value_allowlist` to bound metric cardinality by retaining selected values for a tag. ",
223 "Configure each list item with a `metric_prefix`, a `tag_name`, and the `values` to retain. The rule ",
224 "applies to every metric whose name starts with the prefix. Values not in the list lose the tag by default. To aggregate them under a sentinel instead, set ",
225 "`on_miss: replace` and configure `replacement`; the replacement defaults to `other`.\n\n",
226 "```yaml\n",
227 "metric_tag_value_allowlist:\n",
228 " - metric_prefix: requests.\n",
229 " tag_name: customer_id\n",
230 " values: [customer-1, customer-2]\n",
231 " on_miss: replace\n",
232 " replacement: other\n",
233 "```\n\n",
234 "This ADP-only key is independent from `metric_tag_filterlist`. Remote Config updates to ",
235 "`metric_tag_filterlist` therefore do not replace locally configured value allow-lists. Value allow-list ",
236 "changes require an ADP restart in this initial implementation. Rules apply to counters and sketch-backed ",
237 "metrics before aggregation, including instrumented and origin tags. ADP matches `metric_prefix` after ",
238 "DogStatsD mapper rewrites and `statsd_metric_namespace` prefixing, so configure the final metric name ",
239 "produced by those steps.\n\n",
240 "Whole-tag filtering runs first. If `metric_tag_filterlist` uses `action: include`, add the value-filtered ",
241 "tag key to its `tags` list or the whole-tag rule removes it before value filtering. Value rules do not ",
242 "operate on bare tags such as `customer_id`, because they have no value. An empty string in a key/value ",
243 "tag such as `customer_id:` is a value and is subject to the allow-list; include `\"\"` in `values` to ",
244 "retain it. An empty `values` list treats every key/value tag as a mismatch.\n\n",
245 "Distinct metric prefixes must not overlap, even when the rules target different tags. Multiple rules may ",
246 "use the same prefix when they target different tags. ADP rejects overlapping rules at startup so each ",
247 "metric matches at most one prefix. ADP also rejects empty metric prefixes and tag names, duplicate prefix ",
248 "and tag pairs, and tag names containing `:`. As with ",
249 "`metric_tag_filterlist`, ADP does not trim configured strings: prefixes, tag names, values, and replacements ",
250 "preserve whitespace and match exactly. Configure a replacement that cannot collide with a real tag value.",
251 )),
252 value_type: "ValueType::String",
253 schema_default: Some("[]"),
254 env_vars: &[],
255 env_var_override: Some(&[]),
256 additional_yaml_paths: &[],
257 used_by: &["TYPED_CONFIG_SYSTEM"],
258 test_json: Some(
259 r#"[{"metric_prefix":"smoke.","tag_name":"customer_id","values":["customer-1"],"on_miss":"replace","replacement":"other"}]"#,
260 ),
261 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
262 filename: "tag_filterlist.rs",
263 },
264 SalukiKey {
265 yaml_path: "dogstatsd_permissive_decoding",
266 description: "Relaxes decoder strictness",
267 default: "true",
268 documentation: Some(
269 "By default, ADP parses DogStatsD packets with the same leniency as the core agent, \
270 accepting packets that technically violate the spec. Setting this to `false` enables \
271 strict mode, which rejects non-conformant packets. Strict mode is not available in \
272 the core agent.",
273 ),
274 value_type: "ValueType::Bool",
275 schema_default: Some("true"),
276 env_vars: &[],
277 env_var_override: None,
278 additional_yaml_paths: &[],
279 used_by: &["DOGSTATSD_CONFIGURATION"],
280 test_json: None,
281 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
282 filename: "dogstatsd.rs",
283 },
284 SalukiKey {
285 yaml_path: "dogstatsd_string_interner_size_bytes",
286 description: "Explicit byte budget for context interner",
287 default: "",
288 documentation: Some(
289 "Accepts a bare integer number of bytes or a human-readable byte-size string such as `12MiB`. \
290 When unset, ADP derives the byte budget from `dogstatsd_string_interner_size`.",
291 ),
292 value_type: "ValueType::String",
293 schema_default: None,
294 env_vars: &[],
295 env_var_override: None,
296 additional_yaml_paths: &[],
297 used_by: &["DOGSTATSD_CONFIGURATION"],
298 test_json: Some(r#""12MiB""#),
299 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
300 filename: "dogstatsd.rs",
301 },
302 SalukiKey {
303 yaml_path: "dogstatsd_tcp_port",
304 description: "TCP listen port for DSD",
305 default: "",
306 documentation: None,
307 value_type: "ValueType::Integer",
308 schema_default: None,
309 env_vars: &[],
310 env_var_override: None,
311 additional_yaml_paths: &[],
312 used_by: &["DOGSTATSD_CONFIGURATION"],
313 test_json: None,
314 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
315 filename: "dogstatsd.rs",
316 },
317 SalukiKey {
319 yaml_path: "otlp_config.traces.enable_otlp_compute_top_level_by_span_kind",
320 description: "Enable OTLP top-level-by-span-kind",
321 default: "",
322 documentation: None,
323 value_type: "ValueType::Bool",
324 schema_default: Some("true"),
325 env_vars: &[],
326 env_var_override: None,
327 additional_yaml_paths: &[],
328 used_by: &["TYPED_CONFIG_SYSTEM"],
329 test_json: None,
330 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
331 filename: "otlp.rs",
332 },
333 SalukiKey {
334 yaml_path: "otlp_config.traces.ignore_missing_datadog_fields",
335 description: "Ignore missing Datadog fields in OTLP",
336 default: "",
337 documentation: None,
338 value_type: "ValueType::Bool",
339 schema_default: None,
340 env_vars: &[],
341 env_var_override: None,
342 additional_yaml_paths: &[],
343 used_by: &["TYPED_CONFIG_SYSTEM"],
344 test_json: None,
345 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
346 filename: "otlp.rs",
347 },
348 SalukiKey {
349 yaml_path: "otlp_config.traces.string_interner_size",
350 description: "OTLP trace string interner capacity",
351 default: "",
352 documentation: None,
353 value_type: "ValueType::Integer",
354 schema_default: None,
355 env_vars: &[],
356 env_var_override: None,
357 additional_yaml_paths: &[],
358 used_by: &["TYPED_CONFIG_SYSTEM"],
359 test_json: None,
360 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
361 filename: "otlp.rs",
362 },
363 SalukiKey {
364 yaml_path: "otlp_config.receiver.protocols.http.transport",
365 description: "OTLP HTTP receiver transport",
366 default: "",
367 documentation: None,
368 value_type: "ValueType::String",
369 schema_default: None,
370 env_vars: &[],
371 env_var_override: None,
372 additional_yaml_paths: &[],
373 used_by: &["TYPED_CONFIG_SYSTEM"],
374 test_json: None,
375 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Otlp])",
376 filename: "otlp.rs",
377 },
378 SalukiKey {
379 yaml_path: "otlp_allow_context_heap_allocs",
380 description: "Allow heap allocations for OTLP contexts",
381 default: "",
382 documentation: None,
383 value_type: "ValueType::Bool",
384 schema_default: Some("true"),
385 env_vars: &[],
386 env_var_override: None,
387 additional_yaml_paths: &[],
388 used_by: &["TYPED_CONFIG_SYSTEM"],
389 test_json: None,
390 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Otlp])",
391 filename: "otlp.rs",
392 },
393 SalukiKey {
394 yaml_path: "otlp_cached_contexts_limit",
395 description: "Max cached OTLP metric contexts",
396 default: "",
397 documentation: None,
398 value_type: "ValueType::Integer",
399 schema_default: None,
400 env_vars: &[],
401 env_var_override: None,
402 additional_yaml_paths: &[],
403 used_by: &["TYPED_CONFIG_SYSTEM"],
404 test_json: None,
405 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Otlp])",
406 filename: "otlp.rs",
407 },
408 SalukiKey {
409 yaml_path: "otlp_cached_tagsets_limit",
410 description: "Max cached OTLP tagsets",
411 default: "",
412 documentation: None,
413 value_type: "ValueType::Integer",
414 schema_default: None,
415 env_vars: &[],
416 env_var_override: None,
417 additional_yaml_paths: &[],
418 used_by: &["TYPED_CONFIG_SYSTEM"],
419 test_json: None,
420 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Otlp])",
421 filename: "otlp.rs",
422 },
423 SalukiKey {
424 yaml_path: "otlp_string_interner_size",
425 description: "OTLP context interner capacity",
426 default: "",
427 documentation: None,
428 value_type: "ValueType::Integer",
429 schema_default: None,
430 env_vars: &[],
431 env_var_override: None,
432 additional_yaml_paths: &[],
433 used_by: &["TYPED_CONFIG_SYSTEM"],
434 test_json: None,
435 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Otlp])",
436 filename: "otlp.rs",
437 },
438 SalukiKey {
440 yaml_path: "aggregate_window_duration_seconds",
441 description: "Aggregation window size",
442 default: "",
443 documentation: None,
444 value_type: "ValueType::Integer",
445 schema_default: None,
446 env_vars: &[],
447 env_var_override: None,
448 additional_yaml_paths: &[],
449 used_by: &["TYPED_CONFIG_SYSTEM"],
450 test_json: None,
451 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD, Pipeline::Checks])",
452 filename: "aggregate.rs",
453 },
454 SalukiKey {
455 yaml_path: "aggregate_flush_interval",
456 description: "Aggregator flush period",
457 default: "",
458 documentation: None,
459 value_type: "ValueType::String",
460 schema_default: None,
461 env_vars: &[],
462 env_var_override: None,
463 additional_yaml_paths: &[],
464 used_by: &["TYPED_CONFIG_SYSTEM"],
465 test_json: Some(r#"{"secs": 42, "nanos": 0}"#),
466 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD, Pipeline::Checks])",
467 filename: "aggregate.rs",
468 },
469 SalukiKey {
470 yaml_path: "aggregate_context_limit",
471 description: "Max contexts per aggregation window",
472 default: "",
473 documentation: None,
474 value_type: "ValueType::Integer",
475 schema_default: None,
476 env_vars: &[],
477 env_var_override: None,
478 additional_yaml_paths: &[],
479 used_by: &["TYPED_CONFIG_SYSTEM"],
480 test_json: None,
481 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD, Pipeline::Checks])",
482 filename: "aggregate.rs",
483 },
484 SalukiKey {
485 yaml_path: "aggregate_passthrough_idle_flush_timeout",
486 description: "Passthrough buffer flush delay",
487 default: "",
488 documentation: None,
489 value_type: "ValueType::String",
490 schema_default: None,
491 env_vars: &[],
492 env_var_override: None,
493 additional_yaml_paths: &[],
494 used_by: &["TYPED_CONFIG_SYSTEM"],
495 test_json: Some(r#"{"secs": 42, "nanos": 0}"#),
496 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD, Pipeline::Checks])",
497 filename: "aggregate.rs",
498 },
499 SalukiKey {
501 yaml_path: "apm_config.obfuscation.sql.dbms",
502 description: "SQL obfuscation DBMS dialect",
503 default: "",
504 documentation: None,
505 value_type: "ValueType::String",
506 schema_default: None,
507 env_vars: &[],
508 env_var_override: None,
509 additional_yaml_paths: &[],
510 used_by: &["TYPED_CONFIG_SYSTEM"],
511 test_json: None,
512 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
513 filename: "trace_obfuscation.rs",
514 },
515 SalukiKey {
516 yaml_path: "apm_config.obfuscation.sql.dollar_quoted_func",
517 description: "Preserve dollar-quoted SQL functions",
518 default: "",
519 documentation: None,
520 value_type: "ValueType::Bool",
521 schema_default: None,
522 env_vars: &[],
523 env_var_override: None,
524 additional_yaml_paths: &[],
525 used_by: &["TYPED_CONFIG_SYSTEM"],
526 test_json: None,
527 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
528 filename: "trace_obfuscation.rs",
529 },
530 SalukiKey {
531 yaml_path: "apm_config.obfuscation.sql.keep_sql_alias",
532 description: "Preserve SQL aliases in obfuscation",
533 default: "",
534 documentation: None,
535 value_type: "ValueType::Bool",
536 schema_default: None,
537 env_vars: &[],
538 env_var_override: None,
539 additional_yaml_paths: &[],
540 used_by: &["TYPED_CONFIG_SYSTEM"],
541 test_json: None,
542 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
543 filename: "trace_obfuscation.rs",
544 },
545 SalukiKey {
546 yaml_path: "apm_config.obfuscation.sql.replace_digits",
547 description: "Replace digits in SQL obfuscation",
548 default: "",
549 documentation: None,
550 value_type: "ValueType::Bool",
551 schema_default: None,
552 env_vars: &[],
553 env_var_override: None,
554 additional_yaml_paths: &[],
555 used_by: &["TYPED_CONFIG_SYSTEM"],
556 test_json: None,
557 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
558 filename: "trace_obfuscation.rs",
559 },
560 SalukiKey {
561 yaml_path: "apm_config.obfuscation.sql.table_names",
562 description: "Collect table names during obfuscation",
563 default: "",
564 documentation: None,
565 value_type: "ValueType::Bool",
566 schema_default: None,
567 env_vars: &[],
568 env_var_override: None,
569 additional_yaml_paths: &[],
570 used_by: &["TYPED_CONFIG_SYSTEM"],
571 test_json: None,
572 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Traces])",
573 filename: "trace_obfuscation.rs",
574 },
575 SalukiKey {
577 yaml_path: "flush_timeout_secs",
578 description: "Encoder flush timeout (secs)",
579 default: "",
580 documentation: None,
581 value_type: "ValueType::Integer",
582 schema_default: None,
583 env_vars: &[],
584 env_var_override: None,
585 additional_yaml_paths: &[],
586 used_by: &["TYPED_CONFIG_SYSTEM"],
587 test_json: None,
588 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::Traces, Pipeline::DogStatsD])",
589 filename: "encoders.rs",
590 },
591 SalukiKey {
592 yaml_path: "serializer_max_metrics_per_payload",
593 description: "Max metrics per payload",
594 default: "",
595 documentation: None,
596 value_type: "ValueType::Integer",
597 schema_default: None,
598 env_vars: &[],
599 env_var_override: None,
600 additional_yaml_paths: &[],
601 used_by: &["TYPED_CONFIG_SYSTEM"],
602 test_json: None,
603 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::Checks, Pipeline::DogStatsD])",
604 filename: "encoders.rs",
605 },
606 SalukiKey {
608 yaml_path: "dogstatsd_mapper_string_interner_size",
609 description: "Mapper string interner capacity",
610 default: "",
611 documentation: None,
612 value_type: "ValueType::Integer",
613 schema_default: None,
614 env_vars: &[],
615 env_var_override: None,
616 additional_yaml_paths: &[],
617 used_by: &["DOGSTATSD_MAPPER_CONFIGURATION"],
618 test_json: None,
619 pipeline_affinity: "PipelineAffinity::Pipelines(&[Pipeline::DogStatsD])",
620 filename: "dogstatsd_mapper.rs",
621 },
622 SalukiKey {
624 yaml_path: "memory_limit",
625 description: "Process memory limit",
626 default: "",
627 documentation: Some(
628 "### `memory_limit` / `memory_slop_factor`
629
630\
631 ADP uses an explicit process memory limit (`memory_limit`) rather than relying on \
632 Go's garbage collector. The `memory_slop_factor` reserves a fraction of the limit \
633 to account for allocations not tracked by ADP's internal accounting. When memory \
634 usage approaches `memory_limit`, ADP's global limiter begins exerting backpressure \
635 (see `enable_global_limiter`).",
636 ),
637 value_type: "ValueType::String",
638 schema_default: None,
639 env_vars: &[],
640 env_var_override: None,
641 additional_yaml_paths: &[],
642 used_by: &[],
643 test_json: None,
644 pipeline_affinity: "PipelineAffinity::CrossCutting",
645 filename: "accounting.rs",
646 },
647 SalukiKey {
648 yaml_path: "memory_slop_factor",
649 description: "Memory accounting slop fraction",
650 default: "0.25",
651 documentation: Some("See `memory_limit` above."),
652 value_type: "ValueType::Float",
653 schema_default: Some("0.25"),
654 env_vars: &[],
655 env_var_override: None,
656 additional_yaml_paths: &[],
657 used_by: &[],
658 test_json: None,
659 pipeline_affinity: "PipelineAffinity::CrossCutting",
660 filename: "accounting.rs",
661 },
662];