Skip to content

Container built from 1.28.1 source can no longer startup on host system with proxy due to internal frontend connection failureΒ #8305

@christopher-watanabe-snkeos

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:

  1. Create a host system with a proxy, i.e. an AWS EC2 instance with outgoing security group rules that routes traffic through a proxy.
  2. Containerize the temporal solution, building from version v1.28.1.
  3. Setup a persistence server. I used postgres, but ultimately the error suggests that it's an internal connection that is disallowed by the proxy.
  4. 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).
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions