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

followup: we should reserve some read handlers for reads. #11720

Closed
yunhanw-google opened this issue Nov 12, 2021 · 3 comments · Fixed by #12764
Closed

followup: we should reserve some read handlers for reads. #11720

yunhanw-google opened this issue Nov 12, 2021 · 3 comments · Fixed by #12764
Assignees
Labels
Interaction Model Work p1 priority 1 work spec Mismatch between spec and implementation

Comments

@yunhanw-google
Copy link
Contributor

This makes sense for a subscribe, but should a regular read just return Busy? Or is it that too many subscriptions can keep reads from working? If so, followup: we should reserve some read handlers for reads.

Originally posted by @bzbarsky-apple in #11667 (comment)

@bzbarsky-apple
Copy link
Contributor

@mrjerryjohns @tcarmelveilleux This seems pretty critical to do: persistent subscriptions should not be able to completely lock out reads, which right now they can.

@franck-apple Do we have a label or project of some sort tracking "must happen for 1.0 to have sanity" work that is not really part of a bigger project? I guess I'll toss in "spec" for now....

@mrjerryjohns
Copy link
Contributor

Yes, agreed. I'd recommend we reserve no more than 2 handlers (preferably, 1), since reads are not long-lived exchanges, and the chances of coincidental reads from multiple peers simultaneously is low.

Cases where that might not be true based on past experience would be a highly correlated event that affects multiple clients in the system simultaneously (like resumption from a comms outage, or power outage). I'm not certain we should over-design for that scenario anyways, since recovery from those usually takes time, and clients would have to be built to be defensive towards those cases anyways.

@bzbarsky-apple
Copy link
Contributor

Yes, the reservation should be pretty small. Read attempts that run into no handlers get a BUSY status and can try again...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Interaction Model Work p1 priority 1 work spec Mismatch between spec and implementation
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants