From c96b6300daa54603518a7198873a457e9f1569c5 Mon Sep 17 00:00:00 2001 From: fogelito Date: Sun, 31 Aug 2025 12:39:32 +0300 Subject: [PATCH] Check audits --- src/Appwrite/Platform/Workers/Audits.php | 38 +++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index 04b562a219..869ef7a285 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -18,7 +18,7 @@ use Utopia\System\System; class Audits extends Action { - protected const int BATCH_AGGREGATION_INTERVAL = 60; // in seconds + protected const int BATCH_AGGREGATION_INTERVAL = 10000; // in seconds private int $lastTriggeredTime = 0; @@ -40,6 +40,8 @@ class Audits extends Action */ public function __construct() { + Console::error('__construct Audits'); + $this ->desc('Audits worker') ->inject('message') @@ -71,6 +73,9 @@ class Audits extends Action Console::info('Aggregating audit logs'); + Console::error('project '.$project->getSequence()); + Console::error('lastTriggeredTime '.$this->lastTriggeredTime); + $event = $payload['event'] ?? ''; $auditPayload = ''; @@ -121,27 +126,46 @@ class Audits extends Action // Check if we should process the batch by checking both for the batch size and the elapsed time $batchSize = $this->getBatchSize(); + $batchSize = 3; + $logCount = array_reduce($this->logs, fn (int $current, $logs) => $current + count($logs['logs']), 0); $shouldProcessBatch = $logCount >= $batchSize; + + var_dump('$logCount'); + var_dump($logCount); + var_dump('$shouldProcessBatch 1'); + var_dump($shouldProcessBatch); + if (!$shouldProcessBatch && $logCount > 0) { $shouldProcessBatch = (\time() - $this->lastTriggeredTime) >= self::BATCH_AGGREGATION_INTERVAL; } + var_dump('$shouldProcessBatch 2'); + var_dump($shouldProcessBatch); + + var_dump($this->logs); + if (!$shouldProcessBatch) { return new NoCommit(); } - try { - foreach ($this->logs as $sequence => $projectLogs) { - $dbForProject = $getProjectDB($projectLogs['project']); + $logs = $this->logs; + $this->logs = []; + + try { + foreach ($logs as $projectLogs) { + /** + * @var $projectDocument Document + */ + $projectDocument = $projectLogs['project']; + $dbForProject = $getProjectDB($projectDocument); + + Console::log('Processing Project "'.$projectDocument->getSequence().'" batch with ' . count($projectLogs['logs']) . ' events'); - Console::log('Processing batch with ' . count($projectLogs['logs']) . ' events'); $audit = new Audit($dbForProject); $audit->logBatch($projectLogs['logs']); Console::success('Audit logs processed successfully'); - - unset($this->logs[$sequence]); } } catch (Throwable $e) { Console::error('Error processing audit logs: ' . $e->getMessage());