reduce, clarify, and normalize more error messages
This commit is contained in:
parent
b2c5029c3e
commit
ce08bd1b42
34 changed files with 114 additions and 97 deletions
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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', {
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue