Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2616)

Unified Diff: appengine/cmd/milo/swarming/build.go

Issue 2109473005: Milo: Pending swarming builds (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/cmd/milo/swarming/build.go
diff --git a/appengine/cmd/milo/swarming/build.go b/appengine/cmd/milo/swarming/build.go
index 7decfc96c2d518776e8823ec268d0ea0b8589cbf..a1c5b27fb05e6d6c3dc94c6cfeb8b1408f63b1bb 100644
--- a/appengine/cmd/milo/swarming/build.go
+++ b/appengine/cmd/milo/swarming/build.go
@@ -114,8 +114,10 @@ func getSwarmingResult(sc *swarming.Service, taskID string) (
return srtr, nil
}
+// getSwarming fetches both the swarming task data and log data, and returns
+// the task result, the log string, task error, and log error.
func getSwarming(c context.Context, server string, taskID string) (
- *swarming.SwarmingRpcsTaskResult, string, error) {
+ *swarming.SwarmingRpcsTaskResult, string, error, error) {
var log string
var sr *swarming.SwarmingRpcsTaskResult
@@ -125,15 +127,12 @@ func getSwarming(c context.Context, server string, taskID string) (
if server == "debug" {
sr, errRes = getDebugSwarmingResult(taskID)
log, errLog = getDebugTaskOutput(taskID)
- if errLog != nil {
- return sr, log, errLog
- }
- return sr, log, errRes
+ return sr, log, errRes, errLog
}
sc, err := getSwarmingClient(c, server)
if err != nil {
- return nil, "", err
+ return nil, "", err, nil
}
var wg sync.WaitGroup
@@ -148,10 +147,7 @@ func getSwarming(c context.Context, server string, taskID string) (
sr, errRes = getSwarmingResult(sc, taskID)
}()
wg.Wait()
- if errRes != nil {
- return sr, log, errRes
- }
- return sr, log, errLog
+ return sr, log, errRes, errLog
}
func taskProperties(sr *swarming.SwarmingRpcsTaskResult) *resp.PropertyGroup {
@@ -292,9 +288,18 @@ func streamsFromAnnotatedLog(ctx context.Context, log string) (*logdog.Streams,
func swarmingBuildImpl(c context.Context, URL string, server string, taskID string) (*resp.MiloBuild, error) {
// Fetch the data from Swarming
- sr, body, err := getSwarming(c, server, taskID)
- if err != nil {
- return nil, err
+ sr, body, errRes, errLog := getSwarming(c, server, taskID)
+ // Swarming result must come back.
+ if errRes != nil {
+ return nil, errRes
+ }
+ switch sr.State {
+ case TaskCompleted, TaskRunning, TaskCanceled:
+ if errLog != nil {
+ // If the task is completed, running, or canceled, we'd expect a log.
+ // If not, we don't necessarily expect the log to come back.
nodir 2016/06/28 20:36:49 I think getSwarming is a better place for this log
+ return nil, errLog
+ }
}
allowMilo := false
@@ -316,20 +321,22 @@ func swarmingBuildImpl(c context.Context, URL string, server string, taskID stri
// Decode the data using annotee. The logdog stream returned here is assumed
// to be consistent, which is why the following block of code are not
// expected to ever err out.
- lds, err := streamsFromAnnotatedLog(c, body)
- if err != nil {
- build.Components = []*resp.BuildComponent{{
- Type: resp.Summary,
- Label: "Milo annotation parser",
- Text: []string{err.Error()},
- Status: resp.InfraFailure,
- SubLink: []*resp.Link{{
- Label: "swarming task",
- URL: taskPageURL(server, taskID),
- }},
- }}
- } else {
- logdog.AddLogDogToBuild(c, URL, lds, build)
+ if errLog != nil && body != "" {
+ lds, err := streamsFromAnnotatedLog(c, body)
+ if err != nil {
+ build.Components = []*resp.BuildComponent{{
+ Type: resp.Summary,
+ Label: "Milo annotation parser",
+ Text: []string{err.Error()},
+ Status: resp.InfraFailure,
+ SubLink: []*resp.Link{{
+ Label: "swarming task",
+ URL: taskPageURL(server, taskID),
+ }},
+ }}
+ } else {
+ logdog.AddLogDogToBuild(c, URL, lds, build)
+ }
}
return build, nil

Powered by Google App Engine
This is Rietveld 408576698