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

Prevent threads code from making identical simultaneous API hits #3541

Merged
merged 9 commits into from
Jul 7, 2023

Conversation

t3chguy
Copy link
Member

@t3chguy t3chguy commented Jul 5, 2023

Fixes element-hq/element-web#25395

Currently the fetchRootEvent method would get called for each emit of Room.Timeline which meant if a thread was found with 10 events, we'd call /event/ 10 times. A lot of our tests seem to expect the /event/ API being hammered which should have been a red flag much much earlier. This change doesn't fix all the issues with the Thread model (#3542 aims to do that) but helps avoid calling the init code paths multiple times (especially at the same time). The only time the init code path will be re-called is if the last event was redacted just to simplify the change. Perfect is the enemy of freaking hugely better.


Here's what your changelog entry will look like:

✨ Features

@t3chguy t3chguy force-pushed the t3chguy/fix/25395 branch from 4ae55f6 to c4cec91 Compare July 5, 2023 16:04
@t3chguy t3chguy changed the title Consolidate simultaneous calls to GET API endpoints Prevent threads code from making identical simultaneous API hits Jul 5, 2023
@t3chguy t3chguy marked this pull request as ready for review July 5, 2023 16:12
@t3chguy t3chguy requested a review from a team as a code owner July 5, 2023 16:12
@t3chguy t3chguy enabled auto-merge July 5, 2023 16:37
Copy link
Member

@robintown robintown left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One question, though it's something I would have had about the old code too

src/models/thread.ts Show resolved Hide resolved
@t3chguy t3chguy added this pull request to the merge queue Jul 6, 2023
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jul 6, 2023
@t3chguy t3chguy merged commit cd7c519 into develop Jul 7, 2023
@t3chguy t3chguy deleted the t3chguy/fix/25395 branch July 7, 2023 08:48
su-ex added a commit to SchildiChat/matrix-js-sdk that referenced this pull request Feb 24, 2024
* Drop support for Node 16 ([\matrix-org#3533](matrix-org#3533)).
* Improve types around login, registration, UIA and identity servers ([\matrix-org#3537](matrix-org#3537)).
* **The Browserify artifact is being deprecated, scheduled for removal in the October 10th release cycle. (matrix-org#3189)**
* Simplify `MatrixClient::setPowerLevel` API ([\matrix-org#3570](matrix-org#3570)). Fixes element-hq/element-web#13900 and matrix-org#1844.
* Deprecate `VerificationRequest.getQRCodeBytes` and replace it with the asynchronous `generateQRCode`. ([\matrix-org#3562](matrix-org#3562)).
* Deprecate `VerificationRequest.beginKeyVerification()` in favour of `VerificationRequest.startVerification()`. ([\matrix-org#3528](matrix-org#3528)).
* Deprecate `Crypto.VerificationRequest` application event, replacing it with `Crypto.VerificationRequestReceived`. ([\matrix-org#3514](matrix-org#3514)).
* Throw saner error when peeking has its room pulled out from under it ([\matrix-org#3577](matrix-org#3577)). Fixes element-hq/element-web#18679.
* OIDC: Log in ([\matrix-org#3554](matrix-org#3554)). Contributed by @kerryarchibald.
* Prevent threads code from making identical simultaneous API hits ([\matrix-org#3541](matrix-org#3541)). Fixes element-hq/element-web#25395.
* Update IUnsigned type to be extensible ([\matrix-org#3547](matrix-org#3547)).
* add stop() api to BackupManager for clean shutdown ([\matrix-org#3553](matrix-org#3553)).
* Log the message ID of any undecryptable to-device messages ([\matrix-org#3543](matrix-org#3543)).
* Ignore thread relations on state events for consistency with edits ([\matrix-org#3540](matrix-org#3540)).
* OIDC: validate id token ([\matrix-org#3531](matrix-org#3531)). Contributed by @kerryarchibald.
* Fix read receipt sending behaviour around thread roots ([\matrix-org#3600](matrix-org#3600)).
* Fix `TypedEventEmitter::removeAllListeners(void)` not working ([\matrix-org#3561](matrix-org#3561)).
* Don't allow Olm unwedging rate-limiting to race ([\matrix-org#3549](matrix-org#3549)). Fixes element-hq/element-web#25716.
* Fix an instance of failed to decrypt error when an in flight `/keys/query` fails. ([\matrix-org#3486](matrix-org#3486)).
* Use the right anchor emoji for SAS verification ([\matrix-org#3534](matrix-org#3534)).
* fix a bug which caused the wrong emoji to be shown during SAS device verification. ([\matrix-org#3523](matrix-org#3523)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Excessive calls to GET /relations and GET /event, with MSC3981 enabled and working
2 participants