You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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!
The text was updated successfully, but these errors were encountered:
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!
The text was updated successfully, but these errors were encountered: