From 384a3bed0953888a322459bfc5e9b9402eadc85a Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 10:09:44 +0900 Subject: [PATCH 1/4] perf(backend): reduce db query --- CHANGELOG.md | 1 + .../src/core/activitypub/models/ApNoteService.ts | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d031d4f85e..6a054604a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ - 「UIのアニメーションを減らす」 (`reduceAnimation`) で猫耳を撫でられなくなります ### Server +- サーバーの全体的なパフォーマンスを向上 - ノート作成時のパフォーマンスを向上 - アンテナのタイムライン取得時のパフォーマンスを向上 - チャンネルのタイムライン取得時のパフォーマンスを向上 diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts index 28bcbc6fab..2665e85346 100644 --- a/packages/backend/src/core/activitypub/models/ApNoteService.ts +++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts @@ -1,5 +1,6 @@ import { forwardRef, Inject, Injectable } from '@nestjs/common'; import promiseLimit from 'promise-limit'; +import { In } from 'typeorm'; import { DI } from '@/di-symbols.js'; import type { PollsRepository, EmojisRepository } from '@/models/index.js'; import type { Config } from '@/config.js'; @@ -341,15 +342,17 @@ export class ApNoteService { if (!tags) return []; const eomjiTags = toArray(tags).filter(isEmoji); + + const existingEmojis = await this.emojisRepository.findBy({ + host, + name: In(eomjiTags.map(tag => tag.name!.replace(/^:/, '').replace(/:$/, ''))), + }); return await Promise.all(eomjiTags.map(async tag => { const name = tag.name!.replace(/^:/, '').replace(/:$/, ''); tag.icon = toSingle(tag.icon); - const exists = await this.emojisRepository.findOneBy({ - host, - name, - }); + const exists = existingEmojis.find(x => x.name === name); if (exists) { if ((tag.updated != null && exists.updatedAt == null) From bd142b8fe5f0a7d0a1cce1a1bc9b93ca59435ed6 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 10:12:30 +0900 Subject: [PATCH 2/4] refactor --- packages/backend/src/core/activitypub/models/ApNoteService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts index 2665e85346..5ca5f6e843 100644 --- a/packages/backend/src/core/activitypub/models/ApNoteService.ts +++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts @@ -345,11 +345,11 @@ export class ApNoteService { const existingEmojis = await this.emojisRepository.findBy({ host, - name: In(eomjiTags.map(tag => tag.name!.replace(/^:/, '').replace(/:$/, ''))), + name: In(eomjiTags.map(tag => tag.name!.replaceAll(':', ''))), }); return await Promise.all(eomjiTags.map(async tag => { - const name = tag.name!.replace(/^:/, '').replace(/:$/, ''); + const name = tag.name!.replaceAll(':', ''); tag.icon = toSingle(tag.icon); const exists = existingEmojis.find(x => x.name === name); From fd05826187325bfa96bf368da23fadc8dc177c7f Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 10:30:06 +0900 Subject: [PATCH 3/4] fix(ci): use redis 7 --- .github/workflows/test-backend.yml | 2 +- .github/workflows/test-frontend.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-backend.yml b/.github/workflows/test-backend.yml index 44b6b4ba7e..f1e414dbbc 100644 --- a/.github/workflows/test-backend.yml +++ b/.github/workflows/test-backend.yml @@ -24,7 +24,7 @@ jobs: POSTGRES_DB: test-misskey POSTGRES_HOST_AUTH_METHOD: trust redis: - image: redis:6 + image: redis:7 ports: - 56312:6379 diff --git a/.github/workflows/test-frontend.yml b/.github/workflows/test-frontend.yml index 18c1a31aee..a5505d30d8 100644 --- a/.github/workflows/test-frontend.yml +++ b/.github/workflows/test-frontend.yml @@ -63,7 +63,7 @@ jobs: POSTGRES_DB: test-misskey POSTGRES_HOST_AUTH_METHOD: trust redis: - image: redis:6 + image: redis:7 ports: - 56312:6379 From 437de6417ecbed7251ca277b5aa35d3400f6e551 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 10:30:56 +0900 Subject: [PATCH 4/4] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a054604a8..e52c4e0d01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,9 @@ ## 13.x.x (unreleased) +### NOTE +- Redis 7.xが必要です + ### General - チャンネルをお気に入りに登録できるように - チャンネルにノートをピン留めできるように