Skip to content
This repository was archived by the owner on Feb 23, 2026. It is now read-only.

Commit ed05701

Browse files
committed
reduce federation log spam
* Don't record stack trace for unrecoverable errors. * Avoid logging duplicate stace traces.
1 parent 80c3acf commit ed05701

1 file changed

Lines changed: 21 additions & 15 deletions

File tree

packages/backend/src/queue/QueueProcessorService.ts

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,14 @@ export class QueueProcessorService implements OnApplicationShutdown {
126126
) {
127127
this.logger = this.queueLoggerService.logger;
128128

129-
function renderError(e: Error): any {
130-
if (e) { // 何故かeがundefinedで来ることがある
129+
function renderError(e: Error) {
130+
if (e instanceof Bull.UnrecoverableError) {
131+
return {
132+
stack: undefined,
133+
message: e.message,
134+
name: 'Bull.UnrecoverableError',
135+
};
136+
} else if (e) { // 何故かeがundefinedで来ることがある
131137
return {
132138
stack: e.stack,
133139
message: e.message,
@@ -173,15 +179,15 @@ export class QueueProcessorService implements OnApplicationShutdown {
173179
.on('active', (job) => logger.debug(`active id=${job.id}`))
174180
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
175181
.on('failed', (job, err: Error) => {
176-
logger.error(`failed(${err.stack}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
182+
logger.error(`failed(${err.name}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
177183
if (config.sentryForBackend) {
178184
Sentry.captureMessage(`Queue: System: ${job?.name ?? '?'}: ${err.message}`, {
179185
level: 'error',
180186
extra: { job, err },
181187
});
182188
}
183189
})
184-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
190+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
185191
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
186192
}
187193
//#endregion
@@ -238,15 +244,15 @@ export class QueueProcessorService implements OnApplicationShutdown {
238244
.on('active', (job) => logger.debug(`active id=${job.id}`))
239245
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
240246
.on('failed', (job, err) => {
241-
logger.error(`failed(${err.stack}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
247+
logger.error(`failed(${err.name}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
242248
if (config.sentryForBackend) {
243249
Sentry.captureMessage(`Queue: DB: ${job?.name ?? '?'}: ${err.message}`, {
244250
level: 'error',
245251
extra: { job, err },
246252
});
247253
}
248254
})
249-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
255+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
250256
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
251257
}
252258
//#endregion
@@ -286,7 +292,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
286292
});
287293
}
288294
})
289-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
295+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
290296
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
291297
}
292298
//#endregion
@@ -318,15 +324,15 @@ export class QueueProcessorService implements OnApplicationShutdown {
318324
.on('active', (job) => logger.debug(`active ${getJobInfo(job, true)}`))
319325
.on('completed', (job, result) => logger.debug(`completed(${result}) ${getJobInfo(job, true)}`))
320326
.on('failed', (job, err) => {
321-
logger.error(`failed(${err.stack}) ${getJobInfo(job)} activity=${job ? (job.data.activity ? job.data.activity.id : 'none') : '-'}`, { job, e: renderError(err) });
327+
logger.error(`failed(${err.name}) ${getJobInfo(job)} activity=${job ? (job.data.activity ? job.data.activity.id : 'none') : '-'}`, { job, e: renderError(err) });
322328
if (config.sentryForBackend) {
323329
Sentry.captureMessage(`Queue: Inbox: ${err.message}`, {
324330
level: 'error',
325331
extra: { job, err },
326332
});
327333
}
328334
})
329-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
335+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
330336
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
331337
}
332338
//#endregion
@@ -366,7 +372,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
366372
});
367373
}
368374
})
369-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
375+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
370376
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
371377
}
372378
//#endregion
@@ -406,7 +412,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
406412
});
407413
}
408414
})
409-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
415+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
410416
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
411417
}
412418
//#endregion
@@ -445,15 +451,15 @@ export class QueueProcessorService implements OnApplicationShutdown {
445451
.on('active', (job) => logger.debug(`active id=${job.id}`))
446452
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
447453
.on('failed', (job, err) => {
448-
logger.error(`failed(${err.stack}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
454+
logger.error(`failed(${err.name}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
449455
if (config.sentryForBackend) {
450456
Sentry.captureMessage(`Queue: Relationship: ${job?.name ?? '?'}: ${err.message}`, {
451457
level: 'error',
452458
extra: { job, err },
453459
});
454460
}
455461
})
456-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
462+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
457463
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
458464
}
459465
//#endregion
@@ -486,15 +492,15 @@ export class QueueProcessorService implements OnApplicationShutdown {
486492
.on('active', (job) => logger.debug(`active id=${job.id}`))
487493
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
488494
.on('failed', (job, err) => {
489-
logger.error(`failed(${err.stack}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
495+
logger.error(`failed(${err.name}) id=${job ? job.id : '-'}`, { job, e: renderError(err) });
490496
if (config.sentryForBackend) {
491497
Sentry.captureMessage(`Queue: ObjectStorage: ${job?.name ?? '?'}: ${err.message}`, {
492498
level: 'error',
493499
extra: { job, err },
494500
});
495501
}
496502
})
497-
.on('error', (err: Error) => logger.error(`error ${err.stack}`, { e: renderError(err) }))
503+
.on('error', (err: Error) => logger.error(`error ${err.name}`, { e: renderError(err) }))
498504
.on('stalled', (jobId) => logger.warn(`stalled id=${jobId}`));
499505
}
500506
//#endregion

0 commit comments

Comments
 (0)