From 1762c4f4916308d155ff565db6475ab6687c65b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Wed, 24 May 2023 18:29:23 +0200 Subject: [PATCH 1/4] Improve logs --- app/workers/functions.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/workers/functions.php b/app/workers/functions.php index 31e64a2bb4..1e1a75d92b 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -40,6 +40,8 @@ Server::setResource('execute', function () { string $eventData = null, string $executionId = null, ) { + $error = null; // Used to re-throw at the end to trigger Logger (Sentry) + $user ??= new Document(); $functionId = $function->getId(); $deploymentId = $function->getAttribute('deployment', ''); @@ -157,6 +159,8 @@ Server::setResource('execute', function () { Console::error($th->getFile()); Console::error($th->getLine()); Console::error($th->getMessage()); + + $error = $th->getMessage(); } $execution = $dbForProject->updateDocument('executions', $executionId, $execution); @@ -217,6 +221,11 @@ Server::setResource('execute', function () { ->setParam('networkResponseSize', 0) ->submit(); } + + if(!empty($error)) { + $projectId = $project->getId(); + throw new Exception("Error in project #{$projectId}, function #{$functionId}: " . $error); + } }; }); From b81e9ffd4742fbe3c82ecb0d3da7a4802e39dd2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Wed, 24 May 2023 18:32:03 +0200 Subject: [PATCH 2/4] Fix format --- app/workers/functions.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/workers/functions.php b/app/workers/functions.php index 1e1a75d92b..cbd54cb4da 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -41,7 +41,7 @@ Server::setResource('execute', function () { string $executionId = null, ) { $error = null; // Used to re-throw at the end to trigger Logger (Sentry) - + $user ??= new Document(); $functionId = $function->getId(); $deploymentId = $function->getAttribute('deployment', ''); @@ -222,7 +222,7 @@ Server::setResource('execute', function () { ->submit(); } - if(!empty($error)) { + if (!empty($error)) { $projectId = $project->getId(); throw new Exception("Error in project #{$projectId}, function #{$functionId}: " . $error); } From 02441540178fbc9c0697c78df011fc1d8f6213a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Wed, 24 May 2023 20:14:58 +0200 Subject: [PATCH 3/4] Apply new structure of logs --- app/worker.php | 7 ++++--- app/workers/functions.php | 14 +++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/worker.php b/app/worker.php index 8151381d4a..4ddda9bbc7 100644 --- a/app/worker.php +++ b/app/worker.php @@ -85,6 +85,8 @@ Server::setResource('queueForFunctions', function (Registry $register) { ); }, ['register']); +Server::setResource('log', fn() => new Log()); + Server::setResource('logger', function ($register) { return $register->get('logger'); }, ['register']); @@ -119,7 +121,8 @@ $server ->error() ->inject('error') ->inject('logger') - ->action(function (Throwable $error, Logger $logger) { + ->inject('log') + ->action(function (Throwable $error, Logger $logger, Log $log) { $version = App::getEnv('_APP_VERSION', 'UNKNOWN'); if ($error instanceof PDOException) { @@ -127,8 +130,6 @@ $server } if ($error->getCode() >= 500 || $error->getCode() === 0) { - $log = new Log(); - $log->setNamespace("appwrite-worker"); $log->setServer(\gethostname()); $log->setVersion($version); diff --git a/app/workers/functions.php b/app/workers/functions.php index cbd54cb4da..ffb6062ef5 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -20,6 +20,7 @@ use Utopia\Database\Permission; use Utopia\Database\Query; use Utopia\Database\Role; use Utopia\Database\Validator\Authorization; +use Utopia\Logger\Log; use Utopia\Queue\Server; Authorization::disable(); @@ -27,6 +28,7 @@ Authorization::setDefaultStatus(false); Server::setResource('execute', function () { return function ( + Log $log, Func $queueForFunctions, Database $dbForProject, Client $statsd, @@ -46,6 +48,9 @@ Server::setResource('execute', function () { $functionId = $function->getId(); $deploymentId = $function->getAttribute('deployment', ''); + $log->addExtra('functionId', $functionId); + $log->addExtra('projectId', $project->getId()); + /** Check if deployment exists */ $deployment = $dbForProject->getDocument('deployments', $deploymentId); @@ -223,8 +228,7 @@ Server::setResource('execute', function () { } if (!empty($error)) { - $projectId = $project->getId(); - throw new Exception("Error in project #{$projectId}, function #{$functionId}: " . $error); + throw new Exception($error); } }; }); @@ -235,7 +239,8 @@ $server->job() ->inject('queueForFunctions') ->inject('statsd') ->inject('execute') - ->action(function (Message $message, Database $dbForProject, Func $queueForFunctions, Client $statsd, callable $execute) { + ->inject('log') + ->action(function (Message $message, Database $dbForProject, Func $queueForFunctions, Client $statsd, callable $execute, Log $log) { $payload = $message->getPayload() ?? []; if (empty($payload)) { @@ -278,6 +283,7 @@ $server->job() } Console::success('Iterating function: ' . $function->getAttribute('name')); $execute( + log: $log, statsd: $statsd, dbForProject: $dbForProject, project: $project, @@ -306,6 +312,7 @@ $server->job() $execution = new Document($payload['execution'] ?? []); $user = new Document($payload['user'] ?? []); $execute( + log: $log, project: $project, function: $function, dbForProject: $dbForProject, @@ -322,6 +329,7 @@ $server->job() break; case 'schedule': $execute( + log: $log, project: $project, function: $function, dbForProject: $dbForProject, From 3614cb384abb5a076968213e764415fca83869d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Wed, 24 May 2023 21:07:41 +0200 Subject: [PATCH 4/4] Fix error logging --- app/worker.php | 5 +++-- app/workers/functions.php | 9 +++------ composer.lock | 12 ++++++------ docker-compose.yml | 2 ++ 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app/worker.php b/app/worker.php index 4ddda9bbc7..c4fd3a33d0 100644 --- a/app/worker.php +++ b/app/worker.php @@ -129,7 +129,7 @@ $server throw $error; } - if ($error->getCode() >= 500 || $error->getCode() === 0) { + if ($logger && ($error->getCode() >= 500 || $error->getCode() === 0)) { $log->setNamespace("appwrite-worker"); $log->setServer(\gethostname()); $log->setVersion($version); @@ -147,7 +147,8 @@ $server $isProduction = App::getEnv('_APP_ENV', 'development') === 'production'; $log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING); - $logger->addLog($log); + $responseCode = $logger->addLog($log); + Console::info('Usage stats log pushed with status code: ' . $responseCode); } Console::error('[Error] Type: ' . get_class($error)); diff --git a/app/workers/functions.php b/app/workers/functions.php index ffb6062ef5..e5542c9834 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -43,6 +43,7 @@ Server::setResource('execute', function () { string $executionId = null, ) { $error = null; // Used to re-throw at the end to trigger Logger (Sentry) + $errorCode = 0; $user ??= new Document(); $functionId = $function->getId(); @@ -160,12 +161,8 @@ Server::setResource('execute', function () { ->setAttribute('statusCode', $th->getCode()) ->setAttribute('stderr', $th->getMessage()); - Console::error($th->getTraceAsString()); - Console::error($th->getFile()); - Console::error($th->getLine()); - Console::error($th->getMessage()); - $error = $th->getMessage(); + $errorCode = $th->getCode(); } $execution = $dbForProject->updateDocument('executions', $executionId, $execution); @@ -228,7 +225,7 @@ Server::setResource('execute', function () { } if (!empty($error)) { - throw new Exception($error); + throw new Exception($error, $errorCode); } }; }); diff --git a/composer.lock b/composer.lock index 5349ca36b1..7043708ab6 100644 --- a/composer.lock +++ b/composer.lock @@ -2425,16 +2425,16 @@ }, { "name": "utopia-php/queue", - "version": "0.5.2", + "version": "0.5.3", "source": { "type": "git", "url": "https://github.com/utopia-php/queue.git", - "reference": "310271c5cd477541208d7fa74a4dea64df8e04a0" + "reference": "8e8b6cb27172713fe5d8b7b092ce68516caf129a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/queue/zipball/310271c5cd477541208d7fa74a4dea64df8e04a0", - "reference": "310271c5cd477541208d7fa74a4dea64df8e04a0", + "url": "https://api.github.com/repos/utopia-php/queue/zipball/8e8b6cb27172713fe5d8b7b092ce68516caf129a", + "reference": "8e8b6cb27172713fe5d8b7b092ce68516caf129a", "shasum": "" }, "require": { @@ -2480,9 +2480,9 @@ ], "support": { "issues": "https://github.com/utopia-php/queue/issues", - "source": "https://github.com/utopia-php/queue/tree/0.5.2" + "source": "https://github.com/utopia-php/queue/tree/0.5.3" }, - "time": "2023-03-07T08:54:10+00:00" + "time": "2023-05-24T19:06:04+00:00" }, { "name": "utopia-php/registry", diff --git a/docker-compose.yml b/docker-compose.yml index 591b051223..1734aafa8e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -482,6 +482,8 @@ services: - _APP_USAGE_STATS - DOCKERHUB_PULL_USERNAME - DOCKERHUB_PULL_PASSWORD + - _APP_LOGGING_CONFIG + - _APP_LOGGING_PROVIDER appwrite-worker-mails: entrypoint: worker-mails