core: loader.detail support

This commit is contained in:
undefined committed 2020-12-22 21:50:38 +08:00
1 parent 738cb62dbd
commit d07dd386cd
2 files changed
+26 -1

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "hydrooj", "name": "hydrooj",
"version": "2.15.1", "version": "2.15.2",
"bin": "bin/hydrooj.js", "bin": "bin/hydrooj.js",
"main": "dist/loader.js", "main": "dist/loader.js",
"typings": "dist/loader.d.ts", "typings": "dist/loader.d.ts",
+25
View File
@@ -1,5 +1,6 @@
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
/* eslint-disable import/no-dynamic-require */ /* eslint-disable import/no-dynamic-require */
import { argv } from 'yargs';
import { import {
locale, template, lib, service, model, handler, script, setting, uistatic, locale, template, lib, service, model, handler, script, setting, uistatic,
builtinLib, builtinScript, builtinHandler, builtinModel, builtinLib, builtinScript, builtinHandler, builtinModel,
@@ -8,24 +9,32 @@ import options from '../options';
import * as bus from '../service/bus'; import * as bus from '../service/bus';
import db from '../service/db'; import db from '../service/db';
import storage from '../service/storage'; import storage from '../service/storage';
import { Logger } from '../logger';
const logger = new Logger('loader/worker');
export async function load() { export async function load() {
const pending = global.addons; const pending = global.addons;
const fail = []; const fail = [];
const active = []; const active = [];
if (argv.loaderDetail) logger.info('start');
require('../lib/i18n'); require('../lib/i18n');
require('../utils'); require('../utils');
require('../error'); require('../error');
require('../options'); require('../options');
if (argv.loaderDetail) logger.info('finish: options');
await Promise.all([ await Promise.all([
locale(pending, fail), locale(pending, fail),
template(pending, fail), template(pending, fail),
uistatic(pending, fail), uistatic(pending, fail),
]); ]);
if (argv.loaderDetail) logger.info('finish: locale/template/static');
const opts = options(); const opts = options();
await db.start(opts); await db.start(opts);
if (argv.loaderDetail) logger.info('finish: db.connect');
const modelSystem = require('../model/system'); const modelSystem = require('../model/system');
await modelSystem.runConfig(); await modelSystem.runConfig();
if (argv.loaderDetail) logger.info('finish: config');
const [endPoint, accessKey, secretKey, bucket, region, endPointForUser, endPointForJudge] = modelSystem.getMany([ const [endPoint, accessKey, secretKey, bucket, region, endPointForUser, endPointForJudge] = modelSystem.getMany([
'file.endPoint', 'file.accessKey', 'file.secretKey', 'file.bucket', 'file.region', 'file.endPoint', 'file.accessKey', 'file.secretKey', 'file.bucket', 'file.region',
'file.endPointForUser', 'file.endPointForJudge', 'file.endPointForUser', 'file.endPointForJudge',
@@ -34,28 +43,44 @@ export async function load() {
endPoint, accessKey, secretKey, bucket, region, endPointForUser, endPointForJudge, endPoint, accessKey, secretKey, bucket, region, endPointForUser, endPointForJudge,
}; };
await storage.start(sopts); await storage.start(sopts);
if (argv.loaderDetail) logger.info('finish: storage.connect');
for (const i of builtinLib) require(`../lib/${i}`); for (const i of builtinLib) require(`../lib/${i}`);
if (argv.loaderDetail) logger.info('finish: lib.builtin');
await lib(pending, fail); await lib(pending, fail);
if (argv.loaderDetail) logger.info('finish: lib.extra');
require('../service/gridfs'); require('../service/gridfs');
require('../service/monitor'); require('../service/monitor');
if (argv.loaderDetail) logger.info('finish: gridfs/monitor');
const server = require('../service/server'); const server = require('../service/server');
await server.prepare(); await server.prepare();
if (argv.loaderDetail) logger.info('finish: server');
await service(pending, fail); await service(pending, fail);
if (argv.loaderDetail) logger.info('finish: service.extra');
for (const i of builtinModel) require(`../model/${i}`); for (const i of builtinModel) require(`../model/${i}`);
if (argv.loaderDetail) logger.info('finish: model.builtin');
for (const i of builtinHandler) require(`../handler/${i}`); for (const i of builtinHandler) require(`../handler/${i}`);
if (argv.loaderDetail) logger.info('finish: handler.builtin');
await model(pending, fail); await model(pending, fail);
if (argv.loaderDetail) logger.info('finish: model.extra');
const modelSetting = require('../model/setting'); const modelSetting = require('../model/setting');
await setting(pending, fail, modelSetting); await setting(pending, fail, modelSetting);
if (argv.loaderDetail) logger.info('finish: setting');
await handler(pending, fail); await handler(pending, fail);
if (argv.loaderDetail) logger.info('finish: handler.extra');
for (const i in global.Hydro.handler) { for (const i in global.Hydro.handler) {
await global.Hydro.handler[i](); await global.Hydro.handler[i]();
} }
if (argv.loaderDetail) logger.info('finish: handler.apply');
const notfound = require('../handler/notfound'); const notfound = require('../handler/notfound');
await notfound.apply(); await notfound.apply();
for (const i of builtinScript) require(`../script/${i}`); for (const i of builtinScript) require(`../script/${i}`);
if (argv.loaderDetail) logger.info('finish: script.builtin');
await script(pending, fail, active); await script(pending, fail, active);
if (argv.loaderDetail) logger.info('finish: script.extra');
await bus.serial('app/started'); await bus.serial('app/started');
if (argv.loaderDetail) logger.info('finish: bus.serial(start)');
await server.start(); await server.start();
if (argv.loaderDetail) logger.info('finish: server.start');
setInterval(() => { setInterval(() => {
process.send({ event: 'stat', count: global.Hydro.stat.reqCount }); process.send({ event: 'stat', count: global.Hydro.stat.reqCount });
global.Hydro.stat.reqCount = 0; global.Hydro.stat.reqCount = 0;