Skip to content

fix(backend): MemoryKVCacheのキャッシュGC処理においてキャッシュが期限切れにならないことがある問題を修正#17512

Merged
syuilo merged 6 commits into
misskey-dev:developfrom
samunohito:fix/15500-cache-gc
Jun 11, 2026
Merged

fix(backend): MemoryKVCacheのキャッシュGC処理においてキャッシュが期限切れにならないことがある問題を修正#17512
syuilo merged 6 commits into
misskey-dev:developfrom
samunohito:fix/15500-cache-gc

Conversation

@samunohito

Copy link
Copy Markdown
Member

What

タイトルの通りです。

Why

fix #15500

Additional info (optional)

テストを追加し、対応前の状態で流すとfailになること、対応後の状態で流すとpassになることを確認しています

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label May 30, 2026
@github-actions github-actions Bot added packages/backend Server side specific issue/PR packages/backend:test labels May 30, 2026
@codecov

codecov Bot commented May 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 24.90%. Comparing base (a75f3ad) to head (2a4d3c4).
⚠️ Report is 5 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #17512      +/-   ##
===========================================
+ Coverage    24.87%   24.90%   +0.03%     
===========================================
  Files         1161     1161              
  Lines        39629    39628       -1     
  Branches     11041    11041              
===========================================
+ Hits          9859     9871      +12     
+ Misses       23849    23840       -9     
+ Partials      5921     5917       -4     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented May 30, 2026

Copy link
Copy Markdown
Contributor

このPRによるapi.jsonの差分
差分はありません。
Get diff files from Workflow Page

@github-actions

github-actions Bot commented May 30, 2026

Copy link
Copy Markdown
Contributor

Backend memory usage comparison

Before GC

Metric base (MB) head (MB) Diff (MB) Diff (%)
VmRSS 308.23 MB 306.70 MB -1.52 MB -0.49%
VmHWM 308.23 MB 306.70 MB -1.52 MB -0.49%
VmSize 23173.10 MB 23171.84 MB -1.25 MB 0%
VmData 1373.66 MB 1372.31 MB -1.34 MB -0.09%

After GC

Metric base (MB) head (MB) Diff (MB) Diff (%)
VmRSS 308.23 MB 306.70 MB -1.52 MB -0.49%
VmHWM 308.23 MB 306.70 MB -1.52 MB -0.49%
VmSize 23173.10 MB 23171.84 MB -1.25 MB 0%
VmData 1373.66 MB 1372.31 MB -1.34 MB -0.09%

After Request

Metric base (MB) head (MB) Diff (MB) Diff (%)
VmRSS 308.56 MB 307.13 MB -1.43 MB -0.46%
VmHWM 308.56 MB 307.13 MB -1.43 MB -0.46%
VmSize 23173.10 MB 23171.84 MB -1.25 MB 0%
VmData 1373.66 MB 1372.31 MB -1.34 MB -0.09%

See workflow logs for details

@syuilo

syuilo commented Jun 8, 2026

Copy link
Copy Markdown
Member

なんかテストが通らん

@kakkokari-gtyih

Copy link
Copy Markdown
Member

re-runしても落ちるので何かがおかしそう

@samunohito

Copy link
Copy Markdown
Member Author

テストのステップに入るよりも前のステップで落ちてるっぽい…?

@samunohito

Copy link
Copy Markdown
Member Author
  • 他ブランチでも安定して成功しているとは言えない
  • 何度か実行したがいずれも違う理由で止まっているように見受けられる

…という点から、ただ単にフレーキーなだけという可能性が高いです。
修正内容的に連合に影響するようなものでもないですし…

@syuilo

syuilo commented Jun 11, 2026

Copy link
Copy Markdown
Member

@syuilo

syuilo commented Jun 11, 2026

Copy link
Copy Markdown
Member

何度やっても成功しない

@syuilo

syuilo commented Jun 11, 2026

Copy link
Copy Markdown
Member

うぐー!

@samunohito

Copy link
Copy Markdown
Member Author

this.cache.delete()をコメントアウト+テストもskipして成功するか確認中

@samunohito

samunohito commented Jun 11, 2026

Copy link
Copy Markdown
Member Author

MemoryKVCacheというより、使う側の実装とかみ合わせが悪かったようです。

for (const [k, v] of this.uriPersonCache.entries) {
if (v.value?.id === user.id) {
this.uriPersonCache.set(k, user);
}
}
でMapのアイテムをループで走査していますが、走査しながら中身を変更(今回はdelete + add)すると常に最後尾に追加され続け、ループから抜け出せなくなるようでした

@samunohito

Copy link
Copy Markdown
Member Author

pass

@syuilo syuilo merged commit e093b32 into misskey-dev:develop Jun 11, 2026
39 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in [実験中] 管理用 Jun 11, 2026
@syuilo

syuilo commented Jun 11, 2026

Copy link
Copy Markdown
Member

👍🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

packages/backend:test packages/backend Server side specific issue/PR size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

Development

Successfully merging this pull request may close these issues.

lifetimeを超過したメモリキャッシュの破棄が適切に動いていない?

3 participants