-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Expected Behavior
Updating from 1.27.1 to 1.28.1, a standalone, containerized Temporal service with postgresql persistence running on a host system with a proxy configured should be able to successfully start.
Actual Behavior
Updating from 1.27.1 to 1.28.1, internal clients in a standalone, containerized Temporal service are unable to establish connections to the internal frontend service.
The logs show the following warning:
{
"level":"warn",
"msg":"error creating sdk client",
"service":"worker",
"error":"failed reaching server: connection error: desc = \"transport: Error while dialing: failed to do connect handshake, response: \"HTTP/1.1 403 Forbidden\" ... The requested URL could not be retrieved. The following error was encountered while trying to retrieve the URL: 127.0.0.1:58322",
"logging-call-at":"common/sdk/factory.go:98"
}
I've configured the NO_PROXY of the docker daemon to bypass the proxy for local connections inside the containers, so establishing a connection to the internal frontend service should be allowed. It could be a source of error if the proxy environment is not being respected in 1.28.1 due to code changes, maybe?
Steps to Reproduce the Problem
Reproduction is quite time-intensive given the complexity of the host system. However, setup would go something like:
- Create a host system with a proxy, i.e. an AWS EC2 instance with outgoing security group rules that routes traffic through a proxy.
- Containerize the temporal solution, building from version v1.28.1.
- Setup a persistence server. I used postgres, but ultimately the error suggests that it's an internal connection that is disallowed by the proxy.
- Run the dockerized service, ensuring that the environment is configured in such a way that temporal contacts the persistence server from step 3 and that the NO_PROXY environment variable lists any container-local and DB connections to proceed without being proxied (i.e. 127.0.0.1 and whatever hostname the DB can be contacted under).
- Notice that the service fails to start because a connection to the internal frontend service cannot be established.
Specifications
- Version: v1.28.1
- Platform: MS Windows Server 2022 Standard
Additional Information
The only change to the container that I run the service in was that one is built from the 1.27.1 source and the other is built from the 1.28.1 source. I haven't dived deep into the original source yet, but my suspicion is that somewhere a grpc client is no longer configured to respect the proxy environment.