[PM-28026] Lint when holding KeyStoreContext across await points #551
+68
−67
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-28026
📔 Objective
Clippy by default lints when trying to hold an RwLock/Mutex guard across an await point, but that doesn't apply to custom types by default. This PR configures clippy to also apply that lint to our own types that wrap lock guards, which at the moment is only
KeyStoreContext.We only have two instances that needed fixing and both were in tests, but some of the SM code I wrote already had to deal with it by creating short lived contexts, so I assume it might be a problem in the future as well:
https://github.com/bitwarden/sdk-internal/blob/main/bitwarden_license/bitwarden-sm/src/secrets/create.rs#L41-L64
The lint docs:
https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_invalid_type
This is what the lint looks like:

⏰ Reminders before review
team
🦮 Reviewer guidelines
:+1:) or similar for great changes:memo:) or ℹ️ (:information_source:) for notes or general info:question:) for questions:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmedissue and could potentially benefit from discussion
:art:) for suggestions / improvements:x:) or:warning:) for more significant problems or concerns needing attention:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt:pick:) for minor or nitpick changes