From b09049c08ed6f12c27305852b22b27a634edd7c9 Mon Sep 17 00:00:00 2001 From: Keith Woods Date: Wed, 28 Sep 2022 20:53:37 +0800 Subject: [PATCH] Fixing an issue with Terminal health status aggregation --- .../esp-js/src/system/health/aggregateHealthIndicator.ts | 8 ++++---- .../tests/system/health/aggregateHealthIndicatorTests.ts | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/esp-js/src/system/health/aggregateHealthIndicator.ts b/packages/esp-js/src/system/health/aggregateHealthIndicator.ts index bc91f892..c56fa578 100644 --- a/packages/esp-js/src/system/health/aggregateHealthIndicator.ts +++ b/packages/esp-js/src/system/health/aggregateHealthIndicator.ts @@ -177,11 +177,11 @@ export class AggregateHealthIndicator extends DisposableBase implements HealthIn // Once Unknown, the overall status stays as Unknown. // If there are no Terminal or Unknowns, but some unhealthy the overall status is Unhealthy. // else Healthy - if (healthIndicatorHealth.status === HealthStatus.Terminal) { + if (health.currentStatus === HealthStatus.Terminal || healthIndicatorHealth.status === HealthStatus.Terminal) { health.isTerminal(); - } if (healthIndicatorHealth.status === HealthStatus.Unknown) { + } else if (health.currentStatus === HealthStatus.Unknown || healthIndicatorHealth.status === HealthStatus.Unknown) { health.isUnknown(); - } else if (health.currentStatus !== HealthStatus.Unknown && healthIndicatorHealth.status === HealthStatus.Unhealthy) { + } else if (healthIndicatorHealth.status === HealthStatus.Unhealthy) { health.isUnhealthy(); } if (healthIndicatorHealth.reasons && healthIndicatorHealth.reasons.length > 0) { @@ -204,7 +204,7 @@ export class AggregateHealthIndicator extends DisposableBase implements HealthIn if (newHealth.status === HealthStatus.Terminal) { this._log.error(message); } else if (newHealth.status === HealthStatus.Unhealthy) { - this._log.warn(message); + this._log.error(message); } else { this._log.info(message); } diff --git a/packages/esp-js/tests/system/health/aggregateHealthIndicatorTests.ts b/packages/esp-js/tests/system/health/aggregateHealthIndicatorTests.ts index c9ab64cc..06b128ae 100644 --- a/packages/esp-js/tests/system/health/aggregateHealthIndicatorTests.ts +++ b/packages/esp-js/tests/system/health/aggregateHealthIndicatorTests.ts @@ -161,6 +161,7 @@ describe('AggregateHealthIndicator', () => { [HealthStatus.Terminal, HealthStatus.Healthy, HealthStatus.Healthy, HealthStatus.Terminal], [HealthStatus.Healthy, HealthStatus.Terminal, HealthStatus.Healthy, HealthStatus.Terminal], [HealthStatus.Healthy, HealthStatus.Healthy, HealthStatus.Terminal, HealthStatus.Terminal], + [HealthStatus.Unknown, HealthStatus.Healthy, HealthStatus.Terminal, HealthStatus.Terminal], [undefined, HealthStatus.Healthy, HealthStatus.Healthy, HealthStatus.Unknown], [HealthStatus.Healthy, undefined, HealthStatus.Healthy, HealthStatus.Unknown],