From f44a2fe5420fe9be6c322afca0458bf41c816dbc Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 25 Jun 2026 06:19:54 +0000 Subject: [PATCH] Construct the error Log per request instead of sharing a singleton The `log` resource was registered on the root di Container, which caches the factory result. With enable_coroutine on, that single Log instance was shared across concurrent requests, so error context (namespace, message, tags) from one request could bleed into another. The error action is the only consumer of `log`, so build a fresh Log inside it (matching how Appwrite's worker/cli error handlers construct their own Log) and drop the shared resource registration. --- src/Geo/Modules/Core/Http/Error.php | 7 +++---- src/Geo/Server/Server.php | 3 --- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/Geo/Modules/Core/Http/Error.php b/src/Geo/Modules/Core/Http/Error.php index f5ca9cb..bb65fe5 100644 --- a/src/Geo/Modules/Core/Http/Error.php +++ b/src/Geo/Modules/Core/Http/Error.php @@ -29,13 +29,12 @@ public function __construct() ->inject('error') ->inject('logger') ->inject('response') - ->inject('log') - ->callback(fn ($route, $error, $logger, $response, $log) => $this->action($route, $error, $logger, $response, $log)); + ->callback(fn ($route, $error, $logger, $response) => $this->action($route, $error, $logger, $response)); } - public function action(?Route $route, Throwable $error, ?Logger $logger, Response $response, Log $log): void + public function action(?Route $route, Throwable $error, ?Logger $logger, Response $response): void { - $this->logError($log, $error, "httpError", $logger, $route); + $this->logError(new Log(), $error, "httpError", $logger, $route); $version = System::getEnv('GEO_VERSION', 'UNKNOWN'); $message = $error->getMessage(); diff --git a/src/Geo/Server/Server.php b/src/Geo/Server/Server.php index a8878fc..42d2f64 100644 --- a/src/Geo/Server/Server.php +++ b/src/Geo/Server/Server.php @@ -15,7 +15,6 @@ use Utopia\Logger\Adapter\LogOwl; use Utopia\Logger\Adapter\Raygun; use Utopia\Logger\Adapter\Sentry; -use Utopia\Logger\Log; use Utopia\Logger\Logger; use Utopia\Platform\Service; use Utopia\System\System; @@ -109,8 +108,6 @@ protected function initResources(): void return $logger; }); - - $this->resources->set('log', fn () => new Log()); } protected function initPlatform(): void