added manger to keep track of go routines in the services (#2869)

- added manager to wait for all go routines to end before exit
- code refactor
- renamed Manafer to Interface and GoRoutineManager to GroupManager
- replaced some go routine calls with manager Add func
- added unit tests for manager
This commit is contained in:
Vardhaman Surana
2023-11-07 15:30:48 +05:30
committed by GitHub
parent 27132975c4
commit 2a40b4538c
24 changed files with 283 additions and 67 deletions
+7 -2
View File
@@ -32,6 +32,7 @@ import (
"github.com/fission/fission/pkg/cache"
"github.com/fission/fission/pkg/generated/clientset/versioned"
"github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager"
"github.com/fission/fission/pkg/utils/metrics"
)
@@ -308,8 +309,12 @@ func (pkgw *packageWatcher) packageInformerHandler(ctx context.Context) k8sCache
}
}
func (pkgw *packageWatcher) Run(ctx context.Context) error {
go metrics.ServeMetrics(ctx, "buildermgr", pkgw.logger)
func (pkgw *packageWatcher) Run(ctx context.Context, mgr manager.Interface) error {
mgr.Add(ctx, func(ctx context.Context) {
metrics.ServeMetrics(ctx, "buildermgr", pkgw.logger, mgr)
})
for _, podInformer := range pkgw.podInformer {
go podInformer.Run(ctx.Done())
}