MCPcopy Create free account
hub / github.com/actiontech/dtle / StartTask

Method StartTask

driver/driver.go:571–615  ·  view source on GitHub ↗
(cfg *drivers.TaskConfig)

Source from the content-addressed store, hash-verified

569}
570
571func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drivers.DriverNetwork, error) {
572 d.logger.Info("StartTask", "ID", cfg.ID, "allocID", cfg.AllocID, "jobName", cfg.JobName, "taskName", cfg.Name)
573
574 err := common.ValidateJobName(cfg.JobName)
575 if err != nil {
576 return nil, nil, err
577 }
578
579 if _, ok := d.tasks.Get(cfg.ID); ok {
580 return nil, nil, fmt.Errorf("task with ID %q already started", cfg.ID)
581 }
582 d.logger.Debug("start dtle task 1")
583 var dtleTaskConfig common.DtleTaskConfig
584
585 if err := cfg.DecodeDriverConfig(&dtleTaskConfig); err != nil {
586 d.logger.Debug("start dtle task err")
587 return nil, nil, errors.Wrap(err, "DecodeDriverConfig")
588 }
589
590 if err := d.verifyDriverConfig(dtleTaskConfig); nil != err {
591 return nil, nil, fmt.Errorf("invalide driver config, errors: %v", err)
592 }
593 dtleTaskConfig.SetDefaultForEmpty()
594
595 handle := drivers.NewTaskHandle(taskHandleVersion)
596 handle.Config = cfg
597 driverState := TaskState{
598 TaskConfig: cfg,
599 DtleTaskConfig: &dtleTaskConfig,
600 StartedAt: time.Now().Round(time.Millisecond),
601 }
602 if err := handle.SetDriverState(&driverState); err != nil {
603 d.logger.Error("failed to start task, error setting driver state", "error", err)
604 return nil, nil, errors.Wrap(err, "SetDriverState")
605 }
606
607 h := newDtleTaskHandle(d.ctx, d.logger, cfg, drivers.TaskStateRunning, time.Now().Round(time.Millisecond))
608 h.driverConfig = &common.MySQLDriverConfig{DtleTaskConfig: dtleTaskConfig}
609 d.tasks.Set(cfg.ID, h)
610 AllocIdTaskNameToTaskHandler.Set(cfg.AllocID, cfg.Name, cfg.ID, h)
611
612 go h.run(d)
613
614 return handle, nil, nil
615}
616
617func (d *Driver) verifyDriverConfig(config common.DtleTaskConfig) error {
618 errMsgs := []string{}

Callers

nothing calls this directly

Calls 7

verifyDriverConfigMethod · 0.95
SetDefaultForEmptyMethod · 0.95
ValidateJobNameFunction · 0.92
newDtleTaskHandleFunction · 0.85
GetMethod · 0.80
runMethod · 0.80
SetMethod · 0.45

Tested by

no test coverage detected