From bfdb1454e3186cd7a2a6b10f4c4bdde9d4a00935 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Wed, 3 Sep 2025 14:31:45 +0200 Subject: [PATCH 1/7] Redirect user to all envs rather than single one --- Control/public/environment/Environment.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Control/public/environment/Environment.js b/Control/public/environment/Environment.js index 01c5a7a87..6e9db1d7e 100644 --- a/Control/public/environment/Environment.js +++ b/Control/public/environment/Environment.js @@ -132,7 +132,9 @@ export default class Environment extends Observable { } else { const { id } = result; this.itemNew = RemoteData.notAsked(); - this.model.router.go(`?page=environment&id=${id}`); + // Users cannot be redirected to specific environment as it does not exist in + // ECS until it becomes active, thus users would get a NotFound reply from ECS + this.model.router.go(`?page=environments`); } } From 97118288fe3fee6481c6493e98ef7d28315b3455 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Wed, 3 Sep 2025 14:32:34 +0200 Subject: [PATCH 2/7] Bump COG --- Control/lib/common/kvStore/runtime.enum.js | 2 +- Control/lib/kafka/enums/consumerGroups.enum.js | 10 +++++----- Control/package-lock.json | 4 ++-- Control/package.json | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Control/lib/common/kvStore/runtime.enum.js b/Control/lib/common/kvStore/runtime.enum.js index 20bc2e909..4c966a4e9 100644 --- a/Control/lib/common/kvStore/runtime.enum.js +++ b/Control/lib/common/kvStore/runtime.enum.js @@ -21,7 +21,7 @@ const RUNTIME_COMPONENT = Object.freeze({ PDP_VERSION: 'aliecs/defaults', COG: 'COG', - COG_V1: 'COG_V1', + COG_V1: 'COG-v1', }); /** diff --git a/Control/lib/kafka/enums/consumerGroups.enum.js b/Control/lib/kafka/enums/consumerGroups.enum.js index 18ca02b30..00f7c7a00 100644 --- a/Control/lib/kafka/enums/consumerGroups.enum.js +++ b/Control/lib/kafka/enums/consumerGroups.enum.js @@ -16,11 +16,11 @@ * @returns {Object} - the object containing the consumer groups */ exports.ConsumerGroups = Object.freeze({ - ENVIRONMENT: 'cog-environment', + ENVIRONMENT: 'cog-environment-localo', INTEGRATED_SERVICE: { - DCS: 'cog-dcs-integrated-service', - ODC: 'cog-odc-integrated-service' + DCS: 'cog-dcs-integrated-service-local', + ODC: 'cog-odc-integrated-service-local', }, - RUN: 'cog-run', - TASK: 'cog-task', + RUN: 'cog-run-local', + TASK: 'cog-task-local', }); diff --git a/Control/package-lock.json b/Control/package-lock.json index 6893e9e7d..f64c3798c 100644 --- a/Control/package-lock.json +++ b/Control/package-lock.json @@ -1,12 +1,12 @@ { "name": "@aliceo2/control", - "version": "1.80.0", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@aliceo2/control", - "version": "1.80.0", + "version": "2.0.0", "bundleDependencies": [ "@aliceo2/web-ui", "@grpc/grpc-js", diff --git a/Control/package.json b/Control/package.json index 92ffd90ed..51e0d2a10 100644 --- a/Control/package.json +++ b/Control/package.json @@ -1,6 +1,6 @@ { "name": "@aliceo2/control", - "version": "1.80.0", + "version": "2.0.0", "description": "ALICE O2 Control GUI", "author": "George Raduta", "contributors": [ From 8f3de2fbdf9622a0962c2ade7a663c536a7d71ca Mon Sep 17 00:00:00 2001 From: George Raduta Date: Wed, 3 Sep 2025 14:34:34 +0200 Subject: [PATCH 3/7] Revert local dev change --- Control/lib/kafka/enums/consumerGroups.enum.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Control/lib/kafka/enums/consumerGroups.enum.js b/Control/lib/kafka/enums/consumerGroups.enum.js index 00f7c7a00..91dbf6f2a 100644 --- a/Control/lib/kafka/enums/consumerGroups.enum.js +++ b/Control/lib/kafka/enums/consumerGroups.enum.js @@ -16,11 +16,11 @@ * @returns {Object} - the object containing the consumer groups */ exports.ConsumerGroups = Object.freeze({ - ENVIRONMENT: 'cog-environment-localo', + ENVIRONMENT: 'cog-environment', INTEGRATED_SERVICE: { - DCS: 'cog-dcs-integrated-service-local', - ODC: 'cog-odc-integrated-service-local', + DCS: 'cog-dcs-integrated-service', + ODC: 'cog-odc-integrated-service', }, - RUN: 'cog-run-local', - TASK: 'cog-task-local', + RUN: 'cog-run', + TASK: 'cog-task', }); From 6d742fee36c2ec9a2b462c7f0b7387a037155cf1 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Wed, 3 Sep 2025 14:36:30 +0200 Subject: [PATCH 4/7] Fix lint and test of front-end redirection --- Control/public/environment/Environment.js | 1 - Control/test/public/page-new-environment-mocha.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Control/public/environment/Environment.js b/Control/public/environment/Environment.js index 6e9db1d7e..bc04f719e 100644 --- a/Control/public/environment/Environment.js +++ b/Control/public/environment/Environment.js @@ -130,7 +130,6 @@ export default class Environment extends Observable { this.itemNew = RemoteData.failure(result.message); this.notify(); } else { - const { id } = result; this.itemNew = RemoteData.notAsked(); // Users cannot be redirected to specific environment as it does not exist in // ECS until it becomes active, thus users would get a NotFound reply from ECS diff --git a/Control/test/public/page-new-environment-mocha.js b/Control/test/public/page-new-environment-mocha.js index 6b2d2f5b2..42105d1f0 100644 --- a/Control/test/public/page-new-environment-mocha.js +++ b/Control/test/public/page-new-environment-mocha.js @@ -440,7 +440,7 @@ describe('`pageNewEnvironment` test-suite', async () => { waitUntil: 'networkidle0', }); const location = await page.evaluate(() => window.location); - assert.strictEqual(location.search, '?page=environment&id=6f6d6387-6577-11e8-993a-f07959157220&panel=general'); + assert.strictEqual(location.search, '?page=environments'); assert.ok(calls['newEnvironmentAsync']); }); From b367a051a7acb6737bb3695ed2345ad6f1284199 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Wed, 3 Sep 2025 16:25:54 +0200 Subject: [PATCH 5/7] Keep environments in cache until acknowledged --- Control/lib/services/Environment.service.js | 4 ---- .../lib/services/environment/EnvironmentCache.service.js | 7 +++++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Control/lib/services/Environment.service.js b/Control/lib/services/Environment.service.js index 18e8463c6..405f08718 100644 --- a/Control/lib/services/Environment.service.js +++ b/Control/lib/services/Environment.service.js @@ -71,10 +71,6 @@ class EnvironmentService { throw grpcErrorToNativeError(error); } try { - if (!environments || environments.length === 0) { - this._broadcastService.broadcast(ENVIRONMENTS_OVERVIEW, []); - return []; - } const activeEnvironmentList = []; for (const { id } of environments) { let environment; diff --git a/Control/lib/services/environment/EnvironmentCache.service.js b/Control/lib/services/environment/EnvironmentCache.service.js index 8320f8a59..e09a7413b 100644 --- a/Control/lib/services/environment/EnvironmentCache.service.js +++ b/Control/lib/services/environment/EnvironmentCache.service.js @@ -252,14 +252,17 @@ class EnvironmentCacheService { if (!cachedEnvironment.rootRole) { cachedEnvironment.rootRole = environmentEvent.workflowTemplateInfoName; } - this._environments.set(id, cachedEnvironment); + + this.addOrUpdateEnvironment(cachedEnvironment, false); if ( transition?.name === EnvironmentTransitionType.DESTROY && state === EnvironmentState.DONE && - message === ECS_DESTROY_TRANSITION_DONE_MESSAGE + message === ECS_DESTROY_TRANSITION_DONE_MESSAGE && + !cachedEnvironment.deploymentError ) { // That is, if the environment successfully ended the DESTROY transition + // while not having a deployment error this.removeEnvironmentById(id); } From 5874eff5ebab99a0e5580e3e98692579ec5a335c Mon Sep 17 00:00:00 2001 From: George Raduta Date: Wed, 3 Sep 2025 16:26:10 +0200 Subject: [PATCH 6/7] Patch ECS GUI --- Control/lib/api.js | 2 +- Control/lib/kafka/AliEcsSynchronizer.js | 3 +++ Control/lib/kafka/enums/consumerGroups.enum.js | 10 +++++----- Control/package-lock.json | 4 ++-- Control/package.json | 2 +- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Control/lib/api.js b/Control/lib/api.js index d77a5c6d2..00bf4e403 100644 --- a/Control/lib/api.js +++ b/Control/lib/api.js @@ -147,7 +147,7 @@ module.exports.setup = (http, ws) => { if (config.kafka && config.kafka?.enable) { try { const kafkaClient = new Kafka({ - clientId: 'control-gui', + clientId: 'control-gui-local', brokers: config.kafka.brokers, retry: { retries: Infinity }, logLevel: logLevel.NOTHING, diff --git a/Control/lib/kafka/AliEcsSynchronizer.js b/Control/lib/kafka/AliEcsSynchronizer.js index d24723573..5603ae762 100644 --- a/Control/lib/kafka/AliEcsSynchronizer.js +++ b/Control/lib/kafka/AliEcsSynchronizer.js @@ -202,6 +202,9 @@ class AliEcsSynchronizer { ); return; } + console.log('environment event handler: BEGIN---------') + console.log(eventMessage); + console.log('environment event handler: END---------') const environmentEvent = fromEcsEventToEnvironmentEvent(eventMessage); environmentEvent.timestamp = adaptInt64ToNumber(eventMessage.timestamp); this._eventEmitter.emit(ENVIRONMENTS_TRACK, environmentEvent); diff --git a/Control/lib/kafka/enums/consumerGroups.enum.js b/Control/lib/kafka/enums/consumerGroups.enum.js index 91dbf6f2a..5deb4df03 100644 --- a/Control/lib/kafka/enums/consumerGroups.enum.js +++ b/Control/lib/kafka/enums/consumerGroups.enum.js @@ -16,11 +16,11 @@ * @returns {Object} - the object containing the consumer groups */ exports.ConsumerGroups = Object.freeze({ - ENVIRONMENT: 'cog-environment', + ENVIRONMENT: 'cog-environment-local', INTEGRATED_SERVICE: { - DCS: 'cog-dcs-integrated-service', - ODC: 'cog-odc-integrated-service', + DCS: 'cog-dcs-integrated-service-local', + ODC: 'cog-odc-integrated-service-local', }, - RUN: 'cog-run', - TASK: 'cog-task', + RUN: 'cog-run-local', + TASK: 'cog-task-local', }); diff --git a/Control/package-lock.json b/Control/package-lock.json index f64c3798c..00706ad0b 100644 --- a/Control/package-lock.json +++ b/Control/package-lock.json @@ -1,12 +1,12 @@ { "name": "@aliceo2/control", - "version": "2.0.0", + "version": "2.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@aliceo2/control", - "version": "2.0.0", + "version": "2.0.1", "bundleDependencies": [ "@aliceo2/web-ui", "@grpc/grpc-js", diff --git a/Control/package.json b/Control/package.json index 51e0d2a10..eecefac80 100644 --- a/Control/package.json +++ b/Control/package.json @@ -1,6 +1,6 @@ { "name": "@aliceo2/control", - "version": "2.0.0", + "version": "2.0.1", "description": "ALICE O2 Control GUI", "author": "George Raduta", "contributors": [ From b62d90fb76548430e56ff8c70f983cb48c0a9bd5 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Wed, 3 Sep 2025 16:27:51 +0200 Subject: [PATCH 7/7] Remove local changes --- Control/lib/api.js | 2 +- Control/lib/kafka/AliEcsSynchronizer.js | 3 --- Control/lib/kafka/enums/consumerGroups.enum.js | 10 +++++----- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Control/lib/api.js b/Control/lib/api.js index 00bf4e403..d77a5c6d2 100644 --- a/Control/lib/api.js +++ b/Control/lib/api.js @@ -147,7 +147,7 @@ module.exports.setup = (http, ws) => { if (config.kafka && config.kafka?.enable) { try { const kafkaClient = new Kafka({ - clientId: 'control-gui-local', + clientId: 'control-gui', brokers: config.kafka.brokers, retry: { retries: Infinity }, logLevel: logLevel.NOTHING, diff --git a/Control/lib/kafka/AliEcsSynchronizer.js b/Control/lib/kafka/AliEcsSynchronizer.js index 5603ae762..d24723573 100644 --- a/Control/lib/kafka/AliEcsSynchronizer.js +++ b/Control/lib/kafka/AliEcsSynchronizer.js @@ -202,9 +202,6 @@ class AliEcsSynchronizer { ); return; } - console.log('environment event handler: BEGIN---------') - console.log(eventMessage); - console.log('environment event handler: END---------') const environmentEvent = fromEcsEventToEnvironmentEvent(eventMessage); environmentEvent.timestamp = adaptInt64ToNumber(eventMessage.timestamp); this._eventEmitter.emit(ENVIRONMENTS_TRACK, environmentEvent); diff --git a/Control/lib/kafka/enums/consumerGroups.enum.js b/Control/lib/kafka/enums/consumerGroups.enum.js index 5deb4df03..91dbf6f2a 100644 --- a/Control/lib/kafka/enums/consumerGroups.enum.js +++ b/Control/lib/kafka/enums/consumerGroups.enum.js @@ -16,11 +16,11 @@ * @returns {Object} - the object containing the consumer groups */ exports.ConsumerGroups = Object.freeze({ - ENVIRONMENT: 'cog-environment-local', + ENVIRONMENT: 'cog-environment', INTEGRATED_SERVICE: { - DCS: 'cog-dcs-integrated-service-local', - ODC: 'cog-odc-integrated-service-local', + DCS: 'cog-dcs-integrated-service', + ODC: 'cog-odc-integrated-service', }, - RUN: 'cog-run-local', - TASK: 'cog-task-local', + RUN: 'cog-run', + TASK: 'cog-task', });