reduce, clarify, and normalize more error messages

This commit is contained in:
Hazelnoot 2025-03-16 12:37:46 -04:00
parent b2c5029c3e
commit ce08bd1b42
34 changed files with 114 additions and 97 deletions

View file

@ -22,6 +22,7 @@ import { Packed } from '@/misc/json-schema.js';
import { UtilityService } from '@/core/UtilityService.js';
import { DownloadService } from '@/core/DownloadService.js';
import { EmailService } from '@/core/EmailService.js';
import { renderInlineError } from '@/misc/render-inline-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
@ -113,7 +114,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
userStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing user:', err);
rej(err);
} else {
res();
@ -145,7 +146,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
profileStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing profile:', err);
rej(err);
} else {
res();
@ -179,7 +180,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
ipStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing IPs:', err);
rej(err);
} else {
res();
@ -214,7 +215,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
notesStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing notes:', err);
rej(err);
} else {
res();
@ -275,7 +276,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
followingStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing following:', err);
rej(err);
} else {
res();
@ -345,7 +346,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
followerStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing followers:', err);
rej(err);
} else {
res();
@ -406,7 +407,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
filesStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing drive:', err);
rej(err);
} else {
res();
@ -432,7 +433,7 @@ export class ExportAccountDataProcessorService {
await this.downloadService.downloadUrl(file.url, filePath);
downloaded = true;
} catch (e) {
this.logger.error(e instanceof Error ? e : new Error(e as string));
this.logger.error(`Error writing drive file ${file.id} (${file.name}): ${renderInlineError(e)}`);
}
if (!downloaded) {
@ -464,7 +465,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
mutingStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing mutings:', err);
rej(err);
} else {
res();
@ -527,7 +528,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
blockingStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing blockings:', err);
rej(err);
} else {
res();
@ -589,7 +590,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
favoriteStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing favorites:', err);
rej(err);
} else {
res();
@ -650,7 +651,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
antennaStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing antennas:', err);
rej(err);
} else {
res();
@ -708,7 +709,7 @@ export class ExportAccountDataProcessorService {
return new Promise<void>((res, rej) => {
listStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error writing lists:', err);
rej(err);
} else {
res();

View file

@ -53,7 +53,7 @@ export class ExportAntennasProcessorService {
return new Promise((resolve, reject) => {
stream.write(input, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error exporting antennas:', err);
reject();
} else {
resolve();

View file

@ -87,7 +87,7 @@ export class ExportBlockingProcessorService {
await new Promise<void>((res, rej) => {
stream.write(content + '\n', err => {
if (err) {
this.logger.error(err);
this.logger.error('Error exporting blocking:', err);
rej(err);
} else {
res();

View file

@ -66,7 +66,7 @@ export class ExportCustomEmojisProcessorService {
return new Promise<void>((res, rej) => {
metaStream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error exporting custom emojis:', err);
rej(err);
} else {
res();
@ -101,7 +101,7 @@ export class ExportCustomEmojisProcessorService {
await this.downloadService.downloadUrl(emoji.originalUrl, emojiPath);
downloaded = true;
} catch (e) { // TODO: 何度か再試行
this.logger.error(e instanceof Error ? e : new Error(e as string));
this.logger.error('Error exporting custom emojis:', e as Error);
}
if (!downloaded) {

View file

@ -64,7 +64,7 @@ export class ExportFavoritesProcessorService {
return new Promise<void>((res, rej) => {
stream.write(text, err => {
if (err) {
this.logger.error(err);
this.logger.error('Error exporting favorites:', err);
rej(err);
} else {
res();

View file

@ -98,7 +98,7 @@ export class ExportFollowingProcessorService {
await new Promise<void>((res, rej) => {
stream.write(content + '\n', err => {
if (err) {
this.logger.error(err);
this.logger.error('Error exporting following:', err);
rej(err);
} else {
res();

View file

@ -88,7 +88,7 @@ export class ExportMutingProcessorService {
await new Promise<void>((res, rej) => {
stream.write(content + '\n', err => {
if (err) {
this.logger.error(err);
this.logger.error('Error exporting mutings:', err);
rej(err);
} else {
res();

View file

@ -74,7 +74,7 @@ export class ExportUserListsProcessorService {
await new Promise<void>((res, rej) => {
stream.write(content + '\n', err => {
if (err) {
this.logger.error(err);
this.logger.error('Error exporting lists:', err);
rej(err);
} else {
res();

View file

@ -73,7 +73,7 @@ export class ImportAntennasProcessorService {
for (const antenna of job.data.antenna) {
if (antenna.keywords.length === 0 || antenna.keywords[0].every(x => x === '')) continue;
if (!validate(antenna)) {
this.logger.warn('Validation Failed');
this.logger.warn('Antenna validation failed');
continue;
}
const result = await this.antennasRepository.insertOne({
@ -96,7 +96,7 @@ export class ImportAntennasProcessorService {
this.globalEventService.publishInternalEvent('antennaCreated', result);
}
} catch (err: any) {
this.logger.error(err);
this.logger.error('Error importing antennas:', err);
}
}
}

View file

@ -97,7 +97,7 @@ export class ImportBlockingProcessorService {
this.queueService.createBlockJob([{ from: { id: user.id }, to: { id: target.id }, silent: true }]);
} catch (e) {
this.logger.warn(`Error: ${e}`);
this.logger.error('Error importing blockings:', e as Error);
}
}
}

View file

@ -16,6 +16,7 @@ import { DriveService } from '@/core/DriveService.js';
import { DownloadService } from '@/core/DownloadService.js';
import { bindThis } from '@/decorators.js';
import type { Config } from '@/config.js';
import { renderInlineError } from '@/misc/render-inline-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbUserImportJobData } from '../types.js';
@ -65,7 +66,7 @@ export class ImportCustomEmojisProcessorService {
await this.downloadService.downloadUrl(file.url, destPath, { operationTimeout: this.config.import?.downloadTimeout, maxSize: this.config.import?.maxFileSize });
} catch (e) { // TODO: 何度か再試行
if (e instanceof Error || typeof e === 'string') {
this.logger.error(e);
this.logger.error('Error importing custom emojis:', e as Error);
}
throw e;
}
@ -117,7 +118,7 @@ export class ImportCustomEmojisProcessorService {
});
} catch (e) {
if (e instanceof Error || typeof e === 'string') {
this.logger.error(`couldn't import ${emojiPath} for ${emojiInfo.name}: ${e}`);
this.logger.error(`couldn't import ${emojiPath} for ${emojiInfo.name}: ${renderInlineError(e)}`);
}
continue;
}
@ -127,9 +128,7 @@ export class ImportCustomEmojisProcessorService {
this.logger.succ('Imported');
} catch (e) {
if (e instanceof Error || typeof e === 'string') {
this.logger.error(e);
}
this.logger.error('Error importing custom emojis:', e as Error);
cleanup();
throw e;
}

View file

@ -97,7 +97,7 @@ export class ImportFollowingProcessorService {
this.queueService.createFollowJob([{ from: user, to: { id: target.id }, silent: true, withReplies: job.data.withReplies }]);
} catch (e) {
this.logger.warn(`Error: ${e}`);
this.logger.error('Error importing followings:', e as Error);
}
}
}

View file

@ -14,6 +14,7 @@ import { DownloadService } from '@/core/DownloadService.js';
import { UserMutingService } from '@/core/UserMutingService.js';
import { UtilityService } from '@/core/UtilityService.js';
import { bindThis } from '@/decorators.js';
import { renderInlineError } from '@/misc/render-inline-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbUserImportJobData } from '../types.js';
@ -92,7 +93,7 @@ export class ImportMutingProcessorService {
await this.userMutingService.mute(user, target);
} catch (e) {
this.logger.warn(`Error in line:${linenum} ${e}`);
this.logger.warn(`Error in line:${linenum} ${renderInlineError(e)}`);
}
}

View file

@ -192,9 +192,7 @@ export class ImportNotesProcessorService {
await fsp.writeFile(destPath, '', 'binary');
await this.downloadUrl(file.url, destPath);
} catch (e) { // TODO: 何度か再試行
if (e instanceof Error || typeof e === 'string') {
this.logger.error(e);
}
this.logger.error('Error importing notes:', e as Error);
throw e;
}
@ -222,9 +220,7 @@ export class ImportNotesProcessorService {
await fsp.writeFile(destPath, '', 'binary');
await this.downloadUrl(file.url, destPath);
} catch (e) { // TODO: 何度か再試行
if (e instanceof Error || typeof e === 'string') {
this.logger.error(e);
}
this.logger.error('Error importing notes:', e as Error);
throw e;
}
@ -255,9 +251,7 @@ export class ImportNotesProcessorService {
await fsp.writeFile(destPath, '', 'binary');
await this.downloadUrl(file.url, destPath);
} catch (e) { // TODO: 何度か再試行
if (e instanceof Error || typeof e === 'string') {
this.logger.error(e);
}
this.logger.error('Error importing notes:', e as Error);
throw e;
}
@ -313,9 +307,7 @@ export class ImportNotesProcessorService {
await fsp.writeFile(path, '', 'utf-8');
await this.downloadUrl(file.url, path);
} catch (e) { // TODO: 何度か再試行
if (e instanceof Error || typeof e === 'string') {
this.logger.error(e);
}
this.logger.error('Error importing notes:', e as Error);
throw e;
}
@ -365,7 +357,7 @@ export class ImportNotesProcessorService {
try {
await this.downloadUrl(file.url, filePath);
} catch (e) { // TODO: 何度か再試行
this.logger.error(e instanceof Error ? e : new Error(e as string));
this.logger.error('Error importing notes:', e as Error);
}
const driveFile = await this.driveService.addFile({
user: user,
@ -504,7 +496,7 @@ export class ImportNotesProcessorService {
try {
await this.downloadUrl(file.url, filePath);
} catch (e) { // TODO: 何度か再試行
this.logger.error(e instanceof Error ? e : new Error(e as string));
this.logger.error('Error importing notes:', e as Error);
}
const driveFile = await this.driveService.addFile({
user: user,
@ -628,7 +620,7 @@ export class ImportNotesProcessorService {
try {
await this.downloadUrl(videos[0].url, filePath);
} catch (e) { // TODO: 何度か再試行
this.logger.error(e instanceof Error ? e : new Error(e as string));
this.logger.error('Error importing notes:', e as Error);
}
const driveFile = await this.driveService.addFile({
user: user,
@ -653,7 +645,7 @@ export class ImportNotesProcessorService {
try {
await this.downloadUrl(file.media_url_https, filePath);
} catch (e) { // TODO: 何度か再試行
this.logger.error(e instanceof Error ? e : new Error(e as string));
this.logger.error('Error importing notes:', e as Error);
}
const driveFile = await this.driveService.addFile({
@ -673,7 +665,7 @@ export class ImportNotesProcessorService {
const createdNote = await this.noteCreateService.import(user, { createdAt: date, reply: parentNote, text: text, files: files });
if (tweet.childNotes) this.queueService.createImportTweetsToDbJob(user, tweet.childNotes, createdNote.id);
} catch (e) {
this.logger.warn(`Error: ${e}`);
this.logger.error('Error importing notes:', e as Error);
}
}

View file

@ -15,6 +15,7 @@ import { UserListService } from '@/core/UserListService.js';
import { IdService } from '@/core/IdService.js';
import { UtilityService } from '@/core/UtilityService.js';
import { bindThis } from '@/decorators.js';
import { renderInlineError } from '@/misc/render-inline-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbUserImportJobData } from '../types.js';
@ -102,7 +103,7 @@ export class ImportUserListsProcessorService {
this.userListService.addMember(target, list!, user);
} catch (e) {
this.logger.warn(`Error in line:${linenum} ${e}`);
this.logger.warn(`Error in line:${linenum} ${renderInlineError(e)}`);
}
}

View file

@ -12,6 +12,7 @@ import { DI } from '@/di-symbols.js';
import { NotificationService } from '@/core/NotificationService.js';
import { IdentifiableError } from '@/misc/identifiable-error.js';
import type { MiScheduleNoteType } from '@/models/NoteSchedule.js';
import { renderInlineError } from '@/misc/render-inline-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { ScheduleNotePostJobData } from '../types.js';
@ -129,10 +130,11 @@ export class ScheduleNotePostProcessorService {
channel,
}).catch(async (err: IdentifiableError) => {
this.notificationService.createNotification(me.id, 'scheduledNoteFailed', {
reason: err.message,
reason: renderInlineError(err),
});
await this.noteScheduleRepository.remove(data);
throw this.logger.error(`Schedule Note Failed Reason: ${err.message}`);
this.logger.error(`Scheduled note failed:`, err);
throw err;
});
await this.noteScheduleRepository.remove(data);
this.notificationService.createNotification(me.id, 'scheduledNotePosted', {

View file

@ -12,6 +12,7 @@ import type Logger from '@/logger.js';
import { HttpRequestService } from '@/core/HttpRequestService.js';
import { StatusError } from '@/misc/status-error.js';
import { bindThis } from '@/decorators.js';
import { renderInlineError } from '@/misc/render-inline-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import { SystemWebhookDeliverJobData } from '../types.js';
@ -63,7 +64,7 @@ export class SystemWebhookDeliverProcessorService {
return 'Success';
} catch (res) {
this.logger.error(res as Error);
this.logger.error(`Failed to send webhook: ${renderInlineError(res)}`);
this.systemWebhooksRepository.update({ id: job.data.webhookId }, {
latestSentAt: new Date(),