MCPcopy
hub / github.com/tuna/tunasync / Start

Method Start

worker/runner.go:110–164  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

108}
109
110func (c *cmdJob) Start() error {
111 cg := c.provider.Cgroup()
112 var (
113 pipeR *os.File
114 pipeW *os.File
115 )
116 if cg != nil {
117 logger.Debugf("Preparing cgroup sync pipes for job %s", c.provider.Name())
118 var err error
119 pipeR, pipeW, err = os.Pipe()
120 if err != nil {
121 return err
122 }
123 c.cmd.ExtraFiles = []*os.File{pipeR}
124 defer pipeR.Close()
125 defer pipeW.Close()
126 }
127
128 logger.Debugf("Command start: %v", c.cmd.Args)
129 c.finished = make(chan empty, 1)
130
131 if err := c.cmd.Start(); err != nil {
132 return err
133 }
134 if cg != nil {
135 if err := pipeR.Close(); err != nil {
136 return err
137 }
138 if c.cmd == nil || c.cmd.Process == nil {
139 return errProcessNotStarted
140 }
141 pid := c.cmd.Process.Pid
142 if cg.cgCfg.isUnified {
143 if err := cg.cgMgrV2.AddProc(uint64(pid)); err != nil {
144 if errors.Is(err, syscall.ESRCH) {
145 logger.Infof("Write pid %d to cgroup failed: process vanished, ignoring", pid)
146 } else {
147 return err
148 }
149 }
150 } else {
151 if err := cg.cgMgrV1.Add(cgv1.Process{Pid: pid}); err != nil {
152 if errors.Is(err, syscall.ESRCH) {
153 logger.Infof("Write pid %d to cgroup failed: process vanished, ignoring", pid)
154 } else {
155 return err
156 }
157 }
158 }
159 if _, err := pipeW.WriteString(string(cmdCont)); err != nil {
160 return err
161 }
162 }
163 return nil
164}
165
166func (c *cmdJob) Wait() error {
167 c.Lock()

Callers

nothing calls this directly

Calls 6

DebugfMethod · 0.80
InfofMethod · 0.80
CgroupMethod · 0.65
NameMethod · 0.65
CloseMethod · 0.65
StartMethod · 0.65

Tested by

no test coverage detected