-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Make sure one request should only be executed once. #2388
Comments
From my investigation, there are several problems related with this issues problem with init pid in Scenario 1For our helloworld-go example, the service in user-container is:
the service in queue-proxy is:
the service in istio-proxy is:
so according to the init pid problem, our user-container will never received the SIGTERM signal. which is coincident with my test: the user-container always takes about 30s to start terminating only when received SIGKILL. For istio-proxy and queue-proxy, they received the SIGTERM very well. I can get rid of this problem by using the tool
So the user-container would receive the SIGTERM. but the problem remains when we didn't use |
The "pid=1" problem is I think very well known in Docker/Containerland. It depends on how the user builds their containers. Here's a good summary of what somebody can do wrong when building their container. We should consider adding this to the runtime contract (gonna open an issue on that). |
After fixing the problem of pid 1, then the problem of this issues also gone, so I will close this issue. Thanks for markus' help. |
Expected Behavior
One request should only be executed once.
Actual Behavior
Currently after #2357 , the istio-proxy, queue-proxy, user-container will wait after 20s. but once 20s passed, the terminating order of this three container is still istio-proxy -> queue-proxy -> user-container in most case, especially when the user request takes some time to finish, so the request remained in user-container will not return to the user anymore, and then the istio will try to reroute this request to any other alive pod.
So one request would only be executed more than once, this would cause problems for example the request is to writing data to db.
Steps to Reproduce the Problem
the evidence about handle one request about twice
The text was updated successfully, but these errors were encountered: