From 00cb06150e0ab4d639a2b677d4f6ac9b6ae33fa8 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Fri, 10 Oct 2025 10:12:59 +0200 Subject: [PATCH] fix: improve error logging and handling in ServerConnectionCheckJob for Hetzner server status --- app/Jobs/ServerConnectionCheckJob.php | 30 +++++++++++++-------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/app/Jobs/ServerConnectionCheckJob.php b/app/Jobs/ServerConnectionCheckJob.php index 5cb10146d..9dbce4bfe 100644 --- a/app/Jobs/ServerConnectionCheckJob.php +++ b/app/Jobs/ServerConnectionCheckJob.php @@ -91,6 +91,11 @@ public function handle() ]); } catch (\Throwable $e) { + + Log::error('ServerConnectionCheckJob failed', [ + 'error' => $e->getMessage(), + 'server_id' => $this->server->id, + ]); $this->server->settings->update([ 'is_reachable' => false, 'is_usable' => false, @@ -107,28 +112,21 @@ private function checkHetznerStatus(): void $serverData = $hetznerService->getServer($this->server->hetzner_server_id); $status = $serverData['status'] ?? null; - // Save status to database - $this->server->update(['hetzner_server_status' => $status]); - - // If Hetzner reports server is off, mark as unreachable - if ($status === 'off') { - $this->server->settings->update([ - 'is_reachable' => false, - 'is_usable' => false, - ]); - - Log::info('ServerConnectionCheck: Hetzner server is powered off', [ - 'server_id' => $this->server->id, - 'server_name' => $this->server->name, - 'hetzner_status' => $status, - ]); - } } catch (\Throwable $e) { Log::debug('ServerConnectionCheck: Hetzner status check failed', [ 'server_id' => $this->server->id, 'error' => $e->getMessage(), ]); } + if ($this->server->hetzner_server_status !== $status) { + $this->server->update(['hetzner_server_status' => $status]); + $this->server->hetzner_server_status = $status; + if ($status === 'off') { + ray('Server is powered off, marking as unreachable'); + throw new \Exception('Server is powered off'); + } + } + } private function checkConnection(): bool