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:
copilot-swe-agent[bot] 2025-11-07 16:29:59 +00:00
parent 15f4bcf363
commit 827453986b

View File

@ -57,14 +57,21 @@ class Application {
const grpcWorker = this.forkWorker('grpc');
// 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) => {
if (msg === 'ready') {
grpcWorker.removeListener('message', messageHandler);
clearTimeout(timeoutId);
resolve();
}
};
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