-
Notifications
You must be signed in to change notification settings - Fork 260
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
crypto: Expose new stream about room_key withheld messages #3660
Conversation
Let's stop duplicating this code
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3660 +/- ##
==========================================
+ Coverage 84.25% 84.30% +0.04%
==========================================
Files 259 259
Lines 26622 26625 +3
==========================================
+ Hits 22431 22446 +15
+ Misses 4191 4179 -12 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can only review the code, not the feature. A second pair of eyes from @poljar might be useful.
// We should receive a notification on the room_keys_withheld_received_stream | ||
let withheld_received = room_keys_withheld_received_stream | ||
.next() | ||
.now_or_never() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To use now_or_never
, you must be sure that the value will be immediately available in the Stream
, otherwise the test will be flaky.
Is it a problem to use next().await
here instead? The risk is that the test might be pending forever if something changes in the future, but it's still an indication that a regression has been detected. The pros, however, is that we are sure the test can never be flaky.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it a problem to use
next().await
here instead?
I guess not. TBH I pretty much cargo-culted this from test_megolm_encryption
above, which afaik has never shown any sign of being flaky. Flipping it around: is there any reason to believe that the value would not already be available in the Stream?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The stream is created before we receive the sync changes, the sync changes trigger an update, this means that the now_or_never()
should never fail here, unless we introduce a bug.
There are no hidden tasks/threads or requests being sent out in receive_sync_changes()
it's all a pretty dumb, for better or worse, state machine.
now_or_never()
is the right thing to use, otherwise a regression will produce a hang instead of a loud test failure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that this looks fine. I would probably add a doc example but not required since it's a simple stream and we have plenty examples for streams.
// We should receive a notification on the room_keys_withheld_received_stream | ||
let withheld_received = room_keys_withheld_received_stream | ||
.next() | ||
.now_or_never() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The stream is created before we receive the sync changes, the sync changes trigger an update, this means that the now_or_never()
should never fail here, unless we introduce a bug.
There are no hidden tasks/threads or requests being sent out in receive_sync_changes()
it's all a pretty dumb, for better or worse, state machine.
now_or_never()
is the right thing to use, otherwise a regression will produce a hang instead of a loud test failure.
Oh and thanks for taking the time to refactor the filter we had for each stream. |
8460281
to
b74cf0a
Compare
b74cf0a
to
6b38e99
Compare
Expose the new stream added in matrix-org/matrix-rust-sdk#3660 and matrix-org/matrix-rust-sdk#3674 via a new callback.
Part of the fix to element-hq/element-web#27653.
[Please ignore the branch name; I appear to have fat-fingered]