diff --git a/src/runtime2/connector.rs b/src/runtime2/connector.rs index b8f2f1279ff496bfac0072bead3e49167c425c32..62d8485b808bf218348168b754d3be9965cefb34 100644 --- a/src/runtime2/connector.rs +++ b/src/runtime2/connector.rs @@ -36,7 +36,7 @@ use crate::protocol::{RunContext, RunResult}; use super::branch::{BranchId, ExecTree, QueueKind, SpeculativeState, PreparedStatement}; use super::consensus::{Consensus, Consistency, RoundConclusion, find_ports_in_value_group}; -use super::inbox::{DataMessage, Message, SyncCompMessage, SyncPortMessage, SyncControlMessage, PublicInbox}; +use super::inbox::{DataMessage, Message, SyncCompMessage, SyncCompContent, SyncPortMessage, SyncControlMessage, PublicInbox}; use super::native::Connector; use super::port::{PortKind, PortIdLocal}; use super::scheduler::{ComponentCtx, SchedulerCtx, MessageTicket}; @@ -517,6 +517,15 @@ impl ConnectorPDL { RoundConclusion::Failure => None, }; + // TODO: Hack + ctx.remove_messages(|m| match m { + Message::Data(_) | Message::SyncPort(_) | Message::SyncControl(_) | Message::Control(_) => false, + Message::SyncComp(m) => match m.content { + SyncCompContent::Notification | SyncCompContent::Presence(_) => true, + _ => false, + } + }); + if let Some(solution_branch_id) = final_branch_id { let mut fake_vec = Vec::new(); self.tree.end_sync(solution_branch_id); @@ -536,6 +545,7 @@ impl ConnectorPDL { if let Some(eval_error) = self.eval_error.take() { ctx.push_error(eval_error); } + return ConnectorScheduling::Exit; } }