|
|
@@ -1,6 +1,8 @@
|
|
|
import fs from 'fs';
|
|
|
import fsp from 'fs/promises';
|
|
|
import path from 'path';
|
|
|
+import moment from 'moment';
|
|
|
+import { Pool } from 'mysql';
|
|
|
|
|
|
import { Logger, LogLevel } from '../../common/util/logger.class';
|
|
|
|
|
|
@@ -12,7 +14,6 @@ import { MariaDBPoolFactory } from './ctrl/mariadb-poolfactory.class';
|
|
|
import { ServerConnector } from './ctrl/server-connector.class';
|
|
|
import { Webserver } from './webserver.class';
|
|
|
import { Timer } from './timer.class';
|
|
|
-import moment from 'moment';
|
|
|
|
|
|
const LOG_LEVEL: LogLevel = (process.env.LOG_LEVEL as LogLevel) || 'INFO';
|
|
|
Logger.logLevel = LOG_LEVEL;
|
|
|
@@ -22,25 +23,28 @@ process.on('SIGQUIT', exitGracefully);
|
|
|
process.on('SIGTERM', exitGracefully);
|
|
|
|
|
|
let pool: ControllerPool;
|
|
|
+let db: MariaDBDatabase;
|
|
|
+let mig: MariaDBImporter;
|
|
|
+let connectionPool: Pool;
|
|
|
(async () => {
|
|
|
- const connPool = await MariaDBPoolFactory.createConnectionPool();
|
|
|
+ connectionPool = await MariaDBPoolFactory.createConnectionPool();
|
|
|
const sqliteDir = path.resolve(process.cwd(), process.env.DATA_DIR || 'data');
|
|
|
const doneFile = path.resolve(sqliteDir, 'import_done.txt');
|
|
|
|
|
|
if (fs.existsSync(sqliteDir) && !fs.existsSync(doneFile)) {
|
|
|
- const mig = new MariaDBImporter(connPool);
|
|
|
+ mig = new MariaDBImporter(connectionPool);
|
|
|
await mig.connect();
|
|
|
await mig.runImport();
|
|
|
await fsp.writeFile(doneFile, moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ'), { encoding: 'utf-8' });
|
|
|
}
|
|
|
|
|
|
- const db = new MariaDBDatabase(connPool);
|
|
|
+ db = new MariaDBDatabase(connectionPool);
|
|
|
await db.open();
|
|
|
|
|
|
pool = {
|
|
|
- db,
|
|
|
- serverConnector: new ServerConnector(),
|
|
|
- httpChecks: new HttpCheckController()
|
|
|
+ connectionPool,
|
|
|
+ serverConnector: new ServerConnector(connectionPool),
|
|
|
+ httpChecks: new HttpCheckController(connectionPool)
|
|
|
};
|
|
|
|
|
|
Timer.instance.start();
|
|
|
@@ -49,20 +53,28 @@ let pool: ControllerPool;
|
|
|
|
|
|
async function exitGracefully(...args: any[]) {
|
|
|
Logger.info(`[EXITING] Graceful exit, received ${JSON.stringify(args)}`);
|
|
|
- if (pool) {
|
|
|
- try {
|
|
|
- Logger.info(`[EXITING] Tear down ServerConnector ...`);
|
|
|
+ try {
|
|
|
+ Logger.info(`[EXITING] Tear down ServerConnector ...`);
|
|
|
+ if (pool) {
|
|
|
await pool.serverConnector.close();
|
|
|
|
|
|
Logger.info(`[EXITING] Tear down HttpCheckController ...`);
|
|
|
await pool.httpChecks.close();
|
|
|
+ }
|
|
|
|
|
|
- Logger.info(`[EXITING] Tear down Main Database Controller ...`);
|
|
|
- await pool.serverConnector.close();
|
|
|
- } catch (err) {
|
|
|
- Logger.error(`[ERROR] Tear down sequence failed:`, err);
|
|
|
- process.exit(2);
|
|
|
+ if (mig) {
|
|
|
+ Logger.info(`[EXITING] Tear down MariaDBImporter instance ...`);
|
|
|
+ await mig.close();
|
|
|
}
|
|
|
+
|
|
|
+ Logger.info(`[EXITING] Tear down Main Database Controller ...`);
|
|
|
+ if (db) await db.close();
|
|
|
+
|
|
|
+ Logger.info(`[EXITING] Tear down MariaDB Connection Pool ...`);
|
|
|
+ if (connectionPool) await MariaDBPoolFactory.end(connectionPool);
|
|
|
+ } catch (err) {
|
|
|
+ Logger.error(`[ERROR] Tear down sequence failed:`, err);
|
|
|
+ process.exit(2);
|
|
|
}
|
|
|
process.exit(0);
|
|
|
}
|