feat: update worker class
This commit is contained in:
parent
47b206c445
commit
7844a74c1a
2 changed files with 19 additions and 35 deletions
|
@ -7,11 +7,7 @@ use Appwrite\Stats\Usage;
|
||||||
use Appwrite\Stats\UsageDB;
|
use Appwrite\Stats\UsageDB;
|
||||||
use InfluxDB\Database as InfluxDatabase;
|
use InfluxDB\Database as InfluxDatabase;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\Cache\Adapter\Redis as RedisCache;
|
|
||||||
use Utopia\Cache\Cache;
|
|
||||||
use Utopia\CLI\Console;
|
use Utopia\CLI\Console;
|
||||||
use Utopia\Database\Adapter\MariaDB;
|
|
||||||
use Utopia\Database\Database;
|
|
||||||
use Utopia\Database\Validator\Authorization;
|
use Utopia\Database\Validator\Authorization;
|
||||||
use Utopia\Registry\Registry;
|
use Utopia\Registry\Registry;
|
||||||
use Utopia\Logger\Log;
|
use Utopia\Logger\Log;
|
||||||
|
@ -19,34 +15,6 @@ use Utopia\Logger\Log;
|
||||||
Authorization::disable();
|
Authorization::disable();
|
||||||
Authorization::setDefaultStatus(false);
|
Authorization::setDefaultStatus(false);
|
||||||
|
|
||||||
function getDatabase(Registry &$register): Database
|
|
||||||
{
|
|
||||||
$attempts = 0;
|
|
||||||
$dbPool = $register->get('dbPool');
|
|
||||||
$redis = $register->get('cache');
|
|
||||||
$database = $dbPool->getConsoleDB();
|
|
||||||
do {
|
|
||||||
try {
|
|
||||||
$attempts++;
|
|
||||||
$pdo = $dbPool->getPDO($database);
|
|
||||||
$database = DatabasePool::getDatabase($pdo, $redis, '_console');
|
|
||||||
|
|
||||||
if (!$database->exists($database->getDefaultDatabase(), 'projects')) {
|
|
||||||
throw new Exception('Projects collection not ready');
|
|
||||||
}
|
|
||||||
break; // leave loop if successful
|
|
||||||
} catch (\Exception$e) {
|
|
||||||
Console::warning("Database not ready. Retrying connection ({$attempts})...");
|
|
||||||
if ($attempts >= DATABASE_RECONNECT_MAX_ATTEMPTS) {
|
|
||||||
throw new \Exception('Failed to connect to database: ' . $e->getMessage());
|
|
||||||
}
|
|
||||||
sleep(DATABASE_RECONNECT_SLEEP);
|
|
||||||
}
|
|
||||||
} while ($attempts < DATABASE_RECONNECT_MAX_ATTEMPTS);
|
|
||||||
|
|
||||||
return $database;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getInfluxDB(Registry &$register): InfluxDatabase
|
function getInfluxDB(Registry &$register): InfluxDatabase
|
||||||
{
|
{
|
||||||
/** @var InfluxDB\Client $client */
|
/** @var InfluxDB\Client $client */
|
||||||
|
@ -115,7 +83,17 @@ $cli
|
||||||
Console::success(APP_NAME . ' usage aggregation process v1 has started');
|
Console::success(APP_NAME . ' usage aggregation process v1 has started');
|
||||||
|
|
||||||
$interval = (int) App::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '30'); // 30 seconds (by default)
|
$interval = (int) App::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '30'); // 30 seconds (by default)
|
||||||
$database = getDatabase($register);
|
|
||||||
|
$redis = $register->get('cache');
|
||||||
|
$dbPool = $register->get('dbPool');
|
||||||
|
|
||||||
|
$database = $dbPool->getConsoleDB();
|
||||||
|
$pdo = $dbPool->getPDO($database);
|
||||||
|
$database = DatabasePool::wait(
|
||||||
|
DatabasePool::getDatabase($pdo, $redis, '_console'),
|
||||||
|
'projects',
|
||||||
|
);
|
||||||
|
|
||||||
$influxDB = getInfluxDB($register);
|
$influxDB = getInfluxDB($register);
|
||||||
|
|
||||||
$usage = new Usage($database, $influxDB, $logError);
|
$usage = new Usage($database, $influxDB, $logError);
|
||||||
|
|
|
@ -180,7 +180,10 @@ abstract class Worker
|
||||||
$dbPool = $register->get('dbPool');
|
$dbPool = $register->get('dbPool');
|
||||||
$namespace = "_$internalId";
|
$namespace = "_$internalId";
|
||||||
$pdo = $dbPool->getPDO($database);
|
$pdo = $dbPool->getPDO($database);
|
||||||
$dbForProject = DatabasePool::getDatabase($pdo, $cache, $namespace);
|
$dbForProject = DatabasePool::wait(
|
||||||
|
DatabasePool::getDatabase($pdo, $cache, $namespace),
|
||||||
|
'projects'
|
||||||
|
);
|
||||||
|
|
||||||
return $dbForProject;
|
return $dbForProject;
|
||||||
}
|
}
|
||||||
|
@ -201,7 +204,10 @@ abstract class Worker
|
||||||
|
|
||||||
$namespace = "_console";
|
$namespace = "_console";
|
||||||
$pdo = $dbPool->getPDO($database);
|
$pdo = $dbPool->getPDO($database);
|
||||||
$dbForConsole = DatabasePool::getDatabase($pdo, $cache, $namespace);
|
$dbForConsole = DatabasePool::wait(
|
||||||
|
DatabasePool::getDatabase($pdo, $cache, $namespace),
|
||||||
|
'_metadata'
|
||||||
|
);
|
||||||
|
|
||||||
return $dbForConsole;
|
return $dbForConsole;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue