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

roundrobin should handle a case if selected endpoint returns error #597

Closed
denis-tingaikin opened this issue Nov 20, 2020 · 0 comments
Closed
Labels
bug Something isn't working

Comments

@denis-tingaikin
Copy link
Member

denis-tingaikin commented Nov 20, 2020

Actual behavior

Currently, roundrobin fails if the selected endpoint is busy or returns an error https://github.com/networkservicemesh/sdk/blob/master/pkg/networkservice/common/roundrobin/server.go#L63

OR The same problem with other scerio:

  1. bad NSE registered with ns-1
  2. NSC requested NSE with ns-1
  3. working NSE registered with ns-1 (in parallel with step 2)

Actual: NSC fails due to roundrobin selects bad NSE and not tries to select working NSE.

Expected behaviour

roundrobin should try to select next endpoint if the previous one fails.

Potential solution

  1. rounrobin should iterate over all Candidates in round-robin sequence.
  2. discovery should try to call next with new candidates if they've registered during request AND previous candidates fail AND ctx is not done.
@denis-tingaikin denis-tingaikin added the bug Something isn't working label Nov 20, 2020
@denis-tingaikin denis-tingaikin changed the title Rework discovery roundrobin Rework discovery+roundrobin Nov 20, 2020
@denis-tingaikin denis-tingaikin changed the title Rework discovery+roundrobin roundrobin should work correctly in case if selected endpoint is busy Nov 20, 2020
@denis-tingaikin denis-tingaikin changed the title roundrobin should work correctly in case if selected endpoint is busy roundrobin should work correctly in case if selected endpoint returns error Nov 20, 2020
@denis-tingaikin denis-tingaikin changed the title roundrobin should work correctly in case if selected endpoint returns error roundrobin should handle a case if selected endpoint returns error Nov 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants