1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Prevent initializing clusters multiple times (#1950)

* Prevent initializing clusters multiple times

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Do not expose intializing to cluster state

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Convert initializing to observable and ensure it is set to false after init

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
Lauri Nevala 2021-01-15 16:11:41 +02:00 committed by GitHub
parent 83ed44f670
commit 0117cecc33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View File

@ -14,7 +14,7 @@ export class ClusterManager extends Singleton {
// auto-init clusters // auto-init clusters
autorun(() => { autorun(() => {
clusterStore.enabledClustersList.forEach(cluster => { clusterStore.enabledClustersList.forEach(cluster => {
if (!cluster.initialized) { if (!cluster.initialized && !cluster.initializing) {
logger.info(`[CLUSTER-MANAGER]: init cluster`, cluster.getMeta()); logger.info(`[CLUSTER-MANAGER]: init cluster`, cluster.getMeta());
cluster.init(port); cluster.init(port);
} }

View File

@ -84,6 +84,14 @@ export class Cluster implements ClusterModel, ClusterState {
whenInitialized = when(() => this.initialized); whenInitialized = when(() => this.initialized);
whenReady = when(() => this.ready); whenReady = when(() => this.ready);
/**
* Is cluster object initializinng on-going
*
* @observable
*/
@observable initializing = false;
/** /**
* Is cluster object initialized * Is cluster object initialized
* *
@ -273,6 +281,7 @@ export class Cluster implements ClusterModel, ClusterState {
*/ */
@action async init(port: number) { @action async init(port: number) {
try { try {
this.initializing = true;
this.contextHandler = new ContextHandler(this); this.contextHandler = new ContextHandler(this);
this.kubeconfigManager = await KubeconfigManager.create(this, this.contextHandler, port); this.kubeconfigManager = await KubeconfigManager.create(this, this.contextHandler, port);
this.kubeProxyUrl = `http://localhost:${port}${apiKubePrefix}`; this.kubeProxyUrl = `http://localhost:${port}${apiKubePrefix}`;
@ -287,6 +296,8 @@ export class Cluster implements ClusterModel, ClusterState {
id: this.id, id: this.id,
error: err, error: err,
}); });
} finally {
this.initializing = false;
} }
} }