mirror of
				https://github.com/go-micro/go-micro.git
				synced 2025-10-30 23:27:41 +02:00 
			
		
		
		
	Stop LogStream if there is an error in k8s pod log streaming (#1469)
* Stop LogStream if there is an error in k8s pod log streaming * Locking stream Stops * PR comment
This commit is contained in:
		| @@ -4,6 +4,7 @@ import ( | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"sync" | ||||
|  | ||||
| 	"github.com/micro/go-micro/v2/debug/log" | ||||
| ) | ||||
| @@ -20,6 +21,7 @@ func write(l log.Record) error { | ||||
| type kubeStream struct { | ||||
| 	// the k8s log stream | ||||
| 	stream chan log.Record | ||||
| 	sync.Mutex | ||||
| 	// the stop chan | ||||
| 	stop chan bool | ||||
| } | ||||
| @@ -29,6 +31,8 @@ func (k *kubeStream) Chan() <-chan log.Record { | ||||
| } | ||||
|  | ||||
| func (k *kubeStream) Stop() error { | ||||
| 	k.Lock() | ||||
| 	defer k.Unlock() | ||||
| 	select { | ||||
| 	case <-k.stop: | ||||
| 		return nil | ||||
|   | ||||
| @@ -259,8 +259,9 @@ type logStream struct { | ||||
| 	tail    *tail.Tail | ||||
| 	service string | ||||
| 	stream  chan LogRecord | ||||
| 	stop    chan bool | ||||
| 	err     error | ||||
| 	sync.Mutex | ||||
| 	stop chan bool | ||||
| 	err  error | ||||
| } | ||||
|  | ||||
| func (l *logStream) Chan() chan LogRecord { | ||||
| @@ -272,6 +273,8 @@ func (l *logStream) Error() error { | ||||
| } | ||||
|  | ||||
| func (l *logStream) Stop() error { | ||||
| 	l.Lock() | ||||
| 	defer l.Unlock() | ||||
| 	// @todo seems like this is causing a hangup | ||||
| 	//err := l.tail.Stop() | ||||
| 	//if err != nil { | ||||
|   | ||||
| @@ -330,6 +330,7 @@ type kubeStream struct { | ||||
| 	// the k8s log stream | ||||
| 	stream chan runtime.LogRecord | ||||
| 	// the stop chan | ||||
| 	sync.Mutex | ||||
| 	stop chan bool | ||||
| 	err  error | ||||
| } | ||||
| @@ -343,6 +344,8 @@ func (k *kubeStream) Chan() chan runtime.LogRecord { | ||||
| } | ||||
|  | ||||
| func (k *kubeStream) Stop() error { | ||||
| 	k.Lock() | ||||
| 	defer k.Unlock() | ||||
| 	select { | ||||
| 	case <-k.stop: | ||||
| 		return nil | ||||
|   | ||||
| @@ -32,6 +32,7 @@ func (k *klog) podLogStream(podName string, stream *kubeStream) error { | ||||
|  | ||||
| 	if err != nil { | ||||
| 		stream.err = err | ||||
| 		stream.Stop() | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -95,8 +95,9 @@ func (s *svc) Logs(service *runtime.Service, options ...runtime.LogsOption) (run | ||||
| type serviceLogStream struct { | ||||
| 	service string | ||||
| 	stream  chan runtime.LogRecord | ||||
| 	stop    chan bool | ||||
| 	err     error | ||||
| 	sync.Mutex | ||||
| 	stop chan bool | ||||
| 	err  error | ||||
| } | ||||
|  | ||||
| func (l *serviceLogStream) Error() error { | ||||
| @@ -108,6 +109,8 @@ func (l *serviceLogStream) Chan() chan runtime.LogRecord { | ||||
| } | ||||
|  | ||||
| func (l *serviceLogStream) Stop() error { | ||||
| 	l.Lock() | ||||
| 	defer l.Unlock() | ||||
| 	select { | ||||
| 	case <-l.stop: | ||||
| 		return nil | ||||
|   | ||||
		Reference in New Issue
	
	Block a user