Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(backend): meUpdatedイベントに更新後のアカウント情報を含まないように #15063

Draft
wants to merge 5 commits into
base: develop
Choose a base branch
from

Conversation

kakkokari-gtyih
Copy link
Contributor

What

フロントエンドが/api/iを呼び出すことでアカウント情報を得るようにした。これにより

  • Redis PubSubストリーム内を巨大なデータが行き来する回数を減らしパフォーマンスが向上することが考えられる
  • publish処理が正確なアカウント情報を得るためにUserEntityServiceに依存する状況を解消できる

特に後者は重要で、UserEntityServiceという巨大なサービスへの依存を減らせるのはコードの見通しもよくなる。現にAccountMoveServiceUserEntityServiceへの依存のせいで、ApPersonServiceと合わせて循環依存を作ってしまっている。これが解消できるのは大きい。

Why

Additional info (optional)

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

okayurisotto and others added 5 commits November 27, 2024 11:11
フロントエンドが`/api/i`を呼び出すことでアカウント情報を得るようにした。これにより

- Redis PubSubストリーム内を巨大なデータが行き来する回数を減らしパフォーマンスが向上することが考えられる
- 各`publish`処理が正確なアカウント情報を得るために`UserEntityService`に依存する状況を解消できる

特に後者は重要で、`UserEntityService`という巨大なサービスへの依存を減らせるのはコードの見通しもよくなる。現に`AccountMoveService`は`UserEntityService`への依存のせいで、`ApPersonService`と合わせて循環依存を作ってしまっている。これが解消できるのは大きい。

(cherry picked from commit 0d4cf43e61887c110a840f108ea5fea9afb1263b)
@kakkokari-gtyih kakkokari-gtyih added the ☢️Breaking This change breaks compatibility label Nov 27, 2024
@github-actions github-actions bot added packages/frontend Client side specific issue/PR packages/backend Server side specific issue/PR packages/misskey-js labels Nov 27, 2024
Copy link
Contributor

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

@anatawa12
Copy link
Member

Redis PubSubストリーム内の問題であれば、streamingのAPI変えるとサードパーティ等影響が大きいからpackages/backend/src/server/api/stream/channels/main.tsでpackする形にするという手もありそうですがMainChannelUserEntityService二依存するのもやめたほうがいい感じですかね

Copy link

codecov bot commented Nov 27, 2024

Codecov Report

Attention: Patch coverage is 6.66667% with 14 lines in your changes missing coverage. Please review.

Project coverage is 57.79%. Comparing base (dd56623) to head (4628a8f).
Report is 1 commits behind head on develop.

Files with missing lines Patch % Lines
packages/backend/src/core/UserFollowingService.ts 0.00% 3 Missing ⚠️
packages/backend/src/core/AccountMoveService.ts 0.00% 1 Missing ⚠️
packages/backend/src/core/UserBlockingService.ts 0.00% 1 Missing ⚠️
packages/backend/src/server/ServerService.ts 0.00% 1 Missing ⚠️
...ges/backend/src/server/api/endpoints/i/2fa/done.ts 0.00% 1 Missing ⚠️
...backend/src/server/api/endpoints/i/2fa/key-done.ts 0.00% 1 Missing ⚠️
...nd/src/server/api/endpoints/i/2fa/password-less.ts 0.00% 1 Missing ⚠️
...ckend/src/server/api/endpoints/i/2fa/remove-key.ts 0.00% 1 Missing ⚠️
...ckend/src/server/api/endpoints/i/2fa/unregister.ts 0.00% 1 Missing ⚠️
...ckend/src/server/api/endpoints/i/2fa/update-key.ts 0.00% 1 Missing ⚠️
... and 2 more
Additional details and impacted files
@@             Coverage Diff              @@
##           develop   #15063       +/-   ##
============================================
+ Coverage    39.96%   57.79%   +17.83%     
============================================
  Files         1563      835      -728     
  Lines       197744    93903   -103841     
  Branches      3631     1551     -2080     
============================================
- Hits         79024    54270    -24754     
+ Misses      118115    39609    -78506     
+ Partials       605       24      -581     

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

@anatawa12
Copy link
Member

anatawa12 commented Nov 27, 2024

Redis PubSubストリーム内の問題であれば、streamingのAPI変えるとサードパーティ等影響が大きいからpackages/backend/src/server/api/stream/channels/main.tsでpackする形にするという手もありそうですがMainChannelがUserEntityService二依存するのもやめたほうがいい感じですかね

一応これの懸念としてはpackする回数が一人のユーザが複数のコネクションを持っているとpack回数が増える可能性がある点があるとは思います。
逆にUserFollowingService等のpackはコネクション数が0なら無駄だったのが、MainChannelでのpackの場合これは省略される(現行と比べた場合)

EDIT: とかいたけど前半は普通に/api/i呼ぶときとあんまり変わらないわ

@syuilo
Copy link
Member

syuilo commented Nov 28, 2024

/i の結果って(POSTだとしても)必ず最新であることが保証されてたっけ?

@syuilo
Copy link
Member

syuilo commented Nov 28, 2024

されてた

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
☢️Breaking This change breaks compatibility packages/backend Server side specific issue/PR packages/frontend Client side specific issue/PR packages/misskey-js
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants