mirror of
https://github.com/openai/codex.git
synced 2026-10-24 18:18:41 +00:00
codex: keep timer runtime on delete failure (#17380)
This commit is contained in:
@@ -180,30 +180,20 @@ impl Session {
|
||||
let state_db = self.timer_state_db().await?;
|
||||
self.start_timer_db_sync_task(state_db.clone());
|
||||
|
||||
let runtime = self.timers.lock().await.remove_timer(id);
|
||||
let deleted = match state_db
|
||||
.delete_thread_timer(&self.thread_id_string(), id)
|
||||
.await
|
||||
{
|
||||
Ok(deleted) => deleted,
|
||||
Err(err) => {
|
||||
if let Some(runtime) = runtime {
|
||||
self.timers.lock().await.restore_runtime(runtime);
|
||||
}
|
||||
return Err(format!("failed to delete timer from sqlite: {err}"));
|
||||
}
|
||||
Err(err) => return Err(format!("failed to delete timer from sqlite: {err}")),
|
||||
};
|
||||
let runtime = self.timers.lock().await.remove_timer(id);
|
||||
let Some(runtime) = runtime else {
|
||||
return Ok(deleted);
|
||||
};
|
||||
if !deleted {
|
||||
TimersState::cancel_runtime(&runtime);
|
||||
self.emit_timer_updated_notification().await;
|
||||
return Ok(false);
|
||||
}
|
||||
TimersState::cancel_runtime(&runtime);
|
||||
self.emit_timer_updated_notification().await;
|
||||
Ok(true)
|
||||
Ok(deleted)
|
||||
}
|
||||
|
||||
pub(crate) async fn maybe_start_pending_timer(self: &Arc<Self>) {
|
||||
|
||||
@@ -306,10 +306,6 @@ impl TimersState {
|
||||
self.timers.remove(id)
|
||||
}
|
||||
|
||||
pub(crate) fn restore_runtime(&mut self, runtime: TimerRuntime) {
|
||||
self.timers.insert(runtime.timer.id.clone(), runtime);
|
||||
}
|
||||
|
||||
pub(crate) fn cancel_runtime(runtime: &TimerRuntime) {
|
||||
if let Some(cancel) = runtime.timer_cancel.as_ref() {
|
||||
cancel.cancel();
|
||||
|
||||
Reference in New Issue
Block a user