Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2 (Please be gentle).

spindle: more verbose error messages

Signed-off-by: Seongmin Lee <git@boltless.me>

authored by boltless.me and committed by tangled.org 4e89384c 8add44eb

+30 -35
+2 -18
spindle/db/events.go
··· 18 18 EventJson string `json:"event"` 19 19 } 20 20 21 - func (d *DB) InsertEvent(event Event, notifier *notifier.Notifier) error { 21 + func (d *DB) insertEvent(event Event, notifier *notifier.Notifier) error { 22 22 _, err := d.Exec( 23 23 `insert into events (rkey, nsid, event, created) values (?, ?, ?, ?)`, 24 24 event.Rkey, ··· 70 70 return evts, nil 71 71 } 72 72 73 - func (d *DB) CreateStatusEvent(rkey string, s tangled.PipelineStatus, n *notifier.Notifier) error { 74 - eventJson, err := json.Marshal(s) 75 - if err != nil { 76 - return err 77 - } 78 - 79 - event := Event{ 80 - Rkey: rkey, 81 - Nsid: tangled.PipelineStatusNSID, 82 - Created: time.Now().UnixNano(), 83 - EventJson: string(eventJson), 84 - } 85 - 86 - return d.InsertEvent(event, n) 87 - } 88 - 89 73 func (d *DB) createStatusEvent( 90 74 workflowId models.WorkflowId, 91 75 statusKind models.StatusKind, ··· 100 116 EventJson: string(eventJson), 101 117 } 102 118 103 - return d.InsertEvent(event, n) 119 + return d.insertEvent(event, n) 104 120 105 121 } 106 122
+24 -13
spindle/engines/nixery/engine.go
··· 179 179 return err 180 180 } 181 181 e.registerCleanup(wid, func(ctx context.Context) error { 182 - return e.docker.NetworkRemove(ctx, networkName(wid)) 182 + if err := e.docker.NetworkRemove(ctx, networkName(wid)); err != nil { 183 + return fmt.Errorf("removing network: %w", err) 184 + } 185 + return nil 183 186 }) 184 187 185 188 addl := wf.Data.(addlFields) ··· 232 229 return fmt.Errorf("creating container: %w", err) 233 230 } 234 231 e.registerCleanup(wid, func(ctx context.Context) error { 235 - err = e.docker.ContainerStop(ctx, resp.ID, container.StopOptions{}) 236 - if err != nil { 237 - return err 232 + if err := e.docker.ContainerStop(ctx, resp.ID, container.StopOptions{}); err != nil { 233 + return fmt.Errorf("stopping container: %w", err) 238 234 } 239 235 240 - return e.docker.ContainerRemove(ctx, resp.ID, container.RemoveOptions{ 236 + err := e.docker.ContainerRemove(ctx, resp.ID, container.RemoveOptions{ 241 237 RemoveVolumes: true, 242 238 RemoveLinks: false, 243 239 Force: false, 244 240 }) 241 + if err != nil { 242 + return fmt.Errorf("removing container: %w", err) 243 + } 244 + return nil 245 245 }) 246 246 247 - err = e.docker.ContainerStart(ctx, resp.ID, container.StartOptions{}) 248 - if err != nil { 247 + if err := e.docker.ContainerStart(ctx, resp.ID, container.StartOptions{}); err != nil { 249 248 return fmt.Errorf("starting container: %w", err) 250 249 } 251 250 ··· 399 394 } 400 395 401 396 func (e *Engine) DestroyWorkflow(ctx context.Context, wid models.WorkflowId) error { 402 - e.cleanupMu.Lock() 403 - key := wid.String() 404 - 405 - fns := e.cleanup[key] 406 - delete(e.cleanup, key) 407 - e.cleanupMu.Unlock() 397 + fns := e.drainCleanups(wid) 408 398 409 399 for _, fn := range fns { 410 400 if err := fn(ctx); err != nil { ··· 415 415 416 416 key := wid.String() 417 417 e.cleanup[key] = append(e.cleanup[key], fn) 418 + } 419 + 420 + func (e *Engine) drainCleanups(wid models.WorkflowId) []cleanupFunc { 421 + e.cleanupMu.Lock() 422 + key := wid.String() 423 + 424 + fns := e.cleanup[key] 425 + delete(e.cleanup, key) 426 + e.cleanupMu.Unlock() 427 + 428 + return fns 418 429 } 419 430 420 431 func networkName(wid models.WorkflowId) string {
+4 -4
spindle/server.go
··· 320 320 tpl.TriggerMetadata.Repo.Repo, 321 321 ) 322 322 if err != nil { 323 - return err 323 + return fmt.Errorf("failed to get repo: %w", err) 324 324 } 325 325 326 326 pipelineId := models.PipelineId{ ··· 341 341 Name: w.Name, 342 342 }, fmt.Sprintf("unknown engine %#v", w.Engine), -1, s.n) 343 343 if err != nil { 344 - return err 344 + return fmt.Errorf("db.StatusFailed: %w", err) 345 345 } 346 346 347 347 continue ··· 355 355 356 356 ewf, err := s.engs[w.Engine].InitWorkflow(*w, tpl) 357 357 if err != nil { 358 - return err 358 + return fmt.Errorf("init workflow: %w", err) 359 359 } 360 360 361 361 // inject TANGLED_* env vars after InitWorkflow ··· 372 372 Name: w.Name, 373 373 }, s.n) 374 374 if err != nil { 375 - return err 375 + return fmt.Errorf("db.StatusPending: %w", err) 376 376 } 377 377 } 378 378 }