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

Side by Side Diff: dm/appengine/deps/ensure_graph_data.go

Issue 2951393002: [errors] de-specialize Transient in favor of Tags. (Closed)
Patch Set: copyright Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The LUCI Authors. All rights reserved. 1 // Copyright 2015 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package deps 5 package deps
6 6
7 import ( 7 import (
8 "fmt" 8 "fmt"
9 9
10 "golang.org/x/net/context" 10 "golang.org/x/net/context"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 } 136 }
137 muts = append(muts, mut) 137 muts = append(muts, mut)
138 } 138 }
139 for qid, nums := range newAttempts.To { 139 for qid, nums := range newAttempts.To {
140 muts = append(muts, &mutate.EnsureQuestAttempts{ 140 muts = append(muts, &mutate.EnsureQuestAttempts{
141 Quest: &model.Quest{ID: qid}, 141 Quest: &model.Quest{ID: qid},
142 AIDs: nums.Nums, 142 AIDs: nums.Nums,
143 DoNotMergeQuest: true, 143 DoNotMergeQuest: true,
144 }) 144 })
145 } 145 }
146 » return grpcutil.Annotate(tumble.AddToJournal(c, muts...), codes.Internal ). 146 » return grpcAnnotate(tumble.AddToJournal(c, muts...), codes.Internal).
147 Reason("attempting to journal").Err() 147 Reason("attempting to journal").Err()
148 } 148 }
149 149
150 func (d *deps) ensureGraphData(c context.Context, req *dm.EnsureGraphDataReq, ne wQuests []*model.Quest, newAttempts *dm.AttemptList, rsp *dm.EnsureGraphDataRsp) (err error) { 150 func (d *deps) ensureGraphData(c context.Context, req *dm.EnsureGraphDataReq, ne wQuests []*model.Quest, newAttempts *dm.AttemptList, rsp *dm.EnsureGraphDataRsp) (err error) {
151 var ( 151 var (
152 fwdDepExists *ds.ExistsResult 152 fwdDepExists *ds.ExistsResult
153 fwdDepKeys []*ds.Key 153 fwdDepKeys []*ds.Key
154 ) 154 )
155 if req.ForExecution != nil { 155 if req.ForExecution != nil {
156 fwdDepKeys = model.FwdDepKeysFromList(c, req.ForExecution.Id.Att emptID(), newAttempts) 156 fwdDepKeys = model.FwdDepKeysFromList(c, req.ForExecution.Id.Att emptID(), newAttempts)
(...skipping 12 matching lines...) Expand all
169 gen <- func() (err error) { 169 gen <- func() (err error) {
170 fwdDepExists, err = ds.Exists(c, fwdDepKeys) 170 fwdDepExists, err = ds.Exists(c, fwdDepKeys)
171 if err != nil { 171 if err != nil {
172 err = fmt.Errorf("while finding FwdDeps: %s", err) 172 err = fmt.Errorf("while finding FwdDeps: %s", err)
173 } 173 }
174 return err 174 return err
175 } 175 }
176 } 176 }
177 }) 177 })
178 if err != nil { 178 if err != nil {
179 » » return grpcutil.Annotate(err, codes.Internal).Reason("failed to gather prerequisites").Err() 179 » » return grpcAnnotate(err, codes.Internal).Reason("failed to gathe r prerequisites").Err()
180 } 180 }
181 181
182 // Now that we've walked the graph, prune the lists of new Quest and Att empts 182 // Now that we've walked the graph, prune the lists of new Quest and Att empts
183 // by the information retrieved in the graph walk. newQuest and newAttem pts 183 // by the information retrieved in the graph walk. newQuest and newAttem pts
184 // will be reduced to contain only the missing information. 184 // will be reduced to contain only the missing information.
185 newQuests, newQuestSet := filterQuestsByNewTemplateData(rsp.Result, newQ uests) 185 newQuests, newQuestSet := filterQuestsByNewTemplateData(rsp.Result, newQ uests)
186 newAttempts, newAttemptsLen, err := filterAttemptsByDNE(rsp.Result, newA ttempts, newQuestSet) 186 newAttempts, newAttemptsLen, err := filterAttemptsByDNE(rsp.Result, newA ttempts, newQuestSet)
187 if err != nil { 187 if err != nil {
188 » » return grpcutil.Annotate(err, codes.InvalidArgument).Reason("fil terAttemptsByDNE").Err() 188 » » return grpcAnnotate(err, codes.InvalidArgument).Reason("filterAt temptsByDNE").Err()
189 } 189 }
190 190
191 // we're just asserting nodes, no edges, so journal whatever's left 191 // we're just asserting nodes, no edges, so journal whatever's left
192 if req.ForExecution == nil { 192 if req.ForExecution == nil {
193 logging.Fields{"qs": len(newQuests), "atmpts": newAttemptsLen}.I nfof(c, 193 logging.Fields{"qs": len(newQuests), "atmpts": newAttemptsLen}.I nfof(c,
194 "journaling without deps") 194 "journaling without deps")
195 err := journalQuestAttempts(c, newQuests, newAttempts) 195 err := journalQuestAttempts(c, newQuests, newAttempts)
196 rsp.Accepted = err == nil 196 rsp.Accepted = err == nil
197 return err 197 return err
198 } 198 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 292
293 d, ok := dists[qDesc.DistributorConfigName] 293 d, ok := dists[qDesc.DistributorConfigName]
294 if !ok { 294 if !ok {
295 if d, _, err = reg.MakeDistributor(c, qDesc.DistributorC onfigName); err != nil { 295 if d, _, err = reg.MakeDistributor(c, qDesc.DistributorC onfigName); err != nil {
296 return 296 return
297 } 297 }
298 dists[qDesc.DistributorConfigName] = d 298 dists[qDesc.DistributorConfigName] = d
299 } 299 }
300 300
301 if err = d.Validate(qDesc.DistributorParameters); err != nil { 301 if err = d.Validate(qDesc.DistributorParameters); err != nil {
302 » » » err = grpcutil.Annotate(err, codes.InvalidArgument). 302 » » » err = grpcAnnotate(err, codes.InvalidArgument).
303 Reason("JSON distributor parameters are invalid for this distributor configuration.").Err() 303 Reason("JSON distributor parameters are invalid for this distributor configuration.").Err()
304 return 304 return
305 } 305 }
306 306
307 if _, ok := newQuests[q.ID]; !ok { 307 if _, ok := newQuests[q.ID]; !ok {
308 newQuests[q.ID] = q 308 newQuests[q.ID] = q
309 } 309 }
310 rsp.QuestIds = append(rsp.QuestIds, dm.NewQuestID(q.ID)) 310 rsp.QuestIds = append(rsp.QuestIds, dm.NewQuestID(q.ID))
311 anums := newAttempts.To[q.ID] 311 anums := newAttempts.To[q.ID]
312 if anums == nil { 312 if anums == nil {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 } 361 }
362 362
363 return 363 return
364 } 364 }
365 365
366 func (d *deps) EnsureGraphData(c context.Context, req *dm.EnsureGraphDataReq) (r sp *dm.EnsureGraphDataRsp, err error) { 366 func (d *deps) EnsureGraphData(c context.Context, req *dm.EnsureGraphDataReq) (r sp *dm.EnsureGraphDataRsp, err error) {
367 if req.ForExecution != nil { 367 if req.ForExecution != nil {
368 logging.Fields{"execution": req.ForExecution.Id}.Infof(c, "on be half of") 368 logging.Fields{"execution": req.ForExecution.Id}.Infof(c, "on be half of")
369 _, _, err := model.AuthenticateExecution(c, req.ForExecution) 369 _, _, err := model.AuthenticateExecution(c, req.ForExecution)
370 if err != nil { 370 if err != nil {
371 » » » return nil, grpcutil.Annotate(err, codes.Unauthenticated ).Reason("bad execution auth").Err() 371 » » » return nil, grpcAnnotate(err, codes.Unauthenticated).Rea son("bad execution auth").Err()
372 } 372 }
373 } else { 373 } else {
374 if err = canWrite(c); err != nil { 374 if err = canWrite(c); err != nil {
375 return 375 return
376 } 376 }
377 } 377 }
378 378
379 // render any quest descriptions, templates and template attempts into 379 // render any quest descriptions, templates and template attempts into
380 // a single merged set of new quests and new attempts 380 // a single merged set of new quests and new attempts
381 rsp, newQuests, newAttempts, err := renderRequest(c, req) 381 rsp, newQuests, newAttempts, err := renderRequest(c, req)
382 if err != nil || len(rsp.TemplateError) > 0 { 382 if err != nil || len(rsp.TemplateError) > 0 {
383 return 383 return
384 } 384 }
385 385
386 newQuestList := make([]*model.Quest, 0, len(newQuests)) 386 newQuestList := make([]*model.Quest, 0, len(newQuests))
387 for _, q := range newQuests { 387 for _, q := range newQuests {
388 newQuestList = append(newQuestList, q) 388 newQuestList = append(newQuestList, q)
389 } 389 }
390 390
391 err = d.ensureGraphData(c, req, newQuestList, newAttempts, rsp) 391 err = d.ensureGraphData(c, req, newQuestList, newAttempts, rsp)
392 392
393 return 393 return
394 } 394 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698