refactor: enhance context cancellation handling in mobile UI and driver extensions

This commit is contained in:
lilong.129
2025-06-30 13:04:00 +08:00
parent e5823bba0e
commit 0b6e764c9f
2 changed files with 16 additions and 10 deletions

View File

@@ -925,18 +925,18 @@ func runStepMobileUI(s *SessionRunner, step IStep) (stepResult *StepResult, err
}
// call MCP tool to execute action with cancellable context
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
ctx, cancel := context.WithCancelCause(context.Background())
defer cancel(nil)
// Create a goroutine to monitor for interrupt signals
// Create a goroutine to monitor for interrupt signals and timeouts
go func() {
select {
case <-s.caseRunner.hrpRunner.interruptSignal:
log.Warn().Msg("cancelling action due to interrupt signal")
cancel()
cancel(code.InterruptError)
case <-s.caseRunner.hrpRunner.caseTimeoutTimer.C:
log.Warn().Msg("cancelling action due to case timeout")
cancel()
cancel(code.TimeoutError)
case <-ctx.Done():
// Context already cancelled
}