feat: 增加 Runner 生命周期结构化日志
This commit is contained in:
@@ -71,6 +71,28 @@ type Worker struct {
|
||||
Backend Backend
|
||||
Tasks TaskState
|
||||
Bootstrap Bootstrap
|
||||
OnEvent func(Event)
|
||||
}
|
||||
|
||||
// Event describes a backend lifecycle transition without exposing launch
|
||||
// environment values or other credentials.
|
||||
type Event struct {
|
||||
Name string
|
||||
AssignmentID string
|
||||
Executor string
|
||||
Phase Phase
|
||||
}
|
||||
|
||||
func (w Worker) event(name string, assignment taskassignment.Assignment, executor *Executor) {
|
||||
if w.OnEvent == nil {
|
||||
return
|
||||
}
|
||||
event := Event{Name: name, AssignmentID: assignment.ID}
|
||||
if executor != nil {
|
||||
event.Executor = executor.Name
|
||||
event.Phase = executor.Phase
|
||||
}
|
||||
w.OnEvent(event)
|
||||
}
|
||||
|
||||
// Accept completes the durable handoff from JetStream to the backend. Once it
|
||||
@@ -88,6 +110,7 @@ func (w Worker) Accept(ctx context.Context, assignment taskassignment.Assignment
|
||||
return false, err
|
||||
}
|
||||
if executor == nil {
|
||||
w.event("executor_absent", assignment, nil)
|
||||
launch, launchErr := w.launchSpec(assignment)
|
||||
if launchErr != nil {
|
||||
return false, launchErr
|
||||
@@ -96,13 +119,18 @@ func (w Worker) Accept(ctx context.Context, assignment taskassignment.Assignment
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
w.event("executor_created", assignment, executor)
|
||||
} else {
|
||||
w.event("executor_found", assignment, executor)
|
||||
}
|
||||
if executor.IdentityTarget == "" {
|
||||
w.event("identity_target_pending", assignment, executor)
|
||||
return false, nil
|
||||
}
|
||||
if err := w.Backend.BindIdentity(ctx, executor, assignment.Identity); err != nil {
|
||||
return false, err
|
||||
}
|
||||
w.event("identity_bound", assignment, executor)
|
||||
return true, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user