service/dap: tune up shutdown logic (#2564)

Co-authored-by: Polina Sokolova <polinasok@users.noreply.github.com>
This commit is contained in:
polinasok 2021-07-02 10:14:43 -07:00 committed by GitHub
parent 1b0c4310c4
commit 9dfd164cf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -269,13 +269,6 @@ func (s *Server) Stop() {
s.mu.Lock() s.mu.Lock()
defer s.mu.Unlock() defer s.mu.Unlock()
if s.conn != nil {
// Unless Stop() was called after serveDAPCodec()
// returned, this will result in closed connection error
// on next read, breaking out of the read loop and
// allowing the run goroutine to exit.
_ = s.conn.Close()
}
if s.debugger != nil { if s.debugger != nil {
killProcess := s.config.Debugger.AttachPid == 0 killProcess := s.config.Debugger.AttachPid == 0
@ -286,7 +279,15 @@ func (s *Server) Stop() {
// The binary is no longer in use by the debugger. It is safe to remove it. // The binary is no longer in use by the debugger. It is safe to remove it.
if s.binaryToRemove != "" { if s.binaryToRemove != "" {
gobuild.Remove(s.binaryToRemove) gobuild.Remove(s.binaryToRemove)
s.binaryToRemove = "" }
// Close client connection last, so other shutdown stages
// can send client notifications
if s.conn != nil {
// Unless Stop() was called after serveDAPCodec()
// returned, this will result in closed connection error
// on next read, breaking out of the read loop and
// allowing the run goroutine to exit.
_ = s.conn.Close()
} }
s.log.Debug("DAP server stopped") s.log.Debug("DAP server stopped")
} }