huskies: merge 498_bug_stale_merge_job_lock_prevents_new_merges_after_agent_dies
This commit is contained in:
@@ -320,6 +320,7 @@ impl AgentPool {
|
||||
let log_writer_clone = log_writer.clone();
|
||||
let child_killers_clone = self.child_killers.clone();
|
||||
let watcher_tx_clone = self.watcher_tx.clone();
|
||||
let merge_jobs_clone = Arc::clone(&self.merge_jobs);
|
||||
|
||||
// Spawn the background task. Worktree creation and agent launch happen here
|
||||
// so `start_agent` returns immediately after registering the agent as
|
||||
@@ -524,6 +525,15 @@ impl AgentPool {
|
||||
(tx_clone.clone(), result.session_id)
|
||||
}
|
||||
};
|
||||
// Clear any stale Running merge job so the next mergemaster
|
||||
// can call start_merge_agent_work without hitting "Merge
|
||||
// already in progress" (bug 498).
|
||||
if let Ok(mut jobs) = merge_jobs_clone.lock()
|
||||
&& let Some(job) = jobs.get(&sid)
|
||||
&& matches!(job.status, crate::agents::merge::MergeJobStatus::Running)
|
||||
{
|
||||
jobs.remove(&sid);
|
||||
}
|
||||
let _ = tx_done.send(AgentEvent::Done {
|
||||
story_id: sid.clone(),
|
||||
agent_name: aname.clone(),
|
||||
|
||||
Reference in New Issue
Block a user