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
+5 -2
View File
@@ -28,6 +28,7 @@ import (
"github.com/fission/fission/pkg/generated/clientset/versioned"
"github.com/fission/fission/pkg/mqtrigger/messageQueue"
"github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager"
"github.com/fission/fission/pkg/utils/metrics"
)
@@ -78,7 +79,7 @@ func MakeMessageQueueTriggerManager(logger *zap.Logger,
return &mqTriggerMgr
}
func (mqt *MessageQueueTriggerManager) Run(ctx context.Context) error {
func (mqt *MessageQueueTriggerManager) Run(ctx context.Context, mgr manager.Interface) error {
go mqt.service()
for _, informer := range utils.GetInformersForNamespaces(mqt.fissionClient, time.Minute*30, fv1.MessageQueueResource) {
_, err := informer.AddEventHandler(mqt.mqtInformerHandlers())
@@ -90,7 +91,9 @@ func (mqt *MessageQueueTriggerManager) Run(ctx context.Context) error {
mqt.logger.Fatal("failed to wait for caches to sync")
}
}
go metrics.ServeMetrics(ctx, "mqtrigger", mqt.logger)
mgr.Add(ctx, func(ctx context.Context) {
metrics.ServeMetrics(ctx, "mqtrigger", mqt.logger, mgr)
})
return nil
}