Move ErrSuspendForCheckpoint to pkg/agent
The sentinel is part of the agent cancellation contract — the only caller that needs it (the supervisor) imports pkg/agent already, so keeping it next to SuspendedError prevents the upward dependency that would arise if any future agent.Run caller wanted to trigger graceful suspend. Update pkg/probo/agent_run_handler.go to reference agent.ErrSuspendForCheckpoint. Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
This commit is contained in:
@@ -16,10 +16,21 @@ package agent
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"go.probo.inc/probo/pkg/llm"
|
||||
)
|
||||
|
||||
// ErrSuspendForCheckpoint is the recommended cancel cause for callers
|
||||
// who want the agent loop to gracefully suspend (build a checkpoint
|
||||
// and return *SuspendedError) rather than treat the cancellation as a
|
||||
// silent close. The agent loop only inspects ctx.Err(); any cancel
|
||||
// cause produces a graceful suspend, but using this sentinel makes
|
||||
// the intent explicit and lets supervisors distinguish a user-driven
|
||||
// cancel from infrastructure-level causes (lease loss, heartbeat
|
||||
// failure) when they inspect context.Cause(ctx).
|
||||
var ErrSuspendForCheckpoint = errors.New("agent run: graceful suspend requested")
|
||||
|
||||
type (
|
||||
AgentStatus string
|
||||
|
||||
|
||||
@@ -45,13 +45,6 @@ type agentRunHandler struct {
|
||||
var (
|
||||
_ worker.Handler[coredata.AgentRun] = (*agentRunHandler)(nil)
|
||||
_ worker.StaleRecoverer = (*agentRunHandler)(nil)
|
||||
|
||||
// ErrSuspendForCheckpoint is the cancel cause used when the
|
||||
// supervisor asks an in-flight run to gracefully suspend so it can
|
||||
// checkpoint and exit. The agent loop sees ctx.Err() at its next
|
||||
// turn boundary and returns *SuspendedError; executeRun treats
|
||||
// that outcome as a graceful exit (no row-status commit).
|
||||
ErrSuspendForCheckpoint = errors.New("agent run: graceful suspend requested")
|
||||
)
|
||||
|
||||
// Claim loads the next pending agent run, marks it RUNNING with a lease
|
||||
@@ -114,7 +107,7 @@ func (h *agentRunHandler) Process(ctx context.Context, run coredata.AgentRun) er
|
||||
go func() {
|
||||
select {
|
||||
case <-h.shutdownCh:
|
||||
cancelRun(ErrSuspendForCheckpoint)
|
||||
cancelRun(agent.ErrSuspendForCheckpoint)
|
||||
case <-forwarderDone:
|
||||
}
|
||||
}()
|
||||
|
||||
Reference in New Issue
Block a user