envoyproxy/envoy

Lazy evaluation of compression decision in compressor_filter for http response w/o content-length

Open

#21,807 opened on Jun 21, 2022

View on GitHub
 (4 comments) (0 reactions) (0 assignees)C++ (5,373 forks)batch import
area/compressionhelp wanted

Repository metrics

Stars
 (27,997 stars)
PR merge metrics
 (Avg merge 8d) (378 merged PRs in 30d)

Description

If you are reporting any crash or any potential security issue, do not open an issue in this repo. Please report the issue via emailing envoy-security@googlegroups.com where the issue will be triaged appropriately.

Title: One line description Buffer response header in compressor_filter and perform compression decision when receiving first data frame (encode_data)

Description:

Describe the issue.

Snap leverages on compressor_filter to perform response compression for gRPC responses. gRPC server doesnt add content-length to response header that the compressor filter will compress small response payload as well , which causes some overhead in egress bandwidth.

What Snap does(already running in prod env) is to perform a lazy evaluation when receiving first data frame instead of buffering all data frames.

Snap want to seek some feedback from envoy community that

  1. this operation is feasible (Snap can create a draft PR to review later)
  2. upstream the change to envoy

[optional Relevant Links:]

Any extra documentation required to understand the issue.

Contributor guide