@@ -566,19 +566,21 @@ func FreeNodeJobRun(ctx context.Context, store cache.Store, id int64) error {
566566 return sdk .WrapError (sdk .ErrJobNotBooked , "BookNodeJobRun> job %d already released" , id )
567567}
568568
569- //AddLog adds a build log
570- func AddLog (db gorp.SqlExecutor , job * sdk.WorkflowNodeJobRun , logs * sdk.Log , maxLogSize int64 ) error {
571- if job != nil {
572- logs .JobID = job .ID
573- logs .NodeRunID = job .WorkflowNodeRunID
574- }
575-
569+ // AppendLog adds a build log.
570+ func AppendLog (db gorp.SqlExecutor , jobID , nodeRunID , stepOrder int64 , val string , maxLogSize int64 ) error {
576571 // check if log exists without loading data but with log size
577- exists , size , err := ExistsStepLog (db , logs . JobID , logs . StepOrder )
572+ exists , size , err := ExistsStepLog (db , jobID , stepOrder )
578573 if err != nil {
579574 return sdk .WrapError (err , "cannot check if log exists" )
580575 }
581576
577+ logs := & sdk.Log {
578+ JobID : jobID ,
579+ NodeRunID : nodeRunID ,
580+ StepOrder : stepOrder ,
581+ Val : val ,
582+ }
583+
582584 // ignore the log if max size already reached
583585 if maxReached := truncateLogs (maxLogSize , size , logs ); maxReached {
584586 log .Debug ("truncated logs" )
@@ -628,7 +630,7 @@ func AddServiceLog(db gorp.SqlExecutor, job *sdk.WorkflowNodeJobRun, logs *sdk.S
628630}
629631
630632// RestartWorkflowNodeJob restart all workflow node job and update logs to indicate restart
631- func RestartWorkflowNodeJob (ctx context.Context , db gorp.SqlExecutor , wNodeJob sdk.WorkflowNodeJobRun ) error {
633+ func RestartWorkflowNodeJob (ctx context.Context , db gorp.SqlExecutor , wNodeJob sdk.WorkflowNodeJobRun , maxLogSize int64 ) error {
632634 var end func ()
633635 ctx , end = observability .Span (ctx , "workflow.RestartWorkflowNodeJob" )
634636 defer end ()
@@ -638,43 +640,38 @@ func RestartWorkflowNodeJob(ctx context.Context, db gorp.SqlExecutor, wNodeJob s
638640 if step .Status == sdk .StatusNeverBuilt || step .Status == sdk .StatusSkipped || step .Status == sdk .StatusDisabled {
639641 continue
640642 }
641- l , errL := LoadStepLogs (db , wNodeJob .ID , int64 (step .StepOrder ))
642- if errL != nil {
643- return sdk .WrapError (errL , "RestartWorkflowNodeJob> error while load step logs" )
644- }
645643 wNodeJob .Job .Reason = "Killed (Reason: Timeout)\n "
646644 step .Status = sdk .StatusWaiting
647645 step .Done = time.Time {}
648- if l != nil { // log could be nil here
649- l .Done = nil
650- logbuf := bytes .NewBufferString (l .Val )
651- logbuf .WriteString ("\n \n \n -=-=-=-=-=- Worker timeout: job replaced in queue -=-=-=-=-=-\n \n \n " )
652- l .Val = logbuf .String ()
653- if err := updateLog (db , l ); err != nil {
654- return sdk .WrapError (errL , "RestartWorkflowNodeJob> error while update step log" )
655- }
646+ if err := AppendLog (
647+ db , wNodeJob .ID , wNodeJob .WorkflowNodeRunID , int64 (step .StepOrder ),
648+ "\n \n \n -=-=-=-=-=- Worker timeout: job replaced in queue -=-=-=-=-=-\n \n \n " ,
649+ maxLogSize ,
650+ ); err != nil {
651+ return err
656652 }
657653 }
658- nodeRun , errNR := LoadAndLockNodeRunByID (ctx , db , wNodeJob .WorkflowNodeRunID )
659- if errNR != nil {
660- return errNR
654+
655+ nodeRun , err := LoadAndLockNodeRunByID (ctx , db , wNodeJob .WorkflowNodeRunID )
656+ if err != nil {
657+ return err
661658 }
662659
663660 //Synchronize struct but not in db
664- sync , errS := SyncNodeRunRunJob (ctx , db , nodeRun , wNodeJob )
665- if errS != nil {
666- return sdk .WrapError (errS , "RestartWorkflowNodeJob> error on sync nodeJobRun" )
661+ sync , err := SyncNodeRunRunJob (ctx , db , nodeRun , wNodeJob )
662+ if err != nil {
663+ return sdk .WrapError (err , "error on sync nodeJobRun" )
667664 }
668665 if ! sync {
669- log .Warning (ctx , "RestartWorkflowNodeJob> sync doesn't find a nodeJobRun" )
666+ log .Warning (ctx , "sync doesn't find a nodeJobRun" )
670667 }
671668
672- if errU := UpdateNodeRun (db , nodeRun ); errU != nil {
673- return sdk .WrapError (errU , "RestartWorkflowNodeJob> Cannot update node run" )
669+ if err := UpdateNodeRun (db , nodeRun ); err != nil {
670+ return sdk .WrapError (err , "cannot update node run" )
674671 }
675672
676673 if err := replaceWorkflowJobRunInQueue (db , wNodeJob ); err != nil {
677- return sdk .WrapError (err , "Cannot replace workflow job in queue" )
674+ return sdk .WrapError (err , "cannot replace workflow job in queue" )
678675 }
679676
680677 return nil
0 commit comments