summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/backend/src/core/activitypub/models/ApPersonService.ts7
-rw-r--r--packages/backend/src/misc/render-inline-error.ts35
-rw-r--r--packages/backend/src/queue/QueueProcessorService.ts17
-rw-r--r--packages/backend/src/queue/processors/InboxProcessorService.ts19
4 files changed, 42 insertions, 36 deletions
diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts
index e70673dd9f..44582f6f7d 100644
--- a/packages/backend/src/core/activitypub/models/ApPersonService.ts
+++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts
@@ -55,6 +55,7 @@ import type { ApLoggerService } from '../ApLoggerService.js';
import type { ApImageService } from './ApImageService.js';
import type { IActor, ICollection, IObject, IOrderedCollection } from '../type.js';
+import { renderInlineError } from '@/misc/render-inline-error.js';
const nameLength = 128;
const summaryLength = 2048;
@@ -820,11 +821,7 @@ export class ApPersonService implements OnModuleInit, OnApplicationShutdown {
// Resolve to (Ordered)Collection Object
const collection = user.featured ? await _resolver.resolveCollection(user.featured, true, user.uri).catch(err => {
if (isRetryableError(err)) {
- if (err instanceof IdentifiableError) {
- this.logger.warn(`Failed to update featured notes: ${err.id}: ${err.message}`);
- } else {
- this.logger.warn(`Failed to update featured notes: ${err.name}: ${err.message}`);
- }
+ this.logger.warn(`Failed to update featured notes: ${renderInlineError(err)}`);
} else {
this.logger.error('Failed to update featured notes:', err);
}
diff --git a/packages/backend/src/misc/render-inline-error.ts b/packages/backend/src/misc/render-inline-error.ts
new file mode 100644
index 0000000000..36de0262ef
--- /dev/null
+++ b/packages/backend/src/misc/render-inline-error.ts
@@ -0,0 +1,35 @@
+/*
+ * SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { IdentifiableError } from '@/misc/identifiable-error.js';
+import { StatusError } from '@/misc/status-error.js';
+
+export function renderInlineError(err: unknown): string {
+ if (err instanceof IdentifiableError) {
+ if (err.message) {
+ return `${err.name} ${err.id}: ${err.message}`;
+ } else {
+ return `${err.name} ${err.id}`;
+ }
+ }
+
+ if (err instanceof StatusError) {
+ if (err.message) {
+ return `${err.name} ${err.statusCode}: ${err.message}`;
+ } else {
+ return `${err.name} ${err.statusCode}`;
+ }
+ }
+
+ if (err instanceof Error) {
+ if (err.message) {
+ return `${err.name}: ${err.message}`;
+ } else {
+ return err.name;
+ }
+ }
+
+ return String(err);
+}
diff --git a/packages/backend/src/queue/QueueProcessorService.ts b/packages/backend/src/queue/QueueProcessorService.ts
index de74b883d5..341469e4e2 100644
--- a/packages/backend/src/queue/QueueProcessorService.ts
+++ b/packages/backend/src/queue/QueueProcessorService.ts
@@ -14,6 +14,7 @@ import { bindThis } from '@/decorators.js';
import { CheckModeratorsActivityProcessorService } from '@/queue/processors/CheckModeratorsActivityProcessorService.js';
import { StatusError } from '@/misc/status-error.js';
import { IdentifiableError } from '@/misc/identifiable-error.js';
+import { renderInlineError } from '@/misc/render-inline-error.js';
import { UserWebhookDeliverProcessorService } from './processors/UserWebhookDeliverProcessorService.js';
import { SystemWebhookDeliverProcessorService } from './processors/SystemWebhookDeliverProcessorService.js';
import { EndedPollNotificationProcessorService } from './processors/EndedPollNotificationProcessorService.js';
@@ -140,20 +141,8 @@ export class QueueProcessorService implements OnApplicationShutdown {
// 何故かeがundefinedで来ることがある
if (!e) return '?';
- if (e instanceof Bull.UnrecoverableError || e instanceof AbortError || e.name === 'AbortError') {
- return `${e.name}: ${e.message}`;
- }
-
- if (e instanceof StatusError) {
- if (e.statusMessage) {
- return `${e.name} ${e.statusCode}: ${e.statusMessage}`;
- } else {
- return `${e.name} ${e.statusCode}`;
- }
- }
-
- if (e instanceof IdentifiableError) {
- return `${e.name} ${e.id}: ${e.message}`;
+ if (e instanceof Bull.UnrecoverableError || e instanceof AbortError || e.name === 'AbortError' || e instanceof StatusError || e instanceof IdentifiableError) {
+ return renderInlineError(e);
}
return {
diff --git a/packages/backend/src/queue/processors/InboxProcessorService.ts b/packages/backend/src/queue/processors/InboxProcessorService.ts
index 93d0a08003..a069d390db 100644
--- a/packages/backend/src/queue/processors/InboxProcessorService.ts
+++ b/packages/backend/src/queue/processors/InboxProcessorService.ts
@@ -32,6 +32,7 @@ import type { Config } from '@/config.js';
import { ApLogService, calculateDurationSince } from '@/core/ApLogService.js';
import { UpdateInstanceQueue } from '@/core/UpdateInstanceQueue.js';
import { isRetryableError } from '@/misc/is-retryable-error.js';
+import { renderInlineError } from '@/misc/render-inline-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type { InboxJobData } from '../types.js';
@@ -300,24 +301,8 @@ export class InboxProcessorService implements OnApplicationShutdown {
}
}
- if (e instanceof StatusError && !e.isRetryable) {
- return `skip: permanent error ${e.statusCode}`;
- }
-
- if (e instanceof IdentifiableError && !e.isRetryable) {
- if (e.message) {
- return `skip: permanent error ${e.id}: ${e.message}`;
- } else {
- return `skip: permanent error ${e.id}`;
- }
- }
-
if (!isRetryableError(e)) {
- if (e instanceof Error) {
- return `skip: permanent error ${e.name}: ${e.message}`;
- } else {
- return `skip: permanent error ${e}`;
- }
+ return `skip: permanent error ${renderInlineError(e)}`;
}
throw e;