Jack
Jack

Reputation: 10613

Google Cloud ESP advertising invalid compression formats to gRPC server

Cloud Endpoints: Architectural Overview provides a high-level view of Cloud Endpoints Architecture, and thus, the architecture of my web application.

From the highest level, it's just a client-server architecture with an NGINX HTTP reverse proxy server.

browser <----> ESP   <----------> gRPC
client  <JSON> proxy <-ProtoBuf-> server

The proxy and server run on the same Google Compute Engine virtual machine but in separate Docker containers connected with a Docker bridge network.

The proxy trans-codes between JSON and Protocol Buffers.

When a request originates from the proxy to the server, Docker logs show:

 call.cc:879]  Invalid entry in accept encodingmetadata: 'deflate'. Ignoring.
 call.cc:879]  Invalid entry in accept encodingmetadata: 'br'. Ignoring.

From MDN web docs for accept-encoding

The Accept-Encoding request HTTP header advertises which content encoding, usually a compression algorithm, the client is able to understand.

From this I assume the ESP is advertising deflate and br compression formats, but both are ignored by the gRPC server. I don't recall specifying any compression methods when I built the pulled the ESP or built the gRPC server.

A Google Search yielded only one related issue against a Google run public repo: Invalid entry in accept encoding metadata. The problem there was a mismatch of gPRC library versions.

My gRPC server is installed with

The ESP is a pre-built Docker image (based on NGINX) from https://console.cloud.google.com/gcr/images/endpoints-release/GLOBAL/endpoints-runtime. I'm using tags 1, 1.15 or 1.15.0 (they all tag the same, latest version).

My gRPC server uses the latest gPRC version (1.10.1), so I'm unsure how there could be a mismatch here?

Upvotes: 1

Views: 133

Answers (1)

Muxi
Muxi

Reputation: 308

ESP advertises that "br" and "deflate" are supported but gRPC server does not support it, which should be fine since you are not using compression at all. gRPC mistakenly dumps this message as an error. You can file an issue for this to gRPC. Your program should still be able to run normally.

Upvotes: 1

Related Questions