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

improve RDY logic #1

Closed
6 tasks done
mreiferson opened this issue Sep 3, 2013 · 2 comments
Closed
6 tasks done

improve RDY logic #1

mreiferson opened this issue Sep 3, 2013 · 2 comments

Comments

@mreiferson
Copy link
Member

In nsqio/pynsq#37 and nsqio/pynsq#38 we greatly improved pynsq RDY handling. I think the following are remaining differences between go-nsq and pynsq in regards to RDY handling

  • At connection add, a new connection can be starved because a separate connection could have the full max-in-flight value (bug)
  • New connections that can't send the full RDY for a connection should send a truncated RDY value and delay/retry sending RDY when unable to send as a result of global max-in-flight
  • When going into backoff all connections should be updated to RDY 0 immediately
  • When coming out of backoff, a single connection should be updated with RDY 1 (and redistribute should move it to another connection as appropriate)
  • Improve redistribution (redistribute during backoff but not when in a backoff block, redistribute on edge cases with max in flight, redistribute when a connection closes and it had RDY and we were in backoff)
  • Comprehensive reader tests (matching pynsq)

I'm going to open separate issues to tackle these items. This can track the overall issue of parity (there are probably things i'm forgetting) and we can close it when we are satisfied.

cc: @mreiferson

@mreiferson
Copy link
Member Author

copied from nsqio/nsq#253

@mreiferson
Copy link
Member Author

the last few of these are in #8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant