Skip to content

connect.NewServer(..) timeout issue #771

@BenAgai

Description

@BenAgai

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions