Add persistent job claim and file artifact reads
This commit is contained in:
+20
-1
@@ -8,6 +8,7 @@ import (
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
@@ -152,7 +153,25 @@ func (c PlatformClient) ReportLifecycle(ctx context.Context, request protocol.Ru
|
||||
}
|
||||
|
||||
func (c PlatformClient) ClaimJob(ctx context.Context, request protocol.RunJobClaimRequest) (protocol.RunJobClaimResponse, error) {
|
||||
return postPlatformJSON[protocol.RunJobClaimRequest, protocol.RunJobClaimResponse](ctx, c, "/api/v1/run/jobs/claim", request)
|
||||
response, err := postPlatformJSON[protocol.RunJobClaimRequest, protocol.RunJobClaimResponse](ctx, c, "/api/v1/run/jobs/claim", request)
|
||||
if request.WaitSeconds > 0 && claimWaitUnsupported(err) {
|
||||
request.WaitSeconds = 0
|
||||
return postPlatformJSON[protocol.RunJobClaimRequest, protocol.RunJobClaimResponse](ctx, c, "/api/v1/run/jobs/claim", request)
|
||||
}
|
||||
return response, err
|
||||
}
|
||||
|
||||
func claimWaitUnsupported(err error) bool {
|
||||
var requestErr PlatformRequestError
|
||||
if !errors.As(err, &requestErr) || requestErr.Status != http.StatusBadRequest || requestErr.Code != "bad_request" {
|
||||
return false
|
||||
}
|
||||
for _, detail := range requestErr.Details {
|
||||
if strings.Contains(detail, "waitSeconds") {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (c PlatformClient) AckJob(ctx context.Context, request protocol.RunJobAckRequest) (protocol.RunJobAckResponse, error) {
|
||||
|
||||
Reference in New Issue
Block a user