// startTask is used to start the task if there is no handle func (r *TaskRunner) startTask() error { // Create a driver driver, err := r.createDriver() if err != nil { e := structs.NewTaskEvent(structs.TaskDriverFailure).SetDriverError(err) r.setState(structs.TaskStateDead, e) return err } // Start the job handle, err := driver.Start(r.ctx, r.task) if err != nil { r.logger.Printf("[ERR] client: failed to start task '%s' for alloc '%s': %v", r.task.Name, r.alloc.ID, err) e := structs.NewTaskEvent(structs.TaskDriverFailure). SetDriverError(fmt.Errorf("failed to start: %v", err)) r.setState(structs.TaskStateDead, e) return err } r.handleLock.Lock() r.handle = handle r.handleLock.Unlock() r.setState(structs.TaskStateRunning, structs.NewTaskEvent(structs.TaskStarted)) return nil }
// startTask creates the driver and starts the task. func (r *TaskRunner) startTask() error { // Create a driver driver, err := r.createDriver() if err != nil { return fmt.Errorf("failed to create driver of task '%s' for alloc '%s': %v", r.task.Name, r.alloc.ID, err) } // Start the job handle, err := driver.Start(r.ctx, r.task) if err != nil { wrapped := fmt.Errorf("failed to start task '%s' for alloc '%s': %v", r.task.Name, r.alloc.ID, err) r.logger.Printf("[INFO] client: %v", wrapped) if rerr, ok := err.(*structs.RecoverableError); ok { return structs.NewRecoverableError(wrapped, rerr.Recoverable) } return wrapped } r.handleLock.Lock() r.handle = handle r.handleLock.Unlock() return nil }
// startTask creates the driver and starts the task. func (r *TaskRunner) startTask() error { // Create a driver driver, err := r.createDriver() if err != nil { return fmt.Errorf("failed to create driver of task '%s' for alloc '%s': %v", r.task.Name, r.alloc.ID, err) } // Start the job handle, err := driver.Start(r.ctx, r.task) if err != nil { return fmt.Errorf("failed to start task '%s' for alloc '%s': %v", r.task.Name, r.alloc.ID, err) } r.handleLock.Lock() r.handle = handle r.handleLock.Unlock() return nil }
// startTask is used to start the task if there is no handle func (r *TaskRunner) startTask() error { // Create a driver driver, err := r.createDriver() if err != nil { r.setStatus(structs.AllocClientStatusFailed, err.Error()) return err } // Start the job handle, err := driver.Start(r.ctx, r.task) if err != nil { r.logger.Printf("[ERR] client: failed to start task '%s' for alloc '%s': %v", r.task.Name, r.allocID, err) r.setStatus(structs.AllocClientStatusFailed, fmt.Sprintf("failed to start: %v", err)) return err } r.handle = handle r.setStatus(structs.AllocClientStatusRunning, "task started") return nil }
// startTask creates the driver and start the task. Resource usage is also // collect in a launched goroutine. Collection ends when the passed channel is // closed func (r *TaskRunner) startTask(stopCollection <-chan struct{}) error { // Create a driver driver, err := r.createDriver() if err != nil { r.logger.Printf("[ERR] client: failed to create driver of task '%s' for alloc '%s': %v", r.task.Name, r.alloc.ID, err) return err } // Start the job handle, err := driver.Start(r.ctx, r.task) if err != nil { r.logger.Printf("[ERR] client: failed to start task '%s' for alloc '%s': %v", r.task.Name, r.alloc.ID, err) return err } r.handleLock.Lock() r.handle = handle r.handleLock.Unlock() go r.collectResourceUsageStats(stopCollection) return nil }