diff --git a/crates/worker-runtime/src/runtime.rs b/crates/worker-runtime/src/runtime.rs index c15aa3d3..8e23c59d 100644 --- a/crates/worker-runtime/src/runtime.rs +++ b/crates/worker-runtime/src/runtime.rs @@ -3231,7 +3231,7 @@ impl RuntimeState { .map(|worker| worker.revision), ) .max(); - if known_revision.is_some_and(|known_revision| revision < known_revision) { + if known_revision.is_some_and(|known_revision| revision <= known_revision) { return; } @@ -4098,10 +4098,19 @@ mod tests { assert!(!RuntimeState::update_internal_worker_activity( &mut activity, &protocol::Event::InternalWorkerRemoved { - worker: child_a, + worker: child_a.clone(), revision: 2, }, )); + assert!(activity.workers.contains_key("child-a")); + + assert!(!RuntimeState::update_internal_worker_activity( + &mut activity, + &protocol::Event::InternalWorkerRemoved { + worker: child_a, + revision: 3, + }, + )); assert!(!activity.workers.contains_key("child-a")); assert!(activity.removed_workers.contains_key("child-a")); assert!(activity.has_running_worker()); @@ -4110,7 +4119,7 @@ mod tests { &mut activity, &protocol::Event::InternalWorkerRemoved { worker: child_b.clone(), - revision: 1, + revision: 2, }, )); assert!(!activity.has_running_worker()); @@ -4182,7 +4191,7 @@ mod tests { revision: 4, event: Box::new(protocol::Event::InternalWorkerRemoved { worker: grandchild.clone(), - revision: 2, + revision: 3, }), }, )); @@ -5007,7 +5016,7 @@ mod tests { &created.worker_ref, protocol::Event::InternalWorkerRemoved { worker: internal_worker_ref("child-live", None), - revision: 1, + revision: 2, }, ) .unwrap(); @@ -5026,7 +5035,7 @@ mod tests { &created.worker_ref, internal_worker_status_event( internal_worker_ref("child-live", None), - 2, + 3, protocol::WorkerStatus::Running, ), ) @@ -5047,7 +5056,7 @@ mod tests { &created.worker_ref, parent_snapshot(vec![internal_worker_snapshot( internal_worker_ref("child-live", None), - 3, + 4, protocol::WorkerStatus::Running, Vec::new(), )]),