Skip to content

Commit c61ab8b

Browse files
authored
fix(worker): reduce httpclient timeout and remove some context (#5735)
1 parent 91599db commit c61ab8b

File tree

5 files changed

+20
-13
lines changed

5 files changed

+20
-13
lines changed

engine/worker/internal/handler_cds_version_set.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ import (
1212

1313
func setVersionHandler(ctx context.Context, wk *CurrentWorker) http.HandlerFunc {
1414
return func(w http.ResponseWriter, r *http.Request) {
15+
ctx := workerruntime.SetJobID(ctx, wk.currentJob.wJob.ID)
16+
ctx = workerruntime.SetStepOrder(ctx, wk.currentJob.currentStepIndex)
17+
ctx = workerruntime.SetStepName(ctx, wk.currentJob.currentStepName)
18+
1519
data, err := ioutil.ReadAll(r.Body)
1620
if err != nil {
1721
writeError(w, r, sdk.NewError(sdk.ErrWrongRequest, err))

engine/worker/internal/handler_tag.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package internal
33
import (
44
"context"
55
"net/http"
6-
"time"
76

87
"github.com/ovh/cds/engine/worker/pkg/workerruntime"
98
"github.com/ovh/cds/sdk"
@@ -27,8 +26,6 @@ func tagHandler(ctx context.Context, wk *CurrentWorker) http.HandlerFunc {
2726
})
2827
}
2928

30-
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
31-
defer cancel()
3229
if err := wk.client.QueueJobTag(ctx, wk.currentJob.wJob.ID, tags); err != nil {
3330
newError := sdk.NewErrorFrom(sdk.ErrUnknownError, "unable to create tag on CDS: %v", err)
3431
writeError(w, r, newError)

engine/worker/internal/take.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ import (
1515
)
1616

1717
func (w *CurrentWorker) Take(ctx context.Context, job sdk.WorkflowNodeJobRun) error {
18-
ctxQueueTakeJob, cancelQueueTakeJob := context.WithTimeout(ctx, 20*time.Second)
19-
defer cancelQueueTakeJob()
20-
info, err := w.client.QueueTakeJob(ctxQueueTakeJob, job)
18+
info, err := w.client.QueueTakeJob(ctx, job)
2119
if err != nil {
2220
return sdk.WrapError(err, "Unable to take job %d", job.ID)
2321
}
@@ -150,14 +148,11 @@ func (w *CurrentWorker) Take(ctx context.Context, job sdk.WorkflowNodeJobRun) er
150148
var lasterr error
151149
for try := 1; try <= 10; try++ {
152150
log.Info(ctx, "takeWorkflowJob> Sending build result...")
153-
ctxSendResult, cancelSendResult := context.WithTimeout(ctx, 120*time.Second)
154-
lasterr = w.client.QueueSendResult(ctxSendResult, job.ID, res)
151+
lasterr = w.client.QueueSendResult(ctx, job.ID, res)
155152
if lasterr == nil {
156153
log.Info(ctx, "takeWorkflowJob> Send build result OK")
157-
cancelSendResult()
158154
return nil
159155
}
160-
cancelSendResult()
161156
if ctx.Err() != nil {
162157
log.Info(ctx, "takeWorkflowJob> Cannot send build result: HTTP %v - worker cancelled - giving up", lasterr)
163158
return nil

engine/worker/internal/types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (wk *CurrentWorker) Init(name, hatcheryName, apiEndpoint, token string, mod
8282
wk.register.model = model
8383
wk.register.token = token
8484
wk.register.apiEndpoint = apiEndpoint
85-
wk.client = cdsclient.NewWorker(apiEndpoint, name, cdsclient.NewHTTPClient(time.Second*360, insecure))
85+
wk.client = cdsclient.NewWorker(apiEndpoint, name, cdsclient.NewHTTPClient(time.Second*10, insecure))
8686
return nil
8787
}
8888

sdk/cdsclient/client_queue.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,19 @@ func (c *client) QueueJobRelease(ctx context.Context, id int64) error {
234234

235235
func (c *client) QueueSendResult(ctx context.Context, id int64, res sdk.Result) error {
236236
path := fmt.Sprintf("/queue/workflows/%d/result", id)
237-
_, err := c.PostJSON(ctx, path, res, nil)
238-
return err
237+
b, err := json.Marshal(res)
238+
if err != nil {
239+
return sdk.WithStack(err)
240+
}
241+
result, _, code, err := c.Stream(ctx, c.HTTPNoTimeoutClient(), "POST", path, bytes.NewBuffer(b), nil)
242+
if err != nil {
243+
return err
244+
}
245+
defer result.Close()
246+
if code >= 300 {
247+
return sdk.WithStack(fmt.Errorf("unable to send job result. HTTP code error : %d", code))
248+
}
249+
return nil
239250
}
240251

241252
func (c *client) QueueSendCoverage(ctx context.Context, id int64, report coverage.Report) error {

0 commit comments

Comments
 (0)