summaryrefslogtreecommitdiff
path: root/src/api/server.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-23 02:01:24 +0300
committerGitHub <noreply@github.com>2026-08-23 02:01:24 +0300
commit20a500a7f3fa272326418312e3b57107ee96f0c4 (patch)
tree543fee1a1525714ddab70cc1bb07ccdd044359a4 /src/api/server.rs
parentc9601b9396532a552679328c8f0804d52909bc84 (diff)
fix(api): start lifecycle subscriptions from live events (#3134)
refs #1270
Diffstat (limited to 'src/api/server.rs')
-rw-r--r--src/api/server.rs29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/api/server.rs b/src/api/server.rs
index 3af8051f..3c42d699 100644
--- a/src/api/server.rs
+++ b/src/api/server.rs
@@ -691,21 +691,28 @@ fn stream_subscriptions(
event_hub: &EventHub,
running: &Arc<AtomicBool>,
) -> std::io::Result<()> {
+ let event_start_sequence = event_hub.current_sequence();
let mut subscriptions = Vec::with_capacity(params.subscriptions.len());
for (index, subscription) in params.subscriptions.into_iter().enumerate() {
- let active =
- match ActiveSubscription::new(subscription, &request_id, index, api_tx, event_hub) {
- Ok(active) => active,
- Err(response) => {
- if let Err(err) = write_json_line(&mut stream, &response) {
- if is_connection_closed_error(&err) {
- return Ok(());
- }
- return Err(err);
+ let active = match ActiveSubscription::new(
+ subscription,
+ &request_id,
+ index,
+ api_tx,
+ event_hub,
+ event_start_sequence,
+ ) {
+ Ok(active) => active,
+ Err(response) => {
+ if let Err(err) = write_json_line(&mut stream, &response) {
+ if is_connection_closed_error(&err) {
+ return Ok(());
}
- return Ok(());
+ return Err(err);
}
- };
+ return Ok(());
+ }
+ };
subscriptions.push(active);
}