Merge pull request #9462 from appwrite/pla-2550

chore: added logsdb for deletes worker
This commit is contained in:
Christy Jacob 2025-03-11 14:30:40 +05:30 committed by GitHub
commit d4dd7fb757
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -47,7 +47,7 @@ class Deletes extends Action
->inject('project') ->inject('project')
->inject('dbForPlatform') ->inject('dbForPlatform')
->inject('getProjectDB') ->inject('getProjectDB')
->inject('timelimit') ->inject('getLogsDB')
->inject('deviceForFiles') ->inject('deviceForFiles')
->inject('deviceForFunctions') ->inject('deviceForFunctions')
->inject('deviceForBuilds') ->inject('deviceForBuilds')
@ -57,8 +57,8 @@ class Deletes extends Action
->inject('auditRetention') ->inject('auditRetention')
->inject('log') ->inject('log')
->callback( ->callback(
fn ($message, Document $project, Database $dbForPlatform, callable $getProjectDB, callable $timelimit, Device $deviceForFiles, Device $deviceForFunctions, Device $deviceForBuilds, Device $deviceForCache, CertificatesAdapter $certificates, string $executionRetention, string $auditRetention, Log $log) => fn ($message, Document $project, Database $dbForPlatform, callable $getProjectDB, callable $getLogsDB, Device $deviceForFiles, Device $deviceForFunctions, Device $deviceForBuilds, Device $deviceForCache, CertificatesAdapter $certificates, string $executionRetention, string $auditRetention, Log $log) =>
$this->action($message, $project, $dbForPlatform, $getProjectDB, $timelimit, $deviceForFiles, $deviceForFunctions, $deviceForBuilds, $deviceForCache, $certificates, $executionRetention, $auditRetention, $log) $this->action($message, $project, $dbForPlatform, $getProjectDB, $getLogsDB, $deviceForFiles, $deviceForFunctions, $deviceForBuilds, $deviceForCache, $certificates, $executionRetention, $auditRetention, $log)
); );
} }
@ -66,7 +66,7 @@ class Deletes extends Action
* @throws Exception * @throws Exception
* @throws Throwable * @throws Throwable
*/ */
public function action(Message $message, Document $project, Database $dbForPlatform, callable $getProjectDB, callable $timelimit, Device $deviceForFiles, Device $deviceForFunctions, Device $deviceForBuilds, Device $deviceForCache, CertificatesAdapter $certificates, string $executionRetention, string $auditRetention, Log $log): void public function action(Message $message, Document $project, Database $dbForPlatform, callable $getProjectDB, callable $getLogsDB, Device $deviceForFiles, Device $deviceForFunctions, Device $deviceForBuilds, Device $deviceForCache, CertificatesAdapter $certificates, string $executionRetention, string $auditRetention, Log $log): void
{ {
$payload = $message->getPayload() ?? []; $payload = $message->getPayload() ?? [];
@ -131,7 +131,7 @@ class Deletes extends Action
$this->deleteExpiredSessions($project, $getProjectDB); $this->deleteExpiredSessions($project, $getProjectDB);
break; break;
case DELETE_TYPE_USAGE: case DELETE_TYPE_USAGE:
$this->deleteUsageStats($project, $getProjectDB, $hourlyUsageRetentionDatetime); $this->deleteUsageStats($project, $getProjectDB, $getLogsDB, $hourlyUsageRetentionDatetime);
break; break;
case DELETE_TYPE_CACHE_BY_RESOURCE: case DELETE_TYPE_CACHE_BY_RESOURCE:
$this->deleteCacheByResource($project, $getProjectDB, $resource, $resourceType); $this->deleteCacheByResource($project, $getProjectDB, $resource, $resourceType);
@ -158,7 +158,7 @@ class Deletes extends Action
$this->deleteExpiredTargets($project, $getProjectDB); $this->deleteExpiredTargets($project, $getProjectDB);
$this->deleteExecutionLogs($project, $getProjectDB, $executionRetention); $this->deleteExecutionLogs($project, $getProjectDB, $executionRetention);
$this->deleteAuditLogs($project, $getProjectDB, $auditRetention); $this->deleteAuditLogs($project, $getProjectDB, $auditRetention);
$this->deleteUsageStats($project, $getProjectDB, $hourlyUsageRetentionDatetime); $this->deleteUsageStats($project, $getProjectDB, $getLogsDB, $hourlyUsageRetentionDatetime);
$this->deleteExpiredSessions($project, $getProjectDB); $this->deleteExpiredSessions($project, $getProjectDB);
break; break;
default: default:
@ -412,14 +412,22 @@ class Deletes extends Action
* @return void * @return void
* @throws Exception * @throws Exception
*/ */
private function deleteUsageStats(Document $project, callable $getProjectDB, string $hourlyUsageRetentionDatetime): void private function deleteUsageStats(Document $project, callable $getProjectDB, callable $getLogsDB, string $hourlyUsageRetentionDatetime): void
{ {
$dbForProject = $getProjectDB($project); $dbForProject = $getProjectDB($project);
// Delete Usage stats $dbForLogs = $getLogsDB($project);
// Delete Usage stats from projectDB
$this->deleteByGroup('stats', [ $this->deleteByGroup('stats', [
Query::lessThan('time', $hourlyUsageRetentionDatetime), Query::lessThan('time', $hourlyUsageRetentionDatetime),
Query::equal('period', ['1h']), Query::equal('period', ['1h']),
], $dbForProject); ], $dbForProject);
// Delete Usage stats from logsDB
$this->deleteByGroup('stats', [
Query::lessThan('time', $hourlyUsageRetentionDatetime),
Query::equal('period', ['1h']),
], $dbForLogs);
} }
/** /**
@ -851,7 +859,7 @@ class Deletes extends Action
} else { } else {
Console::error('Failed to delete deployment files: ' . $deploymentPath); Console::error('Failed to delete deployment files: ' . $deploymentPath);
} }
} catch (\Throwable $th) { } catch (Throwable $th) {
Console::error('Failed to delete deployment files: ' . $deploymentPath); Console::error('Failed to delete deployment files: ' . $deploymentPath);
Console::error('[Error] Type: ' . get_class($th)); Console::error('[Error] Type: ' . get_class($th));
Console::error('[Error] Message: ' . $th->getMessage()); Console::error('[Error] Message: ' . $th->getMessage());
@ -881,7 +889,7 @@ class Deletes extends Action
} else { } else {
Console::error('Failed to delete build files: ' . $buildPath); Console::error('Failed to delete build files: ' . $buildPath);
} }
} catch (\Throwable $th) { } catch (Throwable $th) {
Console::error('Failed to delete deployment files: ' . $buildPath); Console::error('Failed to delete deployment files: ' . $buildPath);
Console::error('[Error] Type: ' . get_class($th)); Console::error('[Error] Type: ' . get_class($th));
Console::error('[Error] Message: ' . $th->getMessage()); Console::error('[Error] Message: ' . $th->getMessage());
@ -947,7 +955,7 @@ class Deletes extends Action
try { try {
$documents = $database->deleteDocuments($collection, $queries); $documents = $database->deleteDocuments($collection, $queries);
} catch (\Throwable $th) { } catch (Throwable $th) {
Console::error('Failed to delete documents for collection ' . $collection . ': ' . $th->getMessage()); Console::error('Failed to delete documents for collection ' . $collection . ': ' . $th->getMessage());
return; return;
} }