diff --git a/shell/components/nav/__tests__/TopLevelMenu.test.ts b/shell/components/nav/__tests__/TopLevelMenu.test.ts index 0d891c0a5e..c0908d1161 100644 --- a/shell/components/nav/__tests__/TopLevelMenu.test.ts +++ b/shell/components/nav/__tests__/TopLevelMenu.test.ts @@ -727,13 +727,13 @@ describe('topLevelMenu', () => { nameDisplay: 'cluster1', id: 'an-id1', mgmt: { id: 'an-id1' }, - isReady: true + canExplore: true }, { nameDisplay: 'cluster2', id: 'an-id2', mgmt: { id: 'an-id2' }, - isReady: true + canExplore: true } ]) } @@ -786,7 +786,7 @@ describe('topLevelMenu', () => { nameDisplay: 'cluster1', id: 'an-id1', mgmt: { id: 'an-id1' }, - isReady: true + canExplore: true } ]); @@ -814,7 +814,7 @@ describe('topLevelMenu', () => { nameDisplay: 'cluster1', id: 'an-id1', mgmt: { id: 'an-id1' }, - isReady: true + canExplore: true } ]); diff --git a/shell/plugins/steve/subscribe.js b/shell/plugins/steve/subscribe.js index 3fd5e46dac..3f8c4a1071 100644 --- a/shell/plugins/steve/subscribe.js +++ b/shell/plugins/steve/subscribe.js @@ -469,8 +469,10 @@ const sharedActions = { const worker = (this.$workers || {})[getters.storeName]; if (worker) { + const storeName = getters.storeName; + worker.postMessage({ destroyWorker: true }); // we're only passing the boolean here because the key needs to be something truthy to ensure it's passed on the object. - cleanupTasks.push(waitFor(() => !this.$workers[getters.storeName], 'Worker is destroyed')); + cleanupTasks.push(waitFor(() => !this.$workers?.[storeName], 'Worker to be destroyed', 30000, 10, true)); } if ( socket ) { diff --git a/shell/store/index.js b/shell/store/index.js index 1899393e16..690b5790ca 100644 --- a/shell/store/index.js +++ b/shell/store/index.js @@ -1041,6 +1041,8 @@ export const actions = { // This is a workaround for a timing issue where the mgmt cluster schema may not be available // Try and wait until the schema exists before proceeding await dispatch('management/waitForSchema', { type: MANAGEMENT.CLUSTER }); + // Similarly to above, we somehow get here without everything in management land being ready. FF needed to determine pagination state + await dispatch('management/waitForHaveAll', { type: MANAGEMENT.FEATURE }); // If SSP is on we won't have requested all clusters if (!paginateClusters({ rootGetters, state })) {