January 2020
Intermediate to advanced
640 pages
16h 56m
English
The runJobToCompletion implementation for the master job coordinator is nearly identical to the one used by the worker:
func (c *masterJobCoordinator) runJobToCompletion(executor *bspgraph.Executor) error { if err := executor.RunToCompletion(c.jobCtx); err != nil { return err } else if _, err := c.barrier.WaitForWorkers(proto.Step_EXECUTED_GRAPH); err != nil { return err } else if err := c.barrier.NotifyWorkers(&proto.Step{Type: proto.Step_EXECUTED_GRAPH}); err != nil { return err } else if err := c.cfg.jobRunner.CompleteJob(c.cfg.jobDetails); err != nil { return err } else if _, err := c.barrier.WaitForWorkers(proto.Step_PESISTED_RESULTS); err != nil { return err } else if