Skip to content

Optimise JetStream and Raft locking#6335

Merged
derekcollison merged 3 commits intomainfrom
neil/jslocks
Jan 7, 2025
Merged

Optimise JetStream and Raft locking#6335
derekcollison merged 3 commits intomainfrom
neil/jslocks

Conversation

@neilalexander
Copy link
Copy Markdown
Member

This PR optimises some uses of the JetStream lock by reducing interactions between that and Raft group locks, which should mean that we don't end up in situations where we hold the JS lock while waiting to take a Raft lock etc.

Also updates a couple of the Raft group helper functions to not take the lock as they are returning values that are never mutated, creating unnecessary contention.

Signed-off-by: Neil Twigg neil@nats.io

None of these are ever mutated after the group is created, therefore we
will create unnecessary lock contention on the group lock by trying to
take it.

Signed-off-by: Neil Twigg <neil@nats.io>
Otherwise consumer infos could hold the JS lock while waiting to take
the Raft lock for a group.

Signed-off-by: Neil Twigg <neil@nats.io>
…in create consumer

Signed-off-by: Neil Twigg <neil@nats.io>
@neilalexander neilalexander requested a review from a team as a code owner January 7, 2025 10:57
@neilalexander
Copy link
Copy Markdown
Member Author

(Please regular merge rather than squash merge, I'd like these changes to stay in the commit log for individual blames.)

Copy link
Copy Markdown
Member

@derekcollison derekcollison left a comment

Choose a reason for hiding this comment

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

LGTM

@derekcollison derekcollison merged commit 0153091 into main Jan 7, 2025
@derekcollison derekcollison deleted the neil/jslocks branch January 7, 2025 14:26
wallyqs added a commit that referenced this pull request Jan 9, 2025
#### Dependencies
- #6323
- #6324

####  Leafnode
- #6291

#### JetStream
- #6226
- #6235
- #6277
- #6279
- #6283
- #6289
- #6316
- #6317
- #6325
- #6326
- #6335
- #6338
- #6341
- #6344
- #6150
- #6351
- #6355

#### Tests
- #6278
- #6297
- #6300
- #6343
- #6329
- #6330
- #6331
- #6332
- #6334
- #6356
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants