维护:修改维护启动逻辑,扩展服也能正常获取

This commit is contained in:
luying
2022-09-15 16:04:16 +08:00
parent a415483f51
commit d7d0216ad6
5 changed files with 41 additions and 17 deletions
+22 -5
View File
@@ -30,7 +30,6 @@ import { resResult, genCode } from './app/pubUtils/util';
import { errlogger, infologger, loadLogger } from './app/util/logger'; import { errlogger, infologger, loadLogger } from './app/util/logger';
import { connectThinkingData, getTire } from './app/services/sdkService'; import { connectThinkingData, getTire } from './app/services/sdkService';
import { loadGmDb } from './app/db'; import { loadGmDb } from './app/db';
const fs = require('fs');
const filePath = (_pinus as any).FILEPATH; const filePath = (_pinus as any).FILEPATH;
filePath.MASTER = '/config/master'; filePath.MASTER = '/config/master';
@@ -67,13 +66,11 @@ app.configure(function () {
console.log('env:', app.get('env')); console.log('env:', app.get('env'));
console.log('db:', app.get('database')); console.log('db:', app.get('database'));
initMongodb(app);
initGmMongodb(app);
initRedis(app);
setupRoutes(app); setupRoutes(app);
setupFilters(app); setupFilters(app);
connectThinkingData(app); connectThinkingData(app);
loadLogger(app.getServerId()) loadLogger(app.getServerId());
treatStartLogic(app);
app.set(RESERVED.ERROR_HANDLER, errorHandler); app.set(RESERVED.ERROR_HANDLER, errorHandler);
app.set(RESERVED.GLOBAL_ERROR_HANDLER, globalErrorHandler); app.set(RESERVED.GLOBAL_ERROR_HANDLER, globalErrorHandler);
@@ -192,6 +189,26 @@ export function globalErrorHandler(err: Error, msg: any, resp: any,
} }
} }
async function treatStartLogic(app: _pinus.Application) {
await connectDb(app);
console.log('treatStartLogic', app.getServerType());
if(app.getServerType() == 'systimer') {
// 维护信息
await timeTaskService.initMaintenance();
} else {
await timeTaskService.initMaintenanaceInOtherServers();
}
}
async function connectDb(app: _pinus.Application) {
// Promise并行处理
return Promise.all([
initMongodb(app),
initGmMongodb(app),
initRedis(app)
])
}
async function initMongodb(app: _pinus.Application) { async function initMongodb(app: _pinus.Application) {
await mongoose.connect(app.get('database').mongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }, (err) => { await mongoose.connect(app.get('database').mongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }, (err) => {
if (err) { if (err) {
@@ -8,7 +8,6 @@ import { gameData } from '../../../pubUtils/data';
import { Maintenance, ServerlistModel, ServerlistUpdate } from '../../../db/Serverlist'; import { Maintenance, ServerlistModel, ServerlistUpdate } from '../../../db/Serverlist';
import { nowSeconds } from '../../../pubUtils/timeUtil'; import { nowSeconds } from '../../../pubUtils/timeUtil';
import { createNewServer, sendOpenServerMail } from '../../../services/gmService'; import { createNewServer, sendOpenServerMail } from '../../../services/gmService';
import { initAutoCreateServer, initMaintenance, stopMaintenance } from '../../../services/timeTaskService';
import { isNumber } from 'util'; import { isNumber } from 'util';
import { MarqueeModel } from '../../../db/Marquee'; import { MarqueeModel } from '../../../db/Marquee';
let timer: NodeJS.Timer; let timer: NodeJS.Timer;
+1
View File
@@ -169,6 +169,7 @@ export function setServerMainten(serverIds: number[], startTime: number, endTime
pinus.app.set('maintenServers', maintenServers); pinus.app.set('maintenServers', maintenServers);
} }
export function stopServerMainten(serverIds: number[]) { export function stopServerMainten(serverIds: number[]) {
let maintenServers = pinus.app.get('maintenServers')||new Map(); let maintenServers = pinus.app.get('maintenServers')||new Map();
for(let id of serverIds) { for(let id of serverIds) {
+16 -9
View File
@@ -13,7 +13,7 @@ import { sendEndMsgToAllServer, autoDeclare, sendGuildActivityStatus, setPreDayA
import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService'; import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService';
import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity'; import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity';
import { dispatch } from '../pubUtils/dispatcher'; import { dispatch } from '../pubUtils/dispatcher';
import { createNewServer, initMarquee } from './gmService'; import { createNewServer, initMarquee, setServerMainten } from './gmService';
import moment = require('moment'); import moment = require('moment');
import { CounterModel } from '../db/Counter'; import { CounterModel } from '../db/Counter';
import { reportOneOnline } from './authenticateService'; import { reportOneOnline } from './authenticateService';
@@ -91,9 +91,6 @@ export async function init() {
// 跑马灯 // 跑马灯
await initMarquee(); await initMarquee();
// 维护信息
await initMaintenance();
// 自动开服 // 自动开服
await initAutoCreateServer(); await initAutoCreateServer();
@@ -516,7 +513,7 @@ async function pushMailSchedule(time: number) {
// —————————————— 维护 —————————————— // // —————————————— 维护 —————————————— //
let maintenInfos = new Map<string, { servers: ServerlistType[], maintenance: Maintenance }>(); // batchCode => {servers, maintenance} let maintenInfos = new Map<string, { servers: ServerlistType[], maintenance: Maintenance }>(); // batchCode => {servers, maintenance}
export async function initMaintenance(servers?: ServerlistType[]) { export async function initMaintenance(servers?: ServerlistType[], fromApp = false) {
if(!servers) servers = await ServerlistModel.findByEnv(pinus.app.get('env')); if(!servers) servers = await ServerlistModel.findByEnv(pinus.app.get('env'));
for(let server of servers) { for(let server of servers) {
@@ -529,12 +526,23 @@ export async function initMaintenance(servers?: ServerlistType[]) {
} }
} }
for(let [batchCode] of maintenInfos) { for(let [batchCode] of maintenInfos) {
await setMaintenance(batchCode); await setMaintenance(batchCode, fromApp);
}
}
export async function initMaintenanaceInOtherServers() {
const servers = await ServerlistModel.findByEnv(pinus.app.get('env'));
for(let server of servers) {
let { id, maintenance } = server;
if(maintenance && maintenance.isOpen) {
setServerMainten([id], maintenance.startTime, maintenance.endTime)
}
} }
} }
// 设置维护 // 设置维护
async function setMaintenance(batchCode: string) { async function setMaintenance(batchCode: string, fromApp: boolean) {
let { maintenance } = maintenInfos.get(batchCode); let { maintenance } = maintenInfos.get(batchCode);
console.log('***** maintenance', maintenance); console.log('***** maintenance', maintenance);
@@ -557,8 +565,7 @@ async function setMaintenance(batchCode: string) {
console.log('******* setMaintenance', now, now < maintenance.endTime, now > maintenance.startTime) console.log('******* setMaintenance', now, now < maintenance.endTime, now > maintenance.startTime)
if(now < maintenance.endTime) { if(now < maintenance.endTime) {
if(now > maintenance.startTime) { if(now > maintenance.startTime) {
console.log('*******') if(!fromApp) await startMaintenanceSchedule(batchCode);
await startMaintenanceSchedule(batchCode);
} else { } else {
scheduleJob(`startMainten${batchCode}`, maintenance.startTime * 1000, async () => { scheduleJob(`startMainten${batchCode}`, maintenance.startTime * 1000, async () => {
await startMaintenanceSchedule(batchCode); await startMaintenanceSchedule(batchCode);
+1 -1
View File
@@ -272,7 +272,7 @@ module.exports = {
}, },
'distribute': { 'distribute': {
'connector': [ 'connector': [
{ 'id': 'connector-server-4', 'host': '172.26.145.171', 'port': 9061, 'clientHost': '121.89.211.172', 'clientPort': 3050, 'frontend': true, "args": " --inspect=9237" }, { 'id': 'connector-server-4', 'host': '172.26.145.171', 'port': 9061, 'clientHost': '121.89.211.172', 'clientPort': 3051, 'frontend': true, "args": " --inspect=9237" },
], ],
'battle': [ 'battle': [
{ 'id': 'battle-server-2', 'host': '172.26.145.171', 'port': 9062 }, { 'id': 'battle-server-2', 'host': '172.26.145.171', 'port': 9062 },