Skip to content
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

[WIP] Build lazy loading of scoped rds into on_demand_update filter #12523

Closed
wants to merge 139 commits into from

Conversation

chaoqin-li1123
Copy link
Member

Commit Message:
Add a field to the current protobuf of ScopedRouteConfiguration to distinguish between scopes of different priorities. If the route table is of high priority, load the scoped route configuration eagerly, otherwise load the scoped route configuration lazily.
The lazy loading feature of route table associated with scope is achieved by extending the current vhds on_demand filter to support lazy loading of RouteConfigurationscoped route discovery service.If a scoped route configuration is set to be loaded lazily, upon a http request using SRDS, when the corresponding route table of a scope is not found, post a callback to control plane, request the route table from the management server, after the route table has been initialized, continue the filter chain.
Additional Description: Design doc
Risk Level:
Testing: add unit tests and integration test to verifiy behavior changes
Docs Changes:
Release Notes:
[Optional Runtime guard:]
[Optional Fixes #Issue] on demand s/rds
[Optional Deprecated:]

chaoqinli added 8 commits July 22, 2020 23:32
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
@repokitteh-read-only
Copy link

CC @envoyproxy/api-shepherds: Your approval is needed for changes made to (api/envoy[\w/]*/(v1alpha\d?|v1|v2alpha\d?|v2))|(api/envoy/type/(matcher/)?\w+.proto).
CC @envoyproxy/api-shepherds: Your approval is needed for changes made to api/envoy/.
CC @envoyproxy/api-watchers: FYI only for changes made to api/envoy/.

🐱

Caused by: #12523 was opened by chaoqin-li1123.

see: more, trace.

@chaoqin-li1123 chaoqin-li1123 changed the title WIP: Build lazy loading of scoped rds into on_demand_update filter [WIP] Build lazy loading of scoped rds into on_demand_update filter Aug 6, 2020
@chaoqin-li1123 chaoqin-li1123 force-pushed the lazy_srds branch 7 times, most recently from e701ae4 to f14acdb Compare August 7, 2020 00:17
chaoqinli added 10 commits August 7, 2020 00:42
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
sunjayBhatia and others added 28 commits August 7, 2020 00:47
… bad alloc exception (envoyproxy#12417)

Running this test in CI on Windows we have seen bad alloc exceptions, to
combat this and reduce memory overhead, break up large string allocation
into smaller segments.

Signed-off-by: William A Rowe Jr <wrowe@vmware.com>
Co-authored-by: Sunjay Bhatia <sunjayb@vmware.com>
Signed-off-by: Raul Gutierrez Segales <rgs@pinterest.com>
Signed-off-by: Lizan Zhou <lizan@tetrate.io>
- ambiguous value-based std::chrono::{clock_type}::duration(value) constructors
  result in stdlib implementation specific default time units which are
  hard to read and potentially different on different platforms
- this change removes any instances of these ambiguous constructions and adds
  a format check to prevent them; developers should specify an explicit unit of time
- we explicitly saw this issue in envoyproxy#11915 where
  the assumed duration unit was different on Windows, causing test failures

Additional Description:
Risk Level: Low
Testing: Adds format check test and adjust existing unit tests
Docs Changes: N/A
Release Notes: N/A

Signed-off-by: Sunjay Bhatia <sunjayb@vmware.com>
Co-authored-by: William A Rowe Jr <wrowe@vmware.com>
Add authority field in envoy grpc message to override the default host name as cluster name.

Risk Level: Low
Testing:
Docs Changes:
Release Notes:
Fix envoyproxy#12116 

Signed-off-by: Yuchen Dai <silentdai@gmail.com>
Signed-off-by: Raul Gutierrez Segales <rgs@pinterest.com>
Fixes envoyproxy#12459

Signed-off-by: Matt Klein <mklein@lyft.com>
Refactor `ci/clang_tidy.sh` and `ci/do_ci.sh` to allow run clang-tidy for specified source file. Make running clang_tidy with build container or within devcontainer easier.

Risk Level: Low
Testing: Local, CI
Docs Changes: Yes
Release Notes: N/A

Signed-off-by: Lizan Zhou <lizan@tetrate.io>
The list of enabled runtime flags is in runtime_features.cc, not runtime_features.h

Signed-off-by: Alex Konradi <akonradi@google.com>
Commit Message: add a couple static registration macros
Additional Description: needed for registration in static library environments.
Risk Level: low
Testing: local

Signed-off-by: Jose Nino <jnino@lyft.com>
Signed-off-by: Lizan Zhou <lizan@tetrate.io>
This should avoid TSAN timeout flakes.

Signed-off-by: Matt Klein <mklein@lyft.com>
…railers (envoyproxy#12178)

This adds `envoy.reloadable_features.skip_encoding_empty_trailers` runtime feature flag (enabled by default) to skip encoding empty trailers in H2 codec. This behavior can be reverted temporarily by setting runtime feature `envoy.reloadable_features.skip_encoding_empty_trailers` to false.

Before this commit, seeing empty trailers of gRPC-Web filter response, codec submits:

```
[  5.036] recv DATA frame <length=28, flags=0x00, stream_id=13>
[  5.040] recv DATA frame <length=52, flags=0x00, stream_id=13>
[  5.053] recv HEADERS frame <length=0, flags=0x05, stream_id=13>
          ; END_STREAM | END_HEADERS
```

After:

```
[  5.036] recv DATA frame <length=28, flags=0x00, stream_id=13>
[  5.040] recv DATA frame <length=52, flags=0x00, stream_id=13>
[  5.052] recv DATA frame <length=0, flags=0x01, stream_id=13>
          ; END_STREAM
```

Risk Level: Low
Testing: Unit, integration tests.
Docs Changes: N/A.
Release Notes: Added
Fixes envoyproxy#10514

Signed-off-by: Dhi Aurrahman <dio@tetrate.io>
…#12410)

Adds support for X-RateLimit-* headers described in the draft RFC. The X-RateLimit-Limit header contains the quota-policy per RFC. The descriptor name is included in the quota policy under the name key. X-RateLimit-Reset header is emitted, but it would need a followup in the ratelimit service, which I will do once this is merged.

Signed-off-by: Petr Pchelko <ppchelko@wikimedia.org>
…ts (envoyproxy#12483)

We noticed that certain headers-only requests were not having their respective responses be compressed. Ultimately the problem was that the decompressor filter was not advertising accept-encoding for headers-only requests. This PR advertises (when configured to do so and response decompression is active) even on headers-only requests.

Signed-off-by: Jose Nino <jnino@lyft.com>
Followup for a new feature introduced by envoyproxy#12410 Apologies for not noticing that a later draft was introduced recently. I think we should start with supporting the latest available spec draft, so update version 2 to version 3. The change is technically backwards-incompatible, but the new feature was introduced one day ago, nobody could have been so fast to depend on it.

Signed-off-by: Petr Pchelko <ppchelko@wikimedia.org>
Moves the ownership of the StreamInfoImpl into the FilterManager, exposed via an accessor to allow the ActiveStream to
still modify/read the StreamInfo.

Moves the interaction with the FilterChainFactory into the FilterManager, as well as ownership over the access logs created
via the factory callbacks.

Signed-off-by: Snow Pettersen <aickck@gmail.com>
Signed-off-by: Lizan Zhou <lizan@tetrate.io>
This patch enables the following tests on Windows:

1. //test/common/http:codec_client_test
2. //test/common/network:listener_impl_test
3. //test/common/network:connection_impl_test

To do so we swap the addresses to use `getCanonicalLoopbackAddress` instead of `getAnyAddress` and we add synchronization in `ConnectionImplTest.ReadWatermarks` tests.

Additional Description: N/A
Risk Level: Low, test only
Testing: Updated unit tests
Docs Changes: N/A
Release Notes: N/A

Signed-off-by: Sotiris Nanopoulos <sonanopo@microsoft.com>
- Tests that used a non-blocking libevent event loop are flaky on
   Windows (and would be flaky on other platforms if event notifications
   routinely took longer to be propagated) since the event loop could exit
   before an event notification. Switching to use a blocking event loop
   prevents early exit before filesystem events are evaluated.
- Skip SymlinkAtomicRename test as Windows does not have an atomic file
   move API that can move a directory/symlink where the new name is a non-empty
   existing directory/symlink (MoveFileEx can atomically replace a file
   with a file, however).

Signed-off-by: William A Rowe Jr <wrowe@vmware.com>
Co-authored-by: Sunjay Bhatia <sunjayb@vmware.com>
Co-authored-by: William A Rowe Jr <wrowe@vmware.com>
…voyproxy#12479)

Some filter factories allocate TLS slots shared via shared pointers. On a filter config update, the last filter factory reference happens to be deleted on a worker thread, which causes a runtime failure since TLS slots must be deleted on the main thread. The solution is to prolong the life of the filter factory using main thread completion callback.

Signed-off-by: Kuat Yessenov <kuat@google.com>
Signed-off-by: Lizan Zhou <lizan@tetrate.io>
Signed-off-by: Lizan Zhou <lizan@tetrate.io>
…1914)

This change delete the read filter before udp listener deletion.

Signed-off-by: DongRyeol Cha <dr83.cha@samsung.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.