Skip to content

Commit 54b479f

Browse files
refactor: unify prometheus_scrape_interval and data_ingestion_interval
1 parent 8e4b97e commit 54b479f

30 files changed

Lines changed: 102 additions & 143 deletions

File tree

‎asap-common/dependencies/py/promql_utilities/promql_utilities/query_logics/parsing.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ def get_statistics_to_compute(
3535
# template_config.tumblingWindowSize = self.t_repeat
3636
elif query_pattern_type == QueryPatternType.ONLY_SPATIAL:
3737
statistic_to_compute = query_pattern_match.tokens["aggregation"]["op"]
38-
# template_config.tumblingWindowSize = self.prometheus_scrape_interval
3938
else:
4039
raise ValueError("Invalid query pattern type")
4140

@@ -55,7 +54,7 @@ def get_spatial_aggregation_output_labels(
5554
# Fixing issue https://github.com/ProjectASAP/asap-internal/issues/24
5655
if aggregation_modifier is None:
5756
return KeyByLabelNames([])
58-
57+
5958
if aggregation_modifier.type == aggregation_modifier.type.By:
6059
aggregation_modifier_labels = KeyByLabelNames(aggregation_modifier.labels)
6160
elif aggregation_modifier.type == aggregation_modifier.type.Without:

‎asap-planner-rs/docker-compose.yml.j2‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@ services:
88
command: [
99
"--input_config", "/app/input/config.yaml",
1010
"--output_dir", "/app/output",
11-
"--prometheus_scrape_interval_ms", "{{ prometheus_scrape_interval_ms }}",
11+
"--data-ingestion-interval-ms", "{{ data_ingestion_interval_ms }}",
1212
"--streaming_engine", "{{ streaming_engine }}",
1313
"--prometheus-url", "{{ prometheus_url }}",
1414
"--query-language", "{{ query_language }}"{% if punting %},
15-
"--enable-punting"{% endif %}{% if data_ingestion_interval_ms is not none %},
16-
"--data-ingestion-interval-ms", "{{ data_ingestion_interval_ms }}"{% endif %}
15+
"--enable-punting"{% endif %}
1716
]
1817
network_mode: "host"
1918
restart: no

‎asap-planner-rs/src/bin/optimizer_cli.rs‎

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ struct Args {
2020
#[arg(long = "input_config")]
2121
input_config: PathBuf,
2222

23-
#[arg(long = "prometheus_scrape_interval_ms")]
24-
prometheus_scrape_interval_ms: u64,
23+
#[arg(long = "data-ingestion-interval-ms")]
24+
data_ingestion_interval_ms: u64,
2525

2626
/// Placeholder arrival rate (items/sec) applied uniformly to every candidate's
2727
/// IngestCost. Real per-config rates aren't wired up yet — see the open TODOs
@@ -56,12 +56,8 @@ fn main() -> anyhow::Result<()> {
5656
let config: ControllerConfig = serde_yaml::from_str(&yaml_str)?;
5757
let schema = config.schema_from_hints();
5858

59-
let (streaming, inference) = run_greedy_pipeline(
60-
&config,
61-
&schema,
62-
args.prometheus_scrape_interval_ms,
63-
args.rho,
64-
);
59+
let (streaming, inference) =
60+
run_greedy_pipeline(&config, &schema, args.data_ingestion_interval_ms, args.rho);
6561

6662
let deployed = streaming.get_all_aggregation_configs();
6763
println!("=== Deployed streaming configs: {} ===", deployed.len());

‎asap-planner-rs/src/lib.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub enum StreamingEngine {
3535

3636
#[derive(Debug, Clone)]
3737
pub struct RuntimeOptions {
38-
pub prometheus_scrape_interval_ms: u64,
38+
pub data_ingestion_interval_ms: u64,
3939
pub streaming_engine: StreamingEngine,
4040
pub enable_punting: bool,
4141
pub range_duration_ms: u64,

‎asap-planner-rs/src/main.rs‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ struct Args {
2020
#[arg(long = "output_dir")]
2121
output_dir: PathBuf,
2222

23-
#[arg(long = "prometheus_scrape_interval_ms", required = false)]
24-
prometheus_scrape_interval_ms: Option<u64>,
25-
2623
/// Base URL of the Prometheus instance used to auto-infer metric label sets.
2724
/// Optional: when provided, the planner queries Prometheus for label discovery.
2825
/// When absent, labels are taken from the `metrics` hint in the config file.
@@ -86,11 +83,11 @@ fn main() -> anyhow::Result<()> {
8683

8784
match args.query_language {
8885
QueryLanguage::promql => {
89-
let scrape_interval_ms = args.prometheus_scrape_interval_ms.ok_or_else(|| {
90-
anyhow::anyhow!("--prometheus_scrape_interval_ms is required for PromQL mode")
86+
let scrape_interval_ms = args.data_ingestion_interval_ms.ok_or_else(|| {
87+
anyhow::anyhow!("--data-ingestion-interval-ms is required for PromQL mode")
9188
})?;
9289
let opts = RuntimeOptions {
93-
prometheus_scrape_interval_ms: scrape_interval_ms,
90+
data_ingestion_interval_ms: scrape_interval_ms,
9491
streaming_engine: engine,
9592
enable_punting: args.enable_punting,
9693
range_duration_ms: args.range_duration_ms,

‎asap-planner-rs/src/planner/promql.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ pub(crate) fn parse_binary_arms(query: &str) -> Option<(BinaryArm, BinaryArm)> {
7272
pub struct SingleQueryProcessor {
7373
query: String,
7474
t_repeat_ms: u64,
75-
prometheus_scrape_interval_ms: u64,
75+
data_ingestion_interval_ms: u64,
7676
metric_schema: PromQLSchema,
7777
#[allow(dead_code)]
7878
streaming_engine: StreamingEngine,
@@ -87,7 +87,7 @@ impl SingleQueryProcessor {
8787
pub fn new(
8888
query: String,
8989
t_repeat_ms: u64,
90-
prometheus_scrape_interval_ms: u64,
90+
data_ingestion_interval_ms: u64,
9191
metric_schema: PromQLSchema,
9292
streaming_engine: StreamingEngine,
9393
sketch_parameters: Option<SketchParameterOverrides>,
@@ -98,7 +98,7 @@ impl SingleQueryProcessor {
9898
Self {
9999
query,
100100
t_repeat_ms,
101-
prometheus_scrape_interval_ms,
101+
data_ingestion_interval_ms,
102102
metric_schema,
103103
streaming_engine,
104104
sketch_parameters,
@@ -159,7 +159,7 @@ impl SingleQueryProcessor {
159159
SingleQueryProcessor::new(
160160
arm_query,
161161
self.t_repeat_ms,
162-
self.prometheus_scrape_interval_ms,
162+
self.data_ingestion_interval_ms,
163163
self.metric_schema.clone(),
164164
self.streaming_engine,
165165
self.sketch_parameters.clone(),
@@ -199,7 +199,7 @@ impl SingleQueryProcessor {
199199
| PromQLFunction::QuantileOverTime)
200200
) {
201201
let num_data_points =
202-
self.t_repeat_ms as f64 / self.prometheus_scrape_interval_ms as f64;
202+
self.t_repeat_ms as f64 / self.data_ingestion_interval_ms as f64;
203203
if num_data_points < 60.0 {
204204
return false;
205205
}
@@ -248,7 +248,7 @@ impl SingleQueryProcessor {
248248
set_window_parameters(
249249
pattern_type,
250250
self.t_repeat_ms,
251-
self.prometheus_scrape_interval_ms,
251+
self.data_ingestion_interval_ms,
252252
"any", // aggregation_type doesn't matter (sliding always false)
253253
self.step_ms,
254254
&mut window_cfg,

‎asap-planner-rs/src/planner/window.rs‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub fn should_use_sliding_window(
2020
pub fn set_window_parameters(
2121
query_pattern_type: QueryPatternType,
2222
t_repeat_ms: u64,
23-
prometheus_scrape_interval_ms: u64,
23+
data_ingestion_interval_ms: u64,
2424
aggregation_type: &str,
2525
step_ms: u64,
2626
config: &mut IntermediateWindowConfig,
@@ -31,15 +31,15 @@ pub fn set_window_parameters(
3131
set_tumbling_window_parameters(
3232
query_pattern_type,
3333
effective_repeat,
34-
prometheus_scrape_interval_ms,
34+
data_ingestion_interval_ms,
3535
config,
3636
);
3737
}
3838

3939
fn set_tumbling_window_parameters(
4040
query_pattern_type: QueryPatternType,
4141
effective_repeat: u64,
42-
prometheus_scrape_interval_ms: u64,
42+
data_ingestion_interval_ms: u64,
4343
config: &mut IntermediateWindowConfig,
4444
) {
4545
match query_pattern_type {
@@ -49,8 +49,8 @@ fn set_tumbling_window_parameters(
4949
config.window_type = WindowType::Tumbling;
5050
}
5151
QueryPatternType::OnlySpatial => {
52-
config.window_size_ms = prometheus_scrape_interval_ms;
53-
config.slide_interval_ms = prometheus_scrape_interval_ms;
52+
config.window_size_ms = data_ingestion_interval_ms;
53+
config.slide_interval_ms = data_ingestion_interval_ms;
5454
config.window_type = WindowType::Tumbling;
5555
}
5656
}

‎asap-planner-rs/src/promql/controller.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ impl Controller {
114114
) -> Result<Self, ControllerError> {
115115
let entries = query_log::parse_log_file(log_path)?;
116116
let (instants, ranges) =
117-
query_log::infer_queries(&entries, opts.prometheus_scrape_interval_ms);
117+
query_log::infer_queries(&entries, opts.data_ingestion_interval_ms);
118118
let config = query_log::to_controller_config(instants, ranges);
119119
let all_queries: Vec<String> = config
120120
.query_groups
@@ -139,7 +139,7 @@ impl Controller {
139139
) -> Result<Self, ControllerError> {
140140
let entries = query_log::parse_log_file(log_path)?;
141141
let (instants, ranges) =
142-
query_log::infer_queries(&entries, opts.prometheus_scrape_interval_ms);
142+
query_log::infer_queries(&entries, opts.data_ingestion_interval_ms);
143143
let config = query_log::to_controller_config(instants, ranges);
144144
Ok(Self {
145145
config,

‎asap-planner-rs/src/promql/generator.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pub fn generate_plan(
6060
let processor = SingleQueryProcessor::new(
6161
query_string.clone(),
6262
qg.repetition_delay_ms,
63-
opts.prometheus_scrape_interval_ms,
63+
opts.data_ingestion_interval_ms,
6464
metric_schema.clone(),
6565
opts.streaming_engine,
6666
controller_config.sketch_parameters.clone(),

‎asap-planner-rs/tests/integration.rs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::path::Path;
66

77
fn arroyo_opts() -> RuntimeOptions {
88
RuntimeOptions {
9-
prometheus_scrape_interval_ms: 15_000,
9+
data_ingestion_interval_ms: 15_000,
1010
streaming_engine: StreamingEngine::Arroyo,
1111
enable_punting: false,
1212
range_duration_ms: 0,
@@ -598,7 +598,7 @@ fn sub_second_scrape_interval_window_size_equals_scrape_interval() {
598598
// OnlySpatial query: window size = scrape interval (planner/window.rs).
599599
// 100ms would be indistinguishable from 0 under the old seconds-only model.
600600
let opts = RuntimeOptions {
601-
prometheus_scrape_interval_ms: 100,
601+
data_ingestion_interval_ms: 100,
602602
..arroyo_opts()
603603
};
604604
let c = Controller::from_file_with_schema(
@@ -617,7 +617,7 @@ fn sub_second_scrape_interval_round_trips_through_generated_yaml() {
617617
// under the renamed wire key (windowSizeMs, not windowSize) — not silently
618618
// rounded or truncated.
619619
let opts = RuntimeOptions {
620-
prometheus_scrape_interval_ms: 100,
620+
data_ingestion_interval_ms: 100,
621621
..arroyo_opts()
622622
};
623623
let c = Controller::from_file_with_schema(

0 commit comments

Comments
 (0)