mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
cmd/ctrld: prevent race condition when ping socket control server
This commit is contained in:
committed by
Cuong Manh Le
parent
e5389ffecb
commit
46e8d4fad7
@@ -1167,16 +1167,13 @@ func selfCheckStatus(s service.Service) service.Status {
|
||||
if curStatus != service.StatusRunning {
|
||||
return curStatus
|
||||
}
|
||||
if _, err := cc.post("/", nil); err != nil {
|
||||
// Do not count attempt if the server is not ready yet.
|
||||
if errUrlConnRefused(err) {
|
||||
bo.BackOff(ctx, err)
|
||||
continue
|
||||
}
|
||||
mainLog.Load().Warn().Err(err).Msg("could not ping socket control server")
|
||||
return service.StatusUnknown
|
||||
if _, err := cc.post("/", nil); err == nil {
|
||||
// Server was started, stop pinging.
|
||||
break
|
||||
}
|
||||
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)
|
||||
if err != nil {
|
||||
|
||||
@@ -35,6 +35,9 @@ func newControlServer(addr string) (*controlServer, error) {
|
||||
func (s *controlServer) start() error {
|
||||
_ = os.Remove(s.addr)
|
||||
unixListener, err := net.Listen("unix", s.addr)
|
||||
if l, ok := unixListener.(*net.UnixListener); ok {
|
||||
l.SetUnlinkOnClose(true)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user