This commit is contained in:
Dylan Hurd
2026-04-27 22:18:42 -07:00
parent 9d92bc3de4
commit 19c984961b

View File

@@ -318,21 +318,47 @@ impl GuardianReviewSessionManager {
Some(trunk) => trunk,
None => {
let spawn_cancel_token = CancellationToken::new();
let spawned_review_session = match run_before_review_deadline_with_cancel(
let cold_start = run_before_review_deadline_with_cancel(
deadline,
params.external_cancel.as_ref(),
&spawn_cancel_token,
Box::pin(spawn_guardian_review_session(
&params,
params.spawn_config.clone(),
next_reuse_key.clone(),
spawn_cancel_token.clone(),
/*fork_snapshot*/ None,
)),
Box::pin(async {
let spawned_review_session = Arc::new(
spawn_guardian_review_session(
&params,
params.spawn_config.clone(),
next_reuse_key.clone(),
spawn_cancel_token.clone(),
/*fork_snapshot*/ None,
)
.await?,
);
let mut state = self.state.lock().await;
if state.is_shutdown {
spawned_review_session.shutdown_in_background();
Ok(None)
} else if let Some(current_trunk) = state.trunk.as_ref().cloned() {
if current_trunk.reuse_key != next_reuse_key
&& current_trunk.review_lock.try_acquire().is_ok()
{
stale_trunk_to_shutdown =
state.trunk.replace(Arc::clone(&spawned_review_session));
Ok(Some((spawned_review_session, true)))
} else {
spawned_review_session.shutdown_in_background();
Ok(Some((current_trunk, false)))
}
} else {
state.trunk = Some(Arc::clone(&spawned_review_session));
Ok(Some((spawned_review_session, true)))
}
}),
)
.await
{
Ok(Ok(review_session)) => Arc::new(review_session),
.await;
let Some((trunk, installed_spawned_trunk)) = (match cold_start {
Ok(Ok(cold_start)) => cold_start,
Ok(Err(err)) => {
return (
GuardianReviewSessionOutcome::PromptBuildFailed(err),
@@ -342,50 +368,18 @@ impl GuardianReviewSessionManager {
Err(outcome) => {
return (outcome, GuardianReviewAnalyticsResult::without_session());
}
}) else {
return (
GuardianReviewSessionOutcome::Aborted,
GuardianReviewAnalyticsResult::without_session(),
);
};
let trunk = match run_before_review_deadline(
deadline,
params.external_cancel.as_ref(),
self.state.lock(),
)
.await
spawned_trunk = installed_spawned_trunk;
if installed_spawned_trunk
&& let Some(review_session) = stale_trunk_to_shutdown.take()
{
Ok(mut state) => {
if state.is_shutdown {
spawned_review_session.shutdown_in_background();
return (
GuardianReviewSessionOutcome::Aborted,
GuardianReviewAnalyticsResult::without_session(),
);
} else if let Some(current_trunk) = state.trunk.as_ref().cloned() {
if current_trunk.reuse_key != next_reuse_key
&& current_trunk.review_lock.try_acquire().is_ok()
{
stale_trunk_to_shutdown =
state.trunk.replace(Arc::clone(&spawned_review_session));
spawned_trunk = true;
Arc::clone(&spawned_review_session)
} else {
spawned_review_session.shutdown_in_background();
current_trunk
}
} else {
state.trunk = Some(Arc::clone(&spawned_review_session));
spawned_trunk = true;
Arc::clone(&spawned_review_session)
}
}
Err(outcome) => {
spawned_review_session.shutdown_in_background();
return (outcome, GuardianReviewAnalyticsResult::without_session());
}
};
if let Some(review_session) = stale_trunk_to_shutdown.take() {
review_session.shutdown_in_background();
}
trunk
}
};