From d5c8da20f8805199e920ea5afbd9cdb39a078e40 Mon Sep 17 00:00:00 2001 From: Janis Date: Wed, 13 May 2026 14:42:12 +0200 Subject: [PATCH] fix: update grpcServer variable to use Instance wrapper and add optional access method --- .../coordinator/service/HealthMonitor.scala | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) 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 fb90d1a..1b31f17 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 @@ -39,7 +39,7 @@ class HealthMonitor: private var meterRegistry: MeterRegistry = uninitialized @Inject - private var grpcServer: CoordinatorGrpcServer = uninitialized + private var grpcServerInstance: Instance[CoordinatorGrpcServer] = uninitialized @Inject private var failoverService: FailoverService = uninitialized @@ -52,6 +52,10 @@ class HealthMonitor: if kubeClientInstance.isUnsatisfied then None else Some(kubeClientInstance.get()) + private def grpcServerOpt: Option[CoordinatorGrpcServer] = + if grpcServerInstance.isUnsatisfied then None + else Some(grpcServerInstance.get()) + def setRedisPrefix(prefix: String): Unit = redisPrefix = prefix @@ -179,15 +183,17 @@ class HealthMonitor: private def validateStartupInstances(timeoutMs: Long): Unit = Thread.sleep(timeoutMs) - instanceRegistry.getAllInstances.foreach { inst => - if !grpcServer.hasActiveStream(inst.instanceId) then - log.warnf( - "Startup: instance %s did not reconnect within %dms — evicting", - inst.instanceId, - timeoutMs, - ) - instanceRegistry.removeInstance(inst.instanceId) - deleteK8sPod(inst.instanceId) + grpcServerOpt.foreach { grpcServer => + instanceRegistry.getAllInstances.foreach { inst => + if !grpcServer.hasActiveStream(inst.instanceId) then + log.warnf( + "Startup: instance %s did not reconnect within %dms — evicting", + inst.instanceId, + timeoutMs, + ) + instanceRegistry.removeInstance(inst.instanceId) + deleteK8sPod(inst.instanceId) + } } private def handlePodTerminating(pod: Pod): Unit =