Skip to content

Commit dfc8551

Browse files
Handle Redis listener initialization errors and improve error reporting
1 parent 3459520 commit dfc8551

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

react_on_rails_pro/spec/dummy/client/app/utils/redisReceiver.ts

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export function listenToRequestData(requestId: string): RequestListener {
4747
const messagesToDelete: string[] = [];
4848
let isActive = true;
4949
let isEnded = false;
50+
let initializationError: Error | null = null;
5051

5152
// Create dedicated Redis client for THIS listener
5253
const url = process.env.REDIS_URL || 'redis://localhost:6379';
@@ -232,18 +233,6 @@ export function listenToRequestData(requestId: string): RequestListener {
232233
}
233234
}
234235

235-
// Start listening to existing and new messages immediately
236-
(async () => {
237-
try {
238-
await checkExistingMessages();
239-
await setupStreamListener();
240-
} catch (error) {
241-
console.error('Error initializing Redis listener:', error);
242-
}
243-
})().catch((error: unknown) => {
244-
console.error('Error initializing Redis listener:', error);
245-
});
246-
247236
// Create the listener object
248237
const listener: RequestListener = {
249238
/**
@@ -252,6 +241,13 @@ export function listenToRequestData(requestId: string): RequestListener {
252241
* @returns A promise that resolves when the key is found
253242
*/
254243
getValue: async (key: string) => {
244+
// If initialization failed, reject immediately with the initialization error
245+
if (initializationError) {
246+
return Promise.reject(
247+
new Error(`Redis listener initialization failed: ${initializationError.message}`),
248+
);
249+
}
250+
255251
// If we already have a promise for this key, return it
256252
const existingPromise = pendingPromises[key];
257253
if (existingPromise) {
@@ -342,5 +338,19 @@ export function listenToRequestData(requestId: string): RequestListener {
342338
},
343339
};
344340

341+
// Start listening to existing and new messages immediately
342+
(async () => {
343+
try {
344+
await checkExistingMessages();
345+
await setupStreamListener();
346+
} catch (error) {
347+
console.error('Error initializing Redis listener:', error);
348+
initializationError = error instanceof Error ? error : new Error(String(error));
349+
await listener.close();
350+
}
351+
})().catch((error: unknown) => {
352+
console.error('Fatal error in Redis listener initialization:', error);
353+
});
354+
345355
return listener;
346356
}

0 commit comments

Comments
 (0)