mirror of
https://codeberg.org/yeentown/barkey.git
synced 2025-07-08 13:04:34 +00:00
improve retryable error detection in ApPersonService.ts
This commit is contained in:
parent
41dfe7e329
commit
3808502f86
1 changed files with 11 additions and 6 deletions
|
@ -7,7 +7,6 @@ import { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common';
|
||||||
import promiseLimit from 'promise-limit';
|
import promiseLimit from 'promise-limit';
|
||||||
import { DataSource } from 'typeorm';
|
import { DataSource } from 'typeorm';
|
||||||
import { ModuleRef } from '@nestjs/core';
|
import { ModuleRef } from '@nestjs/core';
|
||||||
import { AbortError } from 'node-fetch';
|
|
||||||
import { UnrecoverableError } from 'bullmq';
|
import { UnrecoverableError } from 'bullmq';
|
||||||
import { DI } from '@/di-symbols.js';
|
import { DI } from '@/di-symbols.js';
|
||||||
import type { FollowingsRepository, InstancesRepository, MiMeta, UserProfilesRepository, UserPublickeysRepository, UsersRepository } from '@/models/_.js';
|
import type { FollowingsRepository, InstancesRepository, MiMeta, UserProfilesRepository, UserPublickeysRepository, UsersRepository } from '@/models/_.js';
|
||||||
|
@ -44,6 +43,8 @@ import { AppLockService } from '@/core/AppLockService.js';
|
||||||
import { MemoryKVCache } from '@/misc/cache.js';
|
import { MemoryKVCache } from '@/misc/cache.js';
|
||||||
import { HttpRequestService } from '@/core/HttpRequestService.js';
|
import { HttpRequestService } from '@/core/HttpRequestService.js';
|
||||||
import { verifyFieldLinks } from '@/misc/verify-field-link.js';
|
import { verifyFieldLinks } from '@/misc/verify-field-link.js';
|
||||||
|
import { isRetryableError } from '@/misc/is-retryable-error.js';
|
||||||
|
import { IdentifiableError } from '@/misc/identifiable-error.js';
|
||||||
import { getApId, getApType, isActor, isCollection, isCollectionOrOrderedCollection, isPropertyValue } from '../type.js';
|
import { getApId, getApType, isActor, isCollection, isCollectionOrOrderedCollection, isPropertyValue } from '../type.js';
|
||||||
import { extractApHashtags } from './tag.js';
|
import { extractApHashtags } from './tag.js';
|
||||||
import type { OnModuleInit } from '@nestjs/common';
|
import type { OnModuleInit } from '@nestjs/common';
|
||||||
|
@ -361,7 +362,7 @@ export class ApPersonService implements OnModuleInit, OnApplicationShutdown {
|
||||||
].map((p): Promise<'public' | 'private'> => p
|
].map((p): Promise<'public' | 'private'> => p
|
||||||
.then(isPublic => isPublic ? 'public' : 'private')
|
.then(isPublic => isPublic ? 'public' : 'private')
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
if (!(err instanceof StatusError) || err.isRetryable) {
|
if (isRetryableError(err)) {
|
||||||
this.logger.error('error occurred while fetching following/followers collection', { stack: err });
|
this.logger.error('error occurred while fetching following/followers collection', { stack: err });
|
||||||
}
|
}
|
||||||
return 'private';
|
return 'private';
|
||||||
|
@ -493,7 +494,7 @@ export class ApPersonService implements OnModuleInit, OnApplicationShutdown {
|
||||||
user = u as MiRemoteUser;
|
user = u as MiRemoteUser;
|
||||||
publicKey = await this.userPublickeysRepository.findOneBy({ userId: user.id });
|
publicKey = await this.userPublickeysRepository.findOneBy({ userId: user.id });
|
||||||
} else {
|
} else {
|
||||||
this.logger.error(e instanceof Error ? e : new Error(e as string));
|
this.logger.error('Error creating Person:', e instanceof Error ? e : new Error(e as string));
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -592,7 +593,7 @@ export class ApPersonService implements OnModuleInit, OnApplicationShutdown {
|
||||||
].map((p): Promise<'public' | 'private' | undefined> => p
|
].map((p): Promise<'public' | 'private' | undefined> => p
|
||||||
.then(isPublic => isPublic ? 'public' : 'private')
|
.then(isPublic => isPublic ? 'public' : 'private')
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
if (!(err instanceof StatusError) || err.isRetryable) {
|
if (isRetryableError(err)) {
|
||||||
this.logger.error('error occurred while fetching following/followers collection', { stack: err });
|
this.logger.error('error occurred while fetching following/followers collection', { stack: err });
|
||||||
// Do not update the visibility on transient errors.
|
// Do not update the visibility on transient errors.
|
||||||
return undefined;
|
return undefined;
|
||||||
|
@ -818,8 +819,12 @@ export class ApPersonService implements OnModuleInit, OnApplicationShutdown {
|
||||||
|
|
||||||
// Resolve to (Ordered)Collection Object
|
// Resolve to (Ordered)Collection Object
|
||||||
const collection = user.featured ? await _resolver.resolveCollection(user.featured, true, user.uri).catch(err => {
|
const collection = user.featured ? await _resolver.resolveCollection(user.featured, true, user.uri).catch(err => {
|
||||||
if (err instanceof AbortError || err instanceof StatusError) {
|
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: ${err.name}: ${err.message}`);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.logger.error('Failed to update featured notes:', err);
|
this.logger.error('Failed to update featured notes:', err);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue