From fdbb5b9810351e37279fce85778849847b9d8a4a Mon Sep 17 00:00:00 2001 From: Matej Baco Date: Wed, 16 Nov 2022 13:19:29 +0100 Subject: [PATCH] QA bug fixing --- app/workers/builds.php | 6 +- app/workers/functions.php | 95 +++++++++++------------- docker-compose.yml | 14 +++- src/Appwrite/Platform/Tasks/Schedule.php | 13 ++-- 4 files changed, 69 insertions(+), 59 deletions(-) diff --git a/app/workers/builds.php b/app/workers/builds.php index ed1c16e8b..48d430eaa 100644 --- a/app/workers/builds.php +++ b/app/workers/builds.php @@ -5,7 +5,6 @@ use Appwrite\Event\Func; use Appwrite\Messaging\Adapter\Realtime; use Appwrite\Resque\Worker; use Appwrite\Utopia\Response\Model\Deployment; -use Cron\CronExpression; use Executor\Executor; use Appwrite\Usage\Stats; use Utopia\Database\DateTime; @@ -59,6 +58,8 @@ class BuildsV1 extends Worker protected function buildDeployment(Document $project, Document $function, Document $deployment) { + global $register; + $dbForProject = $this->getProjectDB($project); $function = $dbForProject->getDocument('functions', $function->getId()); @@ -122,7 +123,6 @@ class BuildsV1 extends Worker ->trigger(); /** Trigger Functions */ - global $register; $pools = $register->get('pools'); $connection = $pools->get('queue')->pop(); $functions = new Func($connection->getResource()); @@ -202,6 +202,7 @@ class BuildsV1 extends Worker } /** Update function schedule */ + $dbForConsole = $this->getConsoleDB(); $schedule = $dbForConsole->getDocument('schedules', $function->getAttribute('scheduleId')); $schedule->setAttribute('resourceUpdatedAt', $function->getAttribute('scheduleUpdatedAt')); @@ -240,7 +241,6 @@ class BuildsV1 extends Worker ); /** Update usage stats */ - global $register; if (App::getEnv('_APP_USAGE_STATS', 'enabled') === 'enabled') { $statsd = $register->get('statsd'); $usage = new Stats($statsd); diff --git a/app/workers/functions.php b/app/workers/functions.php index f1e472b47..906ae25d3 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -270,7 +270,6 @@ $server->job() throw new Exception('Missing payload'); } - var_dump(json_encode($payload)); $type = $payload['type'] ?? ''; $events = $payload['events'] ?? []; $data = $payload['data'] ?? ''; @@ -283,53 +282,6 @@ $server->job() return; } - /** - * Handle Event execution. - */ - if (!empty($events)) { - $limit = 30; - $sum = 30; - $offset = 0; - $functions = []; - /** @var Document[] $functions */ - while ($sum >= $limit) { - $functions = $dbForProject->find('functions', [ - Query::limit($limit), - Query::offset($offset), - Query::orderAsc('name'), - ]); - - $sum = \count($functions); - $offset = $offset + $limit; - - Console::log('Fetched ' . $sum . ' functions...'); - - foreach ($functions as $function) { - if (!array_intersect($events, $function->getAttribute('events', []))) { - continue; - } - Console::success('Iterating function: ' . $function->getAttribute('name')); - $execute( - statsd: $statsd, - dbForProject: $dbForProject, - project: $project, - function: $function, - queueForFunctions: $queueForFunctions, - trigger: 'event', - event: $events[0], - eventData: $eventData, - user: $user, - data: null, - executionId: null, - jwt: null - ); - Console::success('Triggered function: ' . $events[0]); - } - } - - return; - } - /** * Handle Schedule and HTTP execution. */ @@ -343,7 +295,7 @@ $server->job() function: $function, dbForProject: $dbForProject, queueForFunctions: $queueForFunctions, - trigger: 'http', + trigger: $type, executionId: $execution->getId(), event: null, eventData: null, @@ -359,7 +311,7 @@ $server->job() function: $function, dbForProject: $dbForProject, queueForFunctions: $queueForFunctions, - trigger: 'http', + trigger: $type, executionId: null, event: null, eventData: null, @@ -369,6 +321,49 @@ $server->job() statsd: $statsd, ); break; + case 'event': + if (!empty($events)) { + $limit = 30; + $sum = 30; + $offset = 0; + $functions = []; + /** @var Document[] $functions */ + while ($sum >= $limit) { + $functions = $dbForProject->find('functions', [ + Query::limit($limit), + Query::offset($offset), + Query::orderAsc('name'), + ]); + + $sum = \count($functions); + $offset = $offset + $limit; + + Console::log('Fetched ' . $sum . ' functions...'); + + foreach ($functions as $function) { + if (!array_intersect($events, $function->getAttribute('events', []))) { + continue; + } + Console::success('Iterating function: ' . $function->getAttribute('name')); + $execute( + statsd: $statsd, + dbForProject: $dbForProject, + project: $project, + function: $function, + queueForFunctions: $queueForFunctions, + trigger: $type, + event: $events[0], + eventData: $eventData, + user: $user, + data: null, + executionId: null, + jwt: null + ); + Console::success('Triggered function: ' . $events[0]); + } + } + } + break; } }); diff --git a/docker-compose.yml b/docker-compose.yml index 7b6925473..d7fe33d53 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -258,6 +258,7 @@ services: - mariadb environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_DB_HOST - _APP_DB_PORT @@ -291,6 +292,7 @@ services: - request-catcher environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_SYSTEM_SECURITY_EMAIL_ADDRESS - _APP_REDIS_HOST @@ -321,6 +323,7 @@ services: - ./src:/usr/src/code/src environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_DB_HOST - _APP_DB_PORT @@ -376,6 +379,7 @@ services: - mariadb environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_DB_HOST - _APP_DB_PORT @@ -408,6 +412,7 @@ services: - mariadb environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_EXECUTOR_SECRET - _APP_EXECUTOR_HOST @@ -444,6 +449,7 @@ services: - ./src:/usr/src/code/src environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_DOMAIN - _APP_DOMAIN_TARGET @@ -480,6 +486,7 @@ services: - openruntimes-executor environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_DB_HOST - _APP_DB_PORT @@ -500,7 +507,6 @@ services: - _APP_USAGE_STATS - DOCKERHUB_PULL_USERNAME - DOCKERHUB_PULL_PASSWORD - - _APP_WORKER_PER_CORE appwrite-worker-mails: entrypoint: worker-mails @@ -518,6 +524,7 @@ services: # - smtp environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_SYSTEM_EMAIL_NAME - _APP_SYSTEM_EMAIL_ADDRESS @@ -548,6 +555,7 @@ services: - redis environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -572,6 +580,7 @@ services: - redis environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_DOMAIN - _APP_DOMAIN_TARGET - _APP_OPENSSL_KEY_V1 @@ -624,6 +633,7 @@ services: - mariadb environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_DB_HOST - _APP_DB_PORT @@ -662,6 +672,7 @@ services: - mariadb environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 - _APP_DB_HOST - _APP_DB_PORT @@ -697,6 +708,7 @@ services: - redis environment: - _APP_ENV + - _APP_WORKER_PER_CORE - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER diff --git a/src/Appwrite/Platform/Tasks/Schedule.php b/src/Appwrite/Platform/Tasks/Schedule.php index dc86f9293..bafedd27c 100644 --- a/src/Appwrite/Platform/Tasks/Schedule.php +++ b/src/Appwrite/Platform/Tasks/Schedule.php @@ -97,7 +97,7 @@ class Schedule extends Action $pools->reclaim(); - Console::success("{$total} functions where loaded in " . (microtime(true) - $loadStart) . " seconds"); + Console::success("{$total} functions were loaded in " . (microtime(true) - $loadStart) . " seconds"); Console::success("Starting timers at " . DateTime::now()); @@ -152,7 +152,7 @@ class Schedule extends Action $pools->reclaim(); - Console::log("Sync tick: {$total} schedules where updates in " . ($timerEnd - $timerStart) . " seconds"); + Console::log("Sync tick: {$total} schedules were updated in " . ($timerEnd - $timerStart) . " seconds"); }); /** @@ -185,11 +185,14 @@ class Schedule extends Action $total++; - $promiseStart = \microtime(true); // in seconds + $promiseStart = \time(); // in seconds $executionStart = $nextDate->getTimestamp(); // in seconds $executionSleep = $executionStart - $promiseStart; // Time to wait from now until execution needs to be queued + $delay = $executionSleep; - $delay = \ceil(\intval($executionSleep)); + \var_dump($delay); + \var_dump(\time()); + \var_dump('---'); if (!isset($delayedExecutions[$delay])) { $delayedExecutions[$delay] = []; @@ -228,7 +231,7 @@ class Schedule extends Action $timerEnd = \microtime(true); $lastEnqueueUpdate = $timerStart; - Console::log("Enqueue tick: {$total} executions where enqueued in " . ($timerEnd - $timerStart) . " seconds"); + Console::log("Enqueue tick: {$total} executions were enqueued in " . ($timerEnd - $timerStart) . " seconds"); }; Timer::tick(self::FUNCTION_ENQUEUE_TIMER * 1000, fn() => $enqueueFunctions());