소스 검색

Exit syslog acquis only after server is dead (#1288)

Shivam Sandbhor 3 년 전
부모
커밋
c3dbe0080c
2개의 변경된 파일8개의 추가작업 그리고 7개의 파일을 삭제
  1. 2 1
      pkg/acquisition/modules/syslog/internal/syslogserver.go
  2. 6 6
      pkg/acquisition/modules/syslog/syslog.go

+ 2 - 1
pkg/acquisition/modules/syslog/internal/syslogserver.go

@@ -61,7 +61,7 @@ func (s *SyslogServer) StartServer() *tomb.Tomb {
 		for {
 			select {
 			case <-t.Dying():
-				s.Logger.Info("syslog server tomb is dying")
+				s.Logger.Info("Syslog server tomb is dying")
 				err := s.KillServer()
 				return err
 			default:
@@ -92,5 +92,6 @@ func (s *SyslogServer) KillServer() error {
 	if err != nil {
 		return errors.Wrap(err, "could not close UDP connection")
 	}
+	close(s.channel)
 	return nil
 }

+ 6 - 6
pkg/acquisition/modules/syslog/syslog.go

@@ -180,15 +180,15 @@ func (s *SyslogSource) buildLogFromSyslog(ts *time.Time, hostname *string,
 }
 
 func (s *SyslogSource) handleSyslogMsg(out chan types.Event, t *tomb.Tomb, c chan syslogserver.SyslogMessage) error {
+	killed := false
 	for {
 		select {
 		case <-t.Dying():
-			s.logger.Info("Syslog datasource is dying")
-			s.serverTomb.Kill(nil)
-			return s.serverTomb.Wait()
-		case <-s.serverTomb.Dying():
-			s.logger.Info("Syslog server is dying, exiting")
-			return nil
+			if !killed {
+				s.logger.Info("Syslog datasource is dying")
+				s.serverTomb.Kill(nil)
+				killed = true
+			}
 		case <-s.serverTomb.Dead():
 			s.logger.Info("Syslog server has exited")
 			return nil