fix: avoid listener worker leak

This commit is contained in:
Qu Xuan
2021-04-01 17:22:34 +08:00
parent c34d6984d5
commit 2a4e808792
2 changed files with 8 additions and 4 deletions
+2 -2
View File
@@ -30,7 +30,7 @@ type IServiceCatalogChangeListener interface {
func (cli *Client) RegisterCatalogListener(l IServiceCatalogChangeListener) {
cli.catalogListeners = append(cli.catalogListeners, l)
if cli.GetServiceCatalog() != nil {
cli.listenerWorker.Run(func() {
listenerWorker.Run(func() {
l.OnServiceCatalogChange(cli.GetServiceCatalog())
}, nil, nil)
}
@@ -38,7 +38,7 @@ func (cli *Client) RegisterCatalogListener(l IServiceCatalogChangeListener) {
func (cli *Client) SetServiceCatalog(catalog IServiceCatalog) {
cli._serviceCatalog = catalog
cli.listenerWorker.Run(func() {
listenerWorker.Run(func() {
for i := range cli.catalogListeners {
cli.catalogListeners[i].OnServiceCatalogChange(catalog)
}
+6 -2
View File
@@ -37,6 +37,8 @@ import (
"yunion.io/x/onecloud/pkg/util/seclib2"
)
var listenerWorker *appsrv.SWorkerManager
type Client struct {
authUrl string
timeout int
@@ -46,7 +48,10 @@ type Client struct {
_serviceCatalog IServiceCatalog
catalogListeners []IServiceCatalogChangeListener
listenerWorker *appsrv.SWorkerManager
}
func init() {
listenerWorker = appsrv.NewWorkerManager("client_catalog_listener_worker", 1, 2048, false)
}
func NewClient(authUrl string, timeout int, debug bool, insecure bool, certFile, keyFile string) *Client {
@@ -82,7 +87,6 @@ func NewClient(authUrl string, timeout int, debug bool, insecure bool, certFile,
},
}
client.listenerWorker = appsrv.NewWorkerManager("client_catalog_listener_worker", 1, 2048, false)
return &client
}