summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue/processors/DeliverProcessorService.ts
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-06-26 19:57:45 +0000
committerdakkar <dakkar@thenautilus.net>2024-06-26 19:57:45 +0000
commitdc4f6c8016ccece79f8f2b75a5378c643e884f0b (patch)
tree3e2c9e998a2f97244a37f3f8cb7f1831e4108ab7 /packages/backend/src/queue/processors/DeliverProcessorService.ts
parentmerge: Release 2024.3.3 (!501) (diff)
parentmerge: parse `notRespondingSince` from redis instance cache (!560) (diff)
downloadsharkey-dc4f6c8016ccece79f8f2b75a5378c643e884f0b.tar.gz
sharkey-dc4f6c8016ccece79f8f2b75a5378c643e884f0b.tar.bz2
sharkey-dc4f6c8016ccece79f8f2b75a5378c643e884f0b.zip
merge: release 2024.5.0 (!556)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/556 Approved-by: Tess K <me@thvxl.se>
Diffstat (limited to 'packages/backend/src/queue/processors/DeliverProcessorService.ts')
-rw-r--r--packages/backend/src/queue/processors/DeliverProcessorService.ts20
1 files changed, 18 insertions, 2 deletions
diff --git a/packages/backend/src/queue/processors/DeliverProcessorService.ts b/packages/backend/src/queue/processors/DeliverProcessorService.ts
index 5fed070929..d665945861 100644
--- a/packages/backend/src/queue/processors/DeliverProcessorService.ts
+++ b/packages/backend/src/queue/processors/DeliverProcessorService.ts
@@ -5,6 +5,7 @@
import { Inject, Injectable } from '@nestjs/common';
import * as Bull from 'bullmq';
+import { Not } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { InstancesRepository } from '@/models/_.js';
import type Logger from '@/logger.js';
@@ -62,7 +63,7 @@ export class DeliverProcessorService {
if (suspendedHosts == null) {
suspendedHosts = await this.instancesRepository.find({
where: {
- isSuspended: true,
+ suspensionState: Not('none'),
},
});
this.suspendedHostsCache.set(suspendedHosts);
@@ -79,6 +80,7 @@ export class DeliverProcessorService {
if (i.isNotResponding) {
this.federatedInstanceService.update(i.id, {
isNotResponding: false,
+ notRespondingSince: null,
});
}
@@ -98,6 +100,20 @@ export class DeliverProcessorService {
if (!i.isNotResponding) {
this.federatedInstanceService.update(i.id, {
isNotResponding: true,
+ notRespondingSince: new Date(),
+ });
+ } else if (i.notRespondingSince) {
+ // 1週間以上不通ならサスペンド
+ if (i.suspensionState === 'none' && i.notRespondingSince.getTime() <= Date.now() - 1000 * 60 * 60 * 24 * 7) {
+ this.federatedInstanceService.update(i.id, {
+ suspensionState: 'autoSuspendedForNotResponding',
+ });
+ }
+ } else {
+ // isNotRespondingがtrueでnotRespondingSinceがnullの場合はnotRespondingSinceをセット
+ // notRespondingSinceは新たな機能なので、それ以前のデータにはnotRespondingSinceがない場合がある
+ this.federatedInstanceService.update(i.id, {
+ notRespondingSince: new Date(),
});
}
@@ -116,7 +132,7 @@ export class DeliverProcessorService {
if (job.data.isSharedInbox && res.statusCode === 410) {
this.federatedInstanceService.fetch(host).then(i => {
this.federatedInstanceService.update(i.id, {
- isSuspended: true,
+ suspensionState: 'goneSuspended',
});
});
throw new Bull.UnrecoverableError(`${host} is gone`);