Skip to content

Commit b581e54

Browse files
authored
Merge pull request #476 from ProjectASAP/feat/transmission-plan-frame-identity
feat(transport): add TransmissionPlan and summary frame identity
2 parents 2d46e96 + 56e8a87 commit b581e54

12 files changed

Lines changed: 779 additions & 40 deletions

File tree

‎control_plane/src/backend_client.rs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ impl BackendClient {
366366
pub async fn post_physical_plan_typed(
367367
&self,
368368
precompute_plan: &crate::physical::compiler::PrecomputePlan,
369+
transmission_plan: &crate::physical::compiler::TransmissionPlan,
369370
backend_plan: Vec<u8>,
370371
query_plan: &crate::query_plan::QueryPlan,
371372
storage_routing: Option<serde_json::Value>,
@@ -376,6 +377,7 @@ impl BackendClient {
376377
.post(&url)
377378
.json(&serde_json::json!({
378379
"precompute_plan": precompute_plan,
380+
"transmission_plan": transmission_plan,
379381
"backend_plan": backend_plan,
380382
"query_plan": query_plan,
381383
"storage_routing": storage_routing,

‎control_plane/src/emit/backend_push.rs‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,22 @@ async fn push_documents_coupled(
252252
.unwrap_or_default(),
253253
entries: Default::default(),
254254
};
255+
let transmission_plan = match crate::physical::compiler::TransmissionPlan::build(
256+
precompute_plan.envelope.clone(),
257+
precompute_plan,
258+
) {
259+
Ok(plan) => plan,
260+
Err(error) => {
261+
warn!(%error, "failed to build compatibility TransmissionPlan");
262+
return (false, false, 0);
263+
}
264+
};
255265

256266
for attempt in 1..=RETRY_MAX_ATTEMPTS {
257267
match client
258268
.post_physical_plan_typed(
259269
precompute_plan,
270+
&transmission_plan,
260271
plan_bytes.clone(),
261272
&query_plan,
262273
Some(routing.clone()),

‎control_plane/src/main.rs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ async fn handle_compile_and_publish_physical_plan(
650650
if let Err(error) = backend
651651
.post_physical_plan_typed(
652652
&bundle.precompute_plan,
653+
&bundle.transmission_plan,
653654
bundle.backend_plan.encode_to_vec(),
654655
&bundle.query_plan,
655656
None,

‎control_plane/src/opamp/mod.rs‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,6 +1035,16 @@ mod tests {
10351035
output_representation: "summary_state".into(),
10361036
},
10371037
}],
1038+
transmission_rules: vec![crate::physical::compiler::TransmissionRule {
1039+
materialization: asap_types::PolicyFingerprint(1),
1040+
producer_id: collector_id.into(),
1041+
schema_id: "asap-query-backend.v1:summary-state:v1:1".into(),
1042+
mode: crate::physical::compiler::TransmissionMode::Full,
1043+
encoding: crate::physical::compiler::StateEncoding::SketchlibProtobufV1,
1044+
emit_every_ms: 60_000,
1045+
full_checkpoint_every_ms: None,
1046+
destination_ref: "asapquery-backend".into(),
1047+
}],
10381048
}
10391049
}
10401050

0 commit comments

Comments
 (0)