Skip to content

Commit

Permalink
update deps (#889)
Browse files Browse the repository at this point in the history
- メンテナンスされないredis-lockを自前実装に変更
- 既にロックされている場合のリトライ間隔を調整
  • Loading branch information
u1-liquid authored Jan 14, 2025
1 parent 5f6cbe0 commit 68c3eb5
Show file tree
Hide file tree
Showing 35 changed files with 550 additions and 521 deletions.
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"type": "git",
"url": "https://github.com/MisskeyIO/misskey.git"
},
"packageManager": "[email protected].3",
"packageManager": "[email protected].4",
"workspaces": [
"packages/frontend",
"packages/backend",
Expand Down Expand Up @@ -63,19 +63,19 @@
"cssnano": "7.0.6",
"execa": "9.5.2",
"js-yaml": "4.1.0",
"postcss": "8.4.49",
"postcss": "8.5.1",
"terser": "5.37.0",
"typescript": "5.7.3"
},
"devDependencies": {
"@types/node": "22.10.5",
"@types/node": "22.10.6",
"@typescript-eslint/eslint-plugin": "7.10.0",
"@typescript-eslint/parser": "7.10.0",
"cross-env": "7.0.3",
"cypress": "13.17.0",
"eslint": "8.57.1",
"ncp": "2.0.0",
"start-server-and-test": "2.0.9"
"start-server-and-test": "2.0.10"
},
"optionalDependencies": {
"@tensorflow/tfjs-core": "4.22.0"
Expand Down
7 changes: 3 additions & 4 deletions packages/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"body-parser": "1.20.3",
"bullmq": "5.34.9",
"bullmq": "5.34.10",
"cacheable-lookup": "7.0.0",
"cbor": "10.0.3",
"chalk": "5.4.1",
Expand Down Expand Up @@ -131,7 +131,7 @@
"json5": "2.2.3",
"jsonld": "8.3.3",
"jsrsasign": "11.1.0",
"meilisearch": "0.47.0",
"meilisearch": "0.48.0",
"mfm-js": "0.24.0",
"microformats-parser": "2.0.2",
"mime-types": "2.1.35",
Expand Down Expand Up @@ -163,7 +163,6 @@
"random-seed": "0.3.0",
"ratelimiter": "3.4.1",
"re2": "1.21.4",
"redis-lock": "0.1.4",
"reflect-metadata": "0.2.2",
"rename": "1.0.4",
"rss-parser": "3.13.0",
Expand Down Expand Up @@ -210,7 +209,7 @@
"@types/jsrsasign": "10.5.15",
"@types/mime-types": "2.1.4",
"@types/ms": "0.7.34",
"@types/node": "22.10.5",
"@types/node": "22.10.6",
"@types/node-forge": "1.3.11",
"@types/nodemailer": "6.4.17",
"@types/oauth": "0.9.6",
Expand Down
13 changes: 0 additions & 13 deletions packages/backend/src/@types/redis-lock.d.ts

This file was deleted.

44 changes: 0 additions & 44 deletions packages/backend/src/core/AppLockService.ts

This file was deleted.

6 changes: 0 additions & 6 deletions packages/backend/src/core/CoreModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { AccountUpdateService } from './AccountUpdateService.js';
import { AiService } from './AiService.js';
import { AnnouncementService } from './AnnouncementService.js';
import { AntennaService } from './AntennaService.js';
import { AppLockService } from './AppLockService.js';
import { AchievementService } from './AchievementService.js';
import { AvatarDecorationService } from './AvatarDecorationService.js';
import { CaptchaService } from './CaptchaService.js';
Expand Down Expand Up @@ -149,7 +148,6 @@ const $AccountUpdateService: Provider = { provide: 'AccountUpdateService', useEx
const $AiService: Provider = { provide: 'AiService', useExisting: AiService };
const $AnnouncementService: Provider = { provide: 'AnnouncementService', useExisting: AnnouncementService };
const $AntennaService: Provider = { provide: 'AntennaService', useExisting: AntennaService };
const $AppLockService: Provider = { provide: 'AppLockService', useExisting: AppLockService };
const $AchievementService: Provider = { provide: 'AchievementService', useExisting: AchievementService };
const $AvatarDecorationService: Provider = { provide: 'AvatarDecorationService', useExisting: AvatarDecorationService };
const $CaptchaService: Provider = { provide: 'CaptchaService', useExisting: CaptchaService };
Expand Down Expand Up @@ -292,7 +290,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
AiService,
AnnouncementService,
AntennaService,
AppLockService,
AchievementService,
AvatarDecorationService,
CaptchaService,
Expand Down Expand Up @@ -429,7 +426,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$AiService,
$AnnouncementService,
$AntennaService,
$AppLockService,
$AchievementService,
$AvatarDecorationService,
$CaptchaService,
Expand Down Expand Up @@ -567,7 +563,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
AiService,
AnnouncementService,
AntennaService,
AppLockService,
AchievementService,
AvatarDecorationService,
CaptchaService,
Expand Down Expand Up @@ -703,7 +698,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$AiService,
$AnnouncementService,
$AntennaService,
$AppLockService,
$AchievementService,
$AvatarDecorationService,
$CaptchaService,
Expand Down
5 changes: 4 additions & 1 deletion packages/backend/src/core/QueueService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,10 @@ export class QueueService {

@bindThis
public createReportAbuseJob(report: MiAbuseUserReport) {
return this.dbQueue.add('reportAbuse', report);
return this.dbQueue.add('reportAbuse', report, {
removeOnComplete: true,
removeOnFail: true,
});
}

@bindThis
Expand Down
15 changes: 9 additions & 6 deletions packages/backend/src/core/activitypub/ApInboxService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import { Inject, Injectable } from '@nestjs/common';
import { In } from 'typeorm';
import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import type { Config } from '@/config.js';
import { UserFollowingService } from '@/core/UserFollowingService.js';
Expand All @@ -14,8 +15,8 @@ import { NotePiningService } from '@/core/NotePiningService.js';
import { UserBlockingService } from '@/core/UserBlockingService.js';
import { NoteDeleteService } from '@/core/NoteDeleteService.js';
import { NoteCreateService } from '@/core/NoteCreateService.js';
import { acquireApObjectLock } from '@/misc/distributed-lock.js';
import { concat, toArray, toSingle, unique } from '@/misc/prelude/array.js';
import { AppLockService } from '@/core/AppLockService.js';
import type Logger from '@/logger.js';
import { MetaService } from '@/core/MetaService.js';
import { IdService } from '@/core/IdService.js';
Expand Down Expand Up @@ -49,6 +50,9 @@ export class ApInboxService {
@Inject(DI.config)
private config: Config,

@Inject(DI.redisForTimelines)
private redisForTimelines: Redis.Redis,

@Inject(DI.usersRepository)
private usersRepository: UsersRepository,

Expand Down Expand Up @@ -77,7 +81,6 @@ export class ApInboxService {
private userBlockingService: UserBlockingService,
private noteCreateService: NoteCreateService,
private noteDeleteService: NoteDeleteService,
private appLockService: AppLockService,
private apResolverService: ApResolverService,
private apDbResolverService: ApDbResolverService,
private apLoggerService: ApLoggerService,
Expand Down Expand Up @@ -312,7 +315,7 @@ export class ApInboxService {
const meta = await this.metaService.fetch();
if (this.utilityService.isItemListedIn(this.utilityService.extractHost(uri), meta.blockedHosts)) return 'skip: blocked host';

const unlock = await this.appLockService.getApLock(uri);
const unlock = await acquireApObjectLock(this.redisForTimelines, uri);

try {
// 既に同じURIを持つものが登録されていないかチェック
Expand Down Expand Up @@ -440,7 +443,7 @@ export class ApInboxService {
}
}

const unlock = await this.appLockService.getApLock(uri);
const unlock = await acquireApObjectLock(this.redisForTimelines, uri);

try {
const exist = await this.apNoteService.fetchNote(note);
Expand Down Expand Up @@ -543,7 +546,7 @@ export class ApInboxService {
private async deleteNote(actor: MiRemoteUser, uri: string): Promise<string> {
this.logger.info(`Deleting the Note: ${uri}`);

const unlock = await this.appLockService.getApLock(uri);
const unlock = await acquireApObjectLock(this.redisForTimelines, uri);

try {
const note = await this.apDbResolverService.getNoteFromApId(uri);
Expand Down Expand Up @@ -813,7 +816,7 @@ export class ApInboxService {
return 'ok: Question updated';
} else if (additionalCc && isPost(object)) {
const uri = getApId(object);
const unlock = await this.appLockService.getApLock(uri);
const unlock = await acquireApObjectLock(this.redisForTimelines, uri);

try {
const exist = await this.apNoteService.fetchNote(object);
Expand Down
9 changes: 6 additions & 3 deletions packages/backend/src/core/activitypub/models/ApNoteService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@

import { forwardRef, Inject, Injectable } from '@nestjs/common';
import { In } from 'typeorm';
import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import type { UsersRepository, PollsRepository, EmojisRepository } from '@/models/_.js';
import type { Config } from '@/config.js';
import type { MiRemoteUser } from '@/models/User.js';
import type { MiNote } from '@/models/Note.js';
import { acquireApObjectLock } from '@/misc/distributed-lock.js';
import { toArray, toSingle, unique } from '@/misc/prelude/array.js';
import type { MiEmoji } from '@/models/Emoji.js';
import { MetaService } from '@/core/MetaService.js';
import { AppLockService } from '@/core/AppLockService.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
import { NoteCreateService } from '@/core/NoteCreateService.js';
import type Logger from '@/logger.js';
Expand Down Expand Up @@ -47,6 +48,9 @@ export class ApNoteService {
@Inject(DI.config)
private config: Config,

@Inject(DI.redisForTimelines)
private redisForTimelines: Redis.Redis,

@Inject(DI.usersRepository)
private usersRepository: UsersRepository,

Expand All @@ -70,7 +74,6 @@ export class ApNoteService {
private apImageService: ApImageService,
private apQuestionService: ApQuestionService,
private metaService: MetaService,
private appLockService: AppLockService,
private pollService: PollService,
private noteCreateService: NoteCreateService,
private apDbResolverService: ApDbResolverService,
Expand Down Expand Up @@ -379,7 +382,7 @@ export class ApNoteService {
throw new StatusError('blocked host', 451);
}

const unlock = await this.appLockService.getApLock(uri);
const unlock = await acquireApObjectLock(this.redisForTimelines, uri);

try {
//#region このサーバーに既に登録されていたらそれを返す
Expand Down
9 changes: 6 additions & 3 deletions packages/backend/src/core/chart/charts/active-users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@

import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
import { AppLockService } from '@/core/AppLockService.js';
import * as Redis from 'ioredis';
import type { MiUser } from '@/models/User.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import { IdService } from '@/core/IdService.js';
import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/active-users.js';
Expand All @@ -28,11 +29,13 @@ export default class ActiveUsersChart extends Chart<typeof schema> { // eslint-d
@Inject(DI.db)
private db: DataSource,

private appLockService: AppLockService,
@Inject(DI.redisForTimelines)
private redisForTimelines: Redis.Redis,

private chartLoggerService: ChartLoggerService,
private idService: IdService,
) {
super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema);
}

protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
Expand Down
9 changes: 6 additions & 3 deletions packages/backend/src/core/chart/charts/ap-request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@

import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
import { AppLockService } from '@/core/AppLockService.js';
import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/ap-request.js';
Expand All @@ -22,10 +23,12 @@ export default class ApRequestChart extends Chart<typeof schema> { // eslint-dis
@Inject(DI.db)
private db: DataSource,

private appLockService: AppLockService,
@Inject(DI.redisForTimelines)
private redisForTimelines: Redis.Redis,

private chartLoggerService: ChartLoggerService,
) {
super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema);
}

protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
Expand Down
9 changes: 6 additions & 3 deletions packages/backend/src/core/chart/charts/drive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@

import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
import * as Redis from 'ioredis';
import type { MiDriveFile } from '@/models/DriveFile.js';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/drive.js';
Expand All @@ -23,10 +24,12 @@ export default class DriveChart extends Chart<typeof schema> { // eslint-disable
@Inject(DI.db)
private db: DataSource,

private appLockService: AppLockService,
@Inject(DI.redisForTimelines)
private redisForTimelines: Redis.Redis,

private chartLoggerService: ChartLoggerService,
) {
super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema);
}

protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
Expand Down
Loading

0 comments on commit 68c3eb5

Please sign in to comment.