mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-09-04 13:36:35 +02:00
cmd/ctrld: prevent race condition when ping socket control server
This commit is contained in:
+6
-9
@@ -1167,16 +1167,13 @@ func selfCheckStatus(s service.Service) service.Status {
|
|||||||
if curStatus != service.StatusRunning {
|
if curStatus != service.StatusRunning {
|
||||||
return curStatus
|
return curStatus
|
||||||
}
|
}
|
||||||
if _, err := cc.post("/", nil); err != nil {
|
if _, err := cc.post("/", nil); err == nil {
|
||||||
// Do not count attempt if the server is not ready yet.
|
// Server was started, stop pinging.
|
||||||
if errUrlConnRefused(err) {
|
break
|
||||||
bo.BackOff(ctx, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
mainLog.Load().Warn().Err(err).Msg("could not ping socket control server")
|
|
||||||
return service.StatusUnknown
|
|
||||||
}
|
}
|
||||||
break
|
// The socket control server is not ready yet, backoff for waiting it to be ready.
|
||||||
|
bo.BackOff(ctx, err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
resp, err := cc.post(startedPath, nil)
|
resp, err := cc.post(startedPath, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ func newControlServer(addr string) (*controlServer, error) {
|
|||||||
func (s *controlServer) start() error {
|
func (s *controlServer) start() error {
|
||||||
_ = os.Remove(s.addr)
|
_ = os.Remove(s.addr)
|
||||||
unixListener, err := net.Listen("unix", s.addr)
|
unixListener, err := net.Listen("unix", s.addr)
|
||||||
|
if l, ok := unixListener.(*net.UnixListener); ok {
|
||||||
|
l.SetUnlinkOnClose(true)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user