-
Notifications
You must be signed in to change notification settings - Fork 36
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
Resources leak until timeout if response fails to return to the Client #1020
Comments
So here is a basic problem:
If Request allocates some resources in I don't think that this can be solved without adding backward monitoring from @edwarnicke @denis-tingaikin |
It seems to me missed a Close call. Monitor server knows when stream breaks. So it can produce a event for closing the resources. |
So here is a problem with a monitor server:
|
Actually here by backward monitoring I don't mean sending some monitor update from the right side to the left side. The only thing we need is to do some streaming request from the left side to the right side which will be a part of Request/Close chain with the lifetime of the corresponding Connection. @edwarnicke |
@Bolodya1997 This isn't a leak as long as things are cleaned up when the expireTime expires. That said, please see networkservicemesh/deployments-k8s#906 |
@edwarnicke |
@edwarnicke Monitor based solutionWe can add some client chain element before the
Backward monitoring solutionWe can add some
|
@edwarnicke Do you agree with solution from @Bolodya1997 and @glazychev-art #1051? For me it looks a bit complicated, but I'm fine if you are ok with it. |
If this will be fixed, we need to set back request timeout in heal tests to |
@edwarnicke |
This possibly can lead (leads sometimes) to very painful bugs with kernel interfaces in VPP Forwarder - networkservicemesh/sdk-vpp#315. |
@Bolodya1997 |
@edwarnicke Should we do this before release? I think we can try to test a behaviour with handling ctx.Done and calling next.Server(ctx).Close(ctx,...) |
@denis-tingaikin I think this is probably a good idea... I'd suggest we do it in its own chain element, and place it before 'begin' (as it will then clean up begin). Should be pretty quick and easy :) |
Expected Behavior
All allocated resources should be either accessible from the Client or should be cleaned up in the short time.
Current Behavior
We can get resources allocated and cleaned up only on timeout happens:
icmp-responder
withT
request timeout.discover
until NSE registers.T-t
duration.t
duration Request comes to NSE, allocates IP addresses and starts returning back.Issue happens in real life
https://github.com/networkservicemesh/integration-k8s-packet/actions/runs/1029599216
The text was updated successfully, but these errors were encountered: