mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
fix: avoid listener worker leak
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user