Compare commits

...

5 Commits

Author SHA1 Message Date
かっこかり
a1b48dae4a
Merge a736762bee into 0804092426 2024-12-16 22:37:26 +09:00
かっこかり
a736762bee
Merge branch 'develop' into fix-sync-server-startup 2024-12-10 15:55:43 +09:00
kakkokari-gtyih
dd1b26aeb9 ✌️ 2024-12-09 17:11:32 +09:00
kakkokari-gtyih
1859dcbf69 Update Changelog 2024-12-09 17:10:50 +09:00
Hazelnoot
b9db1750d4 Synchronize server startup
This prevents an edge case where the server begins processing inbound API / AP requests before any of the chart / management daemons are ready, potentially leading to incorrect chart statistics.
2024-12-09 17:09:25 +09:00
4 changed files with 14 additions and 12 deletions

View File

@ -17,7 +17,8 @@
- Fix: ユーザーのプロフィール画面をアドレス入力などで直接表示した際に概要タブの描画に失敗する問題の修正( #15032 )
- Fix: 起動前の疎通チェックが機能しなくなっていた問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/737)
- Fix: チャートエンジン・キュープロセッサが起動する前にサーバーがリクエストを受け付ける可能性がある問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/788)
## 2024.11.0

View File

@ -18,15 +18,16 @@ export async function server() {
logger: new NestLogger(),
});
if (process.env.NODE_ENV !== 'test') {
await app.get(ChartManagementService).start();
await app.get(QueueStatsService).start();
await app.get(ServerStatsService).start();
}
// Start server last so the other services can register hooks first
const serverService = app.get(ServerService);
await serverService.launch();
if (process.env.NODE_ENV !== 'test') {
app.get(ChartManagementService).start();
app.get(QueueStatsService).start();
app.get(ServerStatsService).start();
}
return app;
}
@ -35,8 +36,8 @@ export async function jobQueue() {
logger: new NestLogger(),
});
jobQueue.get(QueueProcessorService).start();
jobQueue.get(ChartManagementService).start();
await jobQueue.get(QueueProcessorService).start();
await jobQueue.get(ChartManagementService).start();
return jobQueue;
}

View File

@ -33,7 +33,7 @@ export class QueueStatsService implements OnApplicationShutdown {
* Report queue stats regularly
*/
@bindThis
public start(): void {
public async start(): Promise<void> {
const log = [] as any[];
ev.on('requestQueueStatsLog', x => {
@ -82,7 +82,7 @@ export class QueueStatsService implements OnApplicationShutdown {
activeInboxJobs = 0;
};
tick();
await tick();
this.intervalId = setInterval(tick, interval);
}

View File

@ -68,7 +68,7 @@ export class ServerStatsService implements OnApplicationShutdown {
if (log.length > 200) log.pop();
};
tick();
await tick();
this.intervalId = setInterval(tick, interval);
}