fix: restore watcher if channel is closed
This commit is contained in:
parent
6f91ad607f
commit
4d6b06efe7
@ -17,52 +17,54 @@ import (
|
|||||||
func (crd Crd) watchFlinkJobs(ch chan FlinkJobCrdEvent) {
|
func (crd Crd) watchFlinkJobs(ch chan FlinkJobCrdEvent) {
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
pkg.Logger.Debug("[crd] starting watch")
|
for {
|
||||||
watcher, err := crd.client.Watch(context.Background(), metaV1.ListOptions{})
|
pkg.Logger.Debug("[crd] starting watch")
|
||||||
if err != nil {
|
watcher, err := crd.client.Watch(context.Background(), metaV1.ListOptions{})
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
defer watcher.Stop()
|
|
||||||
namespace := os.Getenv("NAMESPACE")
|
|
||||||
pkg.Logger.Debug("[crd] [watch]", zap.String("namespace", namespace))
|
|
||||||
for event := range watcher.ResultChan() {
|
|
||||||
unstructuredJob := event.Object.(*unstructured.Unstructured)
|
|
||||||
unstructuredMap, _, err := unstructured.NestedMap(unstructuredJob.Object)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
pkg.Logger.Error("[crd] [watch]cannot create unstructured map", zap.Error(err))
|
panic(err)
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
job := &v1alpha1.FlinkJob{}
|
namespace := os.Getenv("NAMESPACE")
|
||||||
|
pkg.Logger.Debug("[crd] [watch]", zap.String("namespace", namespace))
|
||||||
err = runtime.DefaultUnstructuredConverter.FromUnstructured(unstructuredMap, job)
|
for event := range watcher.ResultChan() {
|
||||||
if err != nil {
|
unstructuredJob := event.Object.(*unstructured.Unstructured)
|
||||||
pkg.Logger.Error("[crd] [watch]cannot convert unstructured to structured", zap.Error(err))
|
unstructuredMap, _, err := unstructured.NestedMap(unstructuredJob.Object)
|
||||||
continue
|
if err != nil {
|
||||||
}
|
pkg.Logger.Error("[crd] [watch]cannot create unstructured map", zap.Error(err))
|
||||||
if job.Namespace != namespace {
|
continue
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
ch <- FlinkJobCrdEvent{
|
|
||||||
EventType: event.Type,
|
|
||||||
Job: job,
|
|
||||||
}
|
}
|
||||||
}()
|
job := &v1alpha1.FlinkJob{}
|
||||||
pkg.Logger.Debug("[crd] [watch] change in", zap.String("name", job.Name), zap.String("operation", string(event.Type)))
|
|
||||||
switch event.Type {
|
|
||||||
case watch.Bookmark:
|
|
||||||
case watch.Modified:
|
|
||||||
//pkg.Logger.Info("[crd] [watch] flink job modified", zap.String("jobName", job.GetName()))
|
|
||||||
crd.repsert(job)
|
|
||||||
case watch.Added:
|
|
||||||
//pkg.Logger.Info("[crd] [watch] new flink job created")
|
|
||||||
crd.repsert(job)
|
|
||||||
case watch.Deleted:
|
|
||||||
crd.remove(job.UID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
err = runtime.DefaultUnstructuredConverter.FromUnstructured(unstructuredMap, job)
|
||||||
|
if err != nil {
|
||||||
|
pkg.Logger.Error("[crd] [watch]cannot convert unstructured to structured", zap.Error(err))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if job.Namespace != namespace {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
ch <- FlinkJobCrdEvent{
|
||||||
|
EventType: event.Type,
|
||||||
|
Job: job,
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
pkg.Logger.Debug("[crd] [watch] change in", zap.String("name", job.Name), zap.String("operation", string(event.Type)))
|
||||||
|
switch event.Type {
|
||||||
|
case watch.Bookmark:
|
||||||
|
case watch.Modified:
|
||||||
|
//pkg.Logger.Info("[crd] [watch] flink job modified", zap.String("jobName", job.GetName()))
|
||||||
|
crd.repsert(job)
|
||||||
|
case watch.Added:
|
||||||
|
//pkg.Logger.Info("[crd] [watch] new flink job created")
|
||||||
|
crd.repsert(job)
|
||||||
|
case watch.Deleted:
|
||||||
|
crd.remove(job.UID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defer watcher.Stop()
|
||||||
|
pkg.Logger.Warn("[crd] [watch] Watcher stopped, restarting...")
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user