mirror of
https://github.com/whyour/qinglong.git
synced 2025-11-09 16:16:07 +08:00
Add timeout protection for gRPC worker initialization
Added 30-second timeout to prevent system hang if gRPC worker fails to start. This provides better error handling and prevents indefinite waiting. Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
This commit is contained in:
parent
15f4bcf363
commit
827453986b
|
|
@ -57,14 +57,21 @@ class Application {
|
||||||
const grpcWorker = this.forkWorker('grpc');
|
const grpcWorker = this.forkWorker('grpc');
|
||||||
|
|
||||||
// Wait for gRPC worker to signal it's ready before starting HTTP worker
|
// Wait for gRPC worker to signal it's ready before starting HTTP worker
|
||||||
const grpcReadyPromise = new Promise<void>((resolve) => {
|
const grpcReadyPromise = new Promise<void>((resolve, reject) => {
|
||||||
const messageHandler = (msg: any) => {
|
const messageHandler = (msg: any) => {
|
||||||
if (msg === 'ready') {
|
if (msg === 'ready') {
|
||||||
grpcWorker.removeListener('message', messageHandler);
|
grpcWorker.removeListener('message', messageHandler);
|
||||||
|
clearTimeout(timeoutId);
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
grpcWorker.on('message', messageHandler);
|
grpcWorker.on('message', messageHandler);
|
||||||
|
|
||||||
|
// Timeout after 30 seconds
|
||||||
|
const timeoutId = setTimeout(() => {
|
||||||
|
grpcWorker.removeListener('message', messageHandler);
|
||||||
|
reject(new Error('gRPC worker failed to start within 30 seconds'));
|
||||||
|
}, 30000);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Start HTTP worker after gRPC is ready
|
// Start HTTP worker after gRPC is ready
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user