Skip to content

Commit

Permalink
Use step uuid instead of name in GRPC status calls (woodpecker-ci#3143)
Browse files Browse the repository at this point in the history
close woodpecker-ci#3109

~~also fix start time of steps to be set correctly~~ edgecase do not hit
anymore as we have a clear sepperation between workflows and steps now
:)

---------

Co-authored-by: Anbraten <anton@ju60.de>
  • Loading branch information
2 people authored and fernandrone committed Feb 1, 2024
1 parent b9e9b84 commit ec3ed8f
Show file tree
Hide file tree
Showing 8 changed files with 166 additions and 157 deletions.
6 changes: 3 additions & 3 deletions agent/rpc/client_grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ func (c *client) Init(ctx context.Context, id string, state rpc.State) (err erro
req.State.Exited = state.Exited
req.State.Finished = state.Finished
req.State.Started = state.Started
req.State.Name = state.Step
req.State.StepUuid = state.StepUUID
for {
_, err = c.client.Init(ctx, req)
if err == nil {
Expand Down Expand Up @@ -211,7 +211,7 @@ func (c *client) Done(ctx context.Context, id string, state rpc.State) (err erro
req.State.Exited = state.Exited
req.State.Finished = state.Finished
req.State.Started = state.Started
req.State.Name = state.Step
req.State.StepUuid = state.StepUUID
for {
_, err = c.client.Done(ctx, req)
if err == nil {
Expand Down Expand Up @@ -286,7 +286,7 @@ func (c *client) Update(ctx context.Context, id string, state rpc.State) (err er
req.State.Exited = state.Exited
req.State.Finished = state.Finished
req.State.Started = state.Started
req.State.Name = state.Step
req.State.StepUuid = state.StepUUID
for {
_, err = c.client.Update(ctx, req)
if err == nil {
Expand Down
2 changes: 1 addition & 1 deletion agent/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (r *Runner) createTracer(ctxmeta context.Context, logger zerolog.Logger, wo
Logger()

stepState := rpc.State{
Step: state.Pipeline.Step.Name,
StepUUID: state.Pipeline.Step.UUID,
Exited: state.Process.Exited,
ExitCode: state.Process.ExitCode,
Started: time.Now().Unix(), // TODO do not do this
Expand Down
10 changes: 5 additions & 5 deletions pipeline/rpc/peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ type (
Labels map[string]string `json:"labels"`
}

// State defines the workflow state.
// State defines the step state.
State struct {
Step string `json:"step"`
StepUUID string `json:"step_uuid"`
Exited bool `json:"exited"`
ExitCode int `json:"exit_code"`
Started int64 `json:"started"`
Expand Down Expand Up @@ -61,16 +61,16 @@ type Peer interface {
// Wait blocks until the workflow is complete
Wait(c context.Context, id string) error

// Init signals the workflow is initialized
// Init signals the step is initialized
Init(c context.Context, id string, state State) error

// Done signals the workflow is complete
// Done signals the step is complete
Done(c context.Context, id string, state State) error

// Extend extends the workflow deadline
Extend(c context.Context, id string) error

// Update updates the workflow state
// Update updates the step state
Update(c context.Context, id string, state State) error

// Log writes the workflow log entry
Expand Down
2 changes: 1 addition & 1 deletion pipeline/rpc/proto/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ package proto

// Version is the version of the woodpecker.proto file,
// !IMPORTANT! increased by 1 each time it get changed !IMPORTANT!
const Version int32 = 6
const Version int32 = 7
276 changes: 138 additions & 138 deletions pipeline/rpc/proto/woodpecker.pb.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pipeline/rpc/proto/woodpecker.proto
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ service Woodpecker {
//

message State {
string name = 1;
string step_uuid = 1;
bool exited = 2;
int32 exit_code = 3;
int64 started = 4;
Expand Down
19 changes: 14 additions & 5 deletions server/grpc/rpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,25 +106,34 @@ func (s *RPC) Update(_ context.Context, id string, state rpc.State) error {

workflow, err := s.store.WorkflowLoad(workflowID)
if err != nil {
log.Error().Msgf("error: rpc.update: cannot find workflow with id %d: %s", workflowID, err)
log.Error().Err(err).Msgf("rpc.update: cannot find workflow with id %d", workflowID)
return err
}

currentPipeline, err := s.store.GetPipeline(workflow.PipelineID)
if err != nil {
log.Error().Msgf("error: cannot find pipeline with id %d: %s", workflow.PipelineID, err)
log.Error().Err(err).Msgf("cannot find pipeline with id %d", workflow.PipelineID)
return err
}

step, err := s.store.StepChild(currentPipeline, workflow.PID, state.Step)
step, err := s.store.StepByUUID(state.StepUUID)
if err != nil {
log.Error().Msgf("error: cannot find step with name %s: %s", state.Step, err)
log.Error().Err(err).Msgf("cannot find step with uuid %s", state.StepUUID)
return err
}

if step.PipelineID != currentPipeline.ID {
msg := fmt.Sprintf("agent returned status with step uuid '%s' which does not belong to current pipeline", state.StepUUID)
log.Error().
Int64("stepPipelineID", step.PipelineID).
Int64("currentPipelineID", currentPipeline.ID).
Msg(msg)
return fmt.Errorf(msg)
}

repo, err := s.store.GetRepo(currentPipeline.RepoID)
if err != nil {
log.Error().Msgf("error: cannot find repo with id %d: %s", currentPipeline.RepoID, err)
log.Error().Err(err).Msgf("cannot find repo with id %d", currentPipeline.RepoID)
return err
}

Expand Down
6 changes: 3 additions & 3 deletions server/grpc/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func (s *WoodpeckerServer) Init(c context.Context, req *proto.InitRequest) (*pro
ExitCode: int(req.GetState().GetExitCode()),
Finished: req.GetState().GetFinished(),
Started: req.GetState().GetStarted(),
Step: req.GetState().GetName(),
StepUUID: req.GetState().GetStepUuid(),
Exited: req.GetState().GetExited(),
}
res := new(proto.Empty)
Expand All @@ -109,7 +109,7 @@ func (s *WoodpeckerServer) Update(c context.Context, req *proto.UpdateRequest) (
ExitCode: int(req.GetState().GetExitCode()),
Finished: req.GetState().GetFinished(),
Started: req.GetState().GetStarted(),
Step: req.GetState().GetName(),
StepUUID: req.GetState().GetStepUuid(),
Exited: req.GetState().GetExited(),
}
res := new(proto.Empty)
Expand All @@ -123,7 +123,7 @@ func (s *WoodpeckerServer) Done(c context.Context, req *proto.DoneRequest) (*pro
ExitCode: int(req.GetState().GetExitCode()),
Finished: req.GetState().GetFinished(),
Started: req.GetState().GetStarted(),
Step: req.GetState().GetName(),
StepUUID: req.GetState().GetStepUuid(),
Exited: req.GetState().GetExited(),
}
res := new(proto.Empty)
Expand Down

0 comments on commit ec3ed8f

Please sign in to comment.