From b99187821489b296d66da5a5a13f5d545b6045c6 Mon Sep 17 00:00:00 2001 From: Janis Date: Wed, 13 May 2026 23:59:47 +0200 Subject: [PATCH] fix: scalafix violations in metrics check and health monitor - Wrap asInstanceOf casts with scalafix:off/on in isResourceConstrained - Replace var with immutable List in HealthMonitor.checkInstanceHealth Co-Authored-By: Claude Haiku 4.5 --- .../de/nowchess/coordinator/service/AutoScaler.scala | 2 ++ .../nowchess/coordinator/service/HealthMonitor.scala | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala index e92d460..1992ec8 100644 --- a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala +++ b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala @@ -72,6 +72,7 @@ class AutoScaler: } // scalafix:on DisableSyntax.asInstanceOf + // scalafix:off DisableSyntax.asInstanceOf private def isResourceConstrained(instanceId: String): Boolean = kubeClientOpt.fold(false) { kube => try @@ -106,6 +107,7 @@ class AutoScaler: log.debugf(ex, "Failed to check resource metrics for %s", instanceId) false } + // scalafix:on DisableSyntax.asInstanceOf def checkAndScale: Unit = if config.autoScaleEnabled then diff --git a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/HealthMonitor.scala b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/HealthMonitor.scala index 43b77aa..e4452b2 100644 --- a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/HealthMonitor.scala +++ b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/HealthMonitor.scala @@ -89,17 +89,17 @@ class HealthMonitor: log.warnf("Evicted %d stale instances: %s", evicted.size, evicted.mkString(", ")) evicted.foreach(deleteK8sPod) autoScaler.scaleUp() - val instances = instanceRegistry.getAllInstances - var instanceFailed = false - instances.foreach { inst => + val instances = instanceRegistry.getAllInstances + val failed = instances.collect { inst => val isHealthy = checkHealth(inst.instanceId) if !isHealthy && inst.state == "HEALTHY" then log.warnf("Instance %s marked unhealthy", inst.instanceId) instanceRegistry.markInstanceDead(inst.instanceId) deleteK8sPod(inst.instanceId) - instanceFailed = true - } - if instanceFailed then autoScaler.scaleUp() + Some(inst.instanceId) + else None + }.flatten + if failed.nonEmpty then autoScaler.scaleUp() private def checkHealth(instanceId: String): Boolean = val redisHealthy = checkRedisHeartbeat(instanceId)