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

connect.NewServer(..) timeout issue #771

Open
BenAgai opened this issue Dec 8, 2022 · 0 comments
Open

connect.NewServer(..) timeout issue #771

BenAgai opened this issue Dec 8, 2022 · 0 comments

Comments

@BenAgai
Copy link

BenAgai commented Dec 8, 2022

Hi,
I'm not sure if this is the best location for the issue as it is relevant to any NSE using connect.NewServer(..) chain, not only the VPP forwarder.

Let's say we have the following topology:
NSC (Node A) <--> Forwarder X (Node A) <--> Forwarder Y (Node B) <--> NSE (Node B)

  • The NSC initiates a request to the NSE which is sent to Forwarder X.
    A timeout is set for the request's response - let's call it NSC-timeout.

  • Forwarder X receives the request and then initiates new request to Forwarder Y.
    A timeout is set for the request's response - let's call it Forwarder-X-timeout.

  • Forwarder Y receives the request and then initiates new request to NSE.
    A timeout is set for the request's response - let's call it Forwarder-Y-timeout.

  • Before NSE returns a successful response to Forwarder Y, the timeout expires on a previous chain,
    for example, Forwarder-X-timeout is expired.

  • Forwarder-X had an error - propagating it to the NSC

  • Forwarder-Y received successful response from the NSE and is unaware that Forwarder-X-timeout has expired.

Now we have a scenario where we need to tell Forwarder-Y to release all relevant resources because the request flow failed.
From the Forwarder-X's perspective the call to the "connect.NewServer" chain failed, so
it won't initiate a close flow.

What is the best practice in such scenario? should NSE's using the connect.NewServer chain always initiate a close flow if a call to the next chain failed?

If i'm missing something please let me know.
Thanks!

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

No branches or pull requests

1 participant