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

Lazy rds #4

Closed
wants to merge 162 commits into from
Closed

Lazy rds #4

wants to merge 162 commits into from

Conversation

chaoqin-li1123
Copy link
Owner

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:]

Raúl Gutiérrez Segalés and others added 30 commits July 22, 2020 15:33
Fixes envoyproxy#11990.

Signed-off-by: Raul Gutierrez Segales <rgs@pinterest.com>
Adds new retry policy envoy-ratelimited that retries responses
containing the header x-envoy-ratelimited.

Signed-off-by: Martin Matusiak <numerodix@gmail.com>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
- ensure that all listeners are in the correct state using config dumps and stats
- adds a verification class that holds an abstract representation of the state Envoy should be in which is then compared to Envoy's actual state from the config dumps
- currently working on also actually draining the listeners to ensure they are in the correct state during/after but Envoy crashes when trying to drain using simulated time so I'm looking into this for a future PR
- I also added a few more corpus entries that had failed previously on libfuzzer removed removeRoute since RDS cannot explicitly remove routes, it's up to Envoy to remove them when no listeners refer to them

Risk Level: Low
Testing: ran with libfuzzer, fixes previous timeouts/crashes
Docs Changes: N/A
Release Notes: N/A

Signed-off-by: Sam Flattery <samflattery@google.com>
…#12034)

Previously, a hard-coded set of buckets were used, which were not appropriate for the range or required precision of some histograms.

Fixes envoyproxy#7599

Signed-off-by: Greg Greenway <ggreenway@apple.com>
Until a real solution for envoyproxy#12209
is found.:

Signed-off-by: Matt Klein <mklein@lyft.com>
Commit Message: Fix crash in filter fuzz test due to validation not running until after cleaning
since the input config message contains an Any field, validation is not run on it, so I added a check to make sure that there was at least one sink before trying to deference
Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24301
Signed-off-by: Sam Flattery <samflattery@google.com>
The stat is incremented before the socket close.

Risk Level: None
Testing: N/A
Docs Changes: N/A
Release Notes: N/A

Signed-off-by: Matt Klein <mklein@lyft.com>
envoyproxy#12160 changed
the behavior of remove() to not first look in the inline
header map for a header. This is a subtle change in
behavior that specifically breaks attempting to remove
":authority" via the "host" mapping. This restores that
behavior and is thus a bug fix and low risk.

Signed-off-by: Matt Klein <mklein@lyft.com>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
envoyproxy#12037)

This PR provides intentional semantics for:

Multiple-100 headers; these are always coalesced to a single 100 header when proxying.
101 headers: these are always passed to decodeHeaders().
Non-{100,101} 1xx headers, e.g. 102/103, are always ignored by Envoy.
UpstreamRequest is responsible for guaranteeing that HCM observes the above properties. Codecs should pass 100 headers to decode100ContinueHeaders and all other 1xx to decodeHeaders.

This PR follows the discussion in envoyproxy#11433 (comment).

Risk level: Medium
Testing: Unit tests for codecs and UpstreamRequest added. Integration tests for non-101 and multiple 101 headers added.

Fixes OSS-fuzz issue https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=21628.
Fixes envoyproxy#11433

Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Kuat Yessenov <kuat@google.com>
- refactored cache setup script

Signed-off-by: Lizan Zhou <lizan@tetrate.io>
… up test compilation (envoyproxy#12048)

breakdown test/mocks/upstream/mocks.h into different mock classes

test/mocks/upstream/mocks.h is a wide-used mock header included by various test files. However it's very huge and most test files only used a small portion of it. Splitting it up into different mock classes will be helpful to reduce compilation time. (similar to envoyproxy#11797 )

Risk Level: low
Testing: existing tests
Docs Changes: N/A
Release Notes: no
Related Issues: envoyproxy#10917

Signed-off-by: Muge Chen <mugechen@google.com>
Until envoyproxy#12258 is fixed.

Signed-off-by: Matt Klein <mklein@lyft.com>
Currently, in scope route discovery service, when resources are received from a management server, for each added, updated and removed scope route, a callback is fired. If several update callbacks are combined into a single update callback, less performance penalty will be incurred. This can be achieved by moving applyConfigUpdate out of the for loop and applying all the updates in a single callback. In this case, partial update won't be accepted both in sotw and delta srds. Scope key and scope name conflicts will be checked before any config update is applied.

Risk Level: Low
Testing: Modify a unit test related to change.
Docs Changes: The behavior of delta srds will be changed, partial update won't be accepted.

Signed-off-by: chaoqinli <chaoqinli@google.com>
Waiting on a load stats response can race with resetting
the counters when initializing a watch. Moving the counter
increment prevents the race.

Fixes envoyproxy#11784

Signed-off-by: Matt Klein <mklein@lyft.com>
…enchmark_test_benchmark_test timeouts under tsan (envoyproxy#12264)

also, bump up the googlebenchmark version to pickup the fix to SkipWithError, google/benchmark#938

Signed-off-by: Antonio Vicente <avd@google.com>
…voyproxy#12173)

Adds support for DOWNSTREAM_PEER_FINGERPRINT_1 that sends SHA1 finger print of peer cert as a custom header.

Signed-off-by: Rama Chavali <rama.rao@salesforce.com>
…envoyproxy#12069)

To fix envoyproxy#11877, we need to handle safely the case where two
watches point at the same resource, and a WatchMap onConfigUpdate() causes one watch to
remove the other watch during its invoked onConfigUpdate().

While working on this, it made sense to fix envoyproxy#11674,
avoiding spurious ClusterLoadAssignment discovery requests in the regression integration test.

Risk level: Medium (this has xDS wire-level implications).
Testing: New unit tests for pause/resume, regression unit and integration tests for watch map
removal behaviors.

Fixes envoyproxy#11877 envoyproxy#11674

Signed-off-by: Harvey Tuch <htuch@google.com>
Co-authored-by: Sebastian Schepens <sebastian.schepens@mercadolibre.com>
Althought this filter is deprecated in favor of the compressor
filter, let's go ahead and fix the incorrect reference to the
now optional runtime feature flag.

Signed-off-by: Raul Gutierrez Segales <rgs@pinterest.com>
… changes (envoyproxy#12240)

Signed-off-by: Greg Greenway <ggreenway@apple.com>
Signed-off-by: Asra Ali <asraa@google.com>
We need to wait for all listeners to be up.

Fixes envoyproxy#12253 (and maybe other flakes)

Risk Level: None
Testing: Existing tests
Docs Changes: N/A
Release Notes: N/A

Signed-off-by: Matt Klein <mklein@lyft.com>
We heard back from Istio that release adjacency to EOQ wasn't great, and from other internal teams
that more details on the CVEs in the distributor mailout would be helpful.

Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Dhi Aurrahman <dio@tetrate.io>
Signed-off-by: Martin Matusiak <numerodix@gmail.com>
Signed-off-by: Kuat Yessenov <kuat@google.com>
I found that the code block in `grpc_bridge.rst` hasn't been displayed well.
So I fixed it.

Signed-off-by: zawawahoge <zawawahoge@gmail.com>
…nvoyproxy#12089)

By default, jwt_authn filter extracts JWT token from `Authorization` header and
 `access_token` query parameter. A request may have multiple JWT tokens, and will be
forwarded to the backend if one of the tokens is good. 

It poses a security risk: a hacker can put a good token in the query parameter and an invalid one in
the Authorization header. Envoy will forward the request to the backend,
and the backend will use the bad token in Authorization header.

This PR try to patch such security hole: all tokens in a request should be valid. 

Risk Level: Low.  This change only impacts the requests with multiple JWT tokens. In production traffic,
  it will be very rare that a request have multiple JWT tokens. 
Testing: Unit-test
Docs Changes: None
Release Notes: None

Signed-off-by: Wayne Zhang <qiwzhang@google.com>
junr03 and others added 27 commits August 4, 2020 18:21
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>
…e event loop (envoyproxy#11823)

Processing 0-delay timers in the same loop they are generated can result in long timer callback chains which could starve other operations in the event loop or even result in infinite processing loops. Cases that required same-iteration scheduling behavior for 0-delay timers were refactored to use SchedulableCallback::scheduleCallbackCurrentIteration in envoyproxy#11663, so behavior changes due to this change should be relatively minor.

Signed-off-by: Antonio Vicente <avd@google.com>
… new H/2 codec (envoyproxy#12471)

When legacy codecs were swapped to be the default, the test flag to flip wasn't swapped. This swaps so that compile time options or (--define use_new_codecs_in_integration_tests=true) will run integration tests with new codecs, default legacy.

Make linter for H/2 codec so no one reintroduces a throw. Added testing

Signed-off-by: Asra Ali <asraa@google.com>
…fuzzer (envoyproxy#12464)

Added coverage for 8 additional filters in WriteFilter generic fuzzer:
Added thrift filters into envoy_all_network_filters so that thrift filters can be loaded when we load thrift_proxy filter. Or otherwise thrift filters cannot be found in the thrift filter factory.

Signed-off-by: jianwen <jianwendong@google.com>
1. Reduce code repetition:
    * In 'admin.cc': There are many times of  ```get()``` from ```absl::optional``` for the same value. Similar for ```host->address()->asString()```. So I merged them together to avoid multiple calls for the same value.

    *  Similar problem inside "connection_handler_impl.cc"
2. Adopt pair binding feature in C++ 17. 

Risk Level: Low

Signed-off-by: pingsun <pingsun@google.com>
Splits the State object into two, one for the ActiveStream and one for the FilterManager. To better split the responsibility, introduce new functions on the FM and on the FM callbacks, cleaning up a few TODOs on the way.

Signed-off-by: Snow Pettersen <aickck@gmail.com>
On Windows, configure event-base to use wepoll backend instead of the default win32 backend.

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

Signed-off-by: Nick Grifka <nigri@microsoft.com>
…nal handlers (envoyproxy#12062)

Add hooks for calling fatal error handlers from non-Envoy signal handlers. Move register/removeFatalErrorHandler from SignalAction into a new FatalErrorHandler namespace, and add a new function, callFatalErrorHandlers, which runs the registered error handlers. This makes the crash logging from issue envoyproxy#7300 available for builds that don't use ENVOY_HANDLE_SIGNALS, as long as they do use ENVOY_OBJECT_TRACE_ON_DUMP.

Risk Level: Low
Testing: bazel test //test/...
Docs Changes: N/A
Release Notes: Added
Fixes envoyproxy#11984 

Signed-off-by: Michael Behr <mkbehr@google.com>
This patch updates ICU to 67.1 and googleurl to https://quiche.googlesource.com/googleurl/+/ef0d23689e240e6c8de4c3a5296b209128c87373. This reduces `bazel/external/googleurl.patch` to only handling MSVC quirks.

Please note that googleurl direction for Windows is to use clang-cl, while we still use msvc-cl (hence the patch). 

Risk Level: Low
Testing: Existing
Docs Changes: N/A
Release Notes: N/A
Fixes envoyproxy#12015 

Signed-off-by: Dhi Aurrahman <dio@tetrate.io>
Risk Level: medium without being fixed
Testing: rebuilding docs has been tested with the change to the protodoc compiler
Docs Changes: n/a
Release Notes:
Fixes envoyproxy#12533

Signed-off-by: Ryan Northey <ryan@synca.io>
…yproxy#12232)

When a stale cache hit is found for a request, conditional headers are injected to the request for validation. If the a 304 response is received (not modified), a response is constructed from cache, and cached headers are updated. If a request already includes conditional headers it bypasses the CacheFilter, this is valid behavior and satisfies the minimum of envoyproxy#9855 for production -- however, it can lead to missed caching opportunities.
 
Risk Level: Low
Testing: Integration tests
Docs Changes: N/A
Release Notes: N/A
Fixes envoyproxy#9976

Signed-off-by: Yosry Ahmed <yosryahmed@google.com>
Signed-off-by: chaoqinli <chaoqinli@google.com>
chaoqin-li1123 pushed a commit that referenced this pull request Jun 23, 2022
…yproxy#20170)

* test: adding a multi-envoy test (envoyproxy#20016)

Functionally this

handles the multi-envoy signal handler crash
skips instantiating a runtime singleton (off by default, must stay off until remove global runtime: rebase runtime features on ABSL_flags envoyproxy#19847 is closed)
Multi-envoy does not correctly support runtime flags or deprecation stats due to envoyproxy#19847 being incomplete. It can still handle proxy traffic client - L1 - L2 - upstream as shown in test.

Risk Level: low
Testing: yes
Docs Changes: n/a
Release Notes: n/a
Part of envoyproxy/envoy-mobile#2003

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* Add a congestionWindowInBytes method to Envoy::Network::Connection (envoyproxy#20105)

Signed-off-by: Bin Wu <wub@google.com>
Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* Update QUICHE from 50f15e7a5 to cf1588207 (envoyproxy#20154)

https://github.com/google/quiche/compare/50f15e7a5..cf1588207

$ git log 50f15e7a5..cf1588207 --date=short --no-merges --format="%ad %al %s"

2022-02-28 wub Deprecate --gfe2_reloadable_flag_quic_crypto_noop_if_disconnected_after_process_chlo.
2022-02-27 vasilvv Remove QuicheMemSlice(QuicUniqueBufferPtr, size_t) constructor.
2022-02-26 fayang Use std::string instead of absl::string_view in CryptoBufferMap.
2022-02-25 bnc Ignore incoming HTTP/3 MAX_PUSH_ID frames.
2022-02-25 bnc Remove Http3DebugVisitor::OnMaxPushIdFrameSent().
2022-02-25 bnc Remove QuicSpdySession::CanCreatePushStreamWithId().
2022-02-25 fayang Deprecate gfe2_reloadable_flag_quic_single_ack_in_packet2.

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* build(deps): bump actions/stale from 4.1.0 to 5 (envoyproxy#20159)

Bumps [actions/stale](https://github.com/actions/stale) from 4.1.0 to 5.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](actions/stale@v4.1.0...v5)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* admin: improve test coverage and increase the coverage-percent threshold (envoyproxy#20025)

Adds a missing test for recent lookups now that there are no more fake symbol tables. Adds tests for a variety of override methods defined in admin.h that were previously hard to hit.

Adds a benchmark test to establish a baseline for the speedups in envoyproxy#19693

Signed-off-by: Joshua Marantz <jmarantz@google.com>
Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* test: removing a bunch of direct runtime singleton access (envoyproxy#19993)

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* build(deps): bump grpcio-tools in /examples/grpc-bridge/client (envoyproxy#20040)

Bumps [grpcio-tools](https://github.com/grpc/grpc) from 1.43.0 to 1.44.0.
- [Release notes](https://github.com/grpc/grpc/releases)
- [Changelog](https://github.com/grpc/grpc/blob/master/doc/grpc_release_schedule.md)
- [Commits](grpc/grpc@v1.43.0...v1.44.0)

---
updated-dependencies:
- dependency-name: grpcio-tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds to spellcheck

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* xray tracer: set subsegment type for child spans (#2)

* xray tracer: set subsegment type for child spans

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds test coverage

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* Xray subsegment (#3)

* xray tracer: set subsegment type for child spans

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds test coverage

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates xray subsegment name to use operation name (instead of parent's span name)

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* Xray subsegment (#4)

* xray tracer: set subsegment type for child spans

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds test coverage

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates xray subsegment name to use operation name (instead of parent's span name)

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds to spell check dictionary

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* fixes spellcheck

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds to spellcheck

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

xray tracer: set subsegment type for child spans (#2)

* xray tracer: set subsegment type for child spans

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds test coverage

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

Xray subsegment (#3)

* xray tracer: set subsegment type for child spans

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds test coverage

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates xray subsegment name to use operation name (instead of parent's span name)

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

Xray subsegment (#4)

* xray tracer: set subsegment type for child spans

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds test coverage

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates xray subsegment name to use operation name (instead of parent's span name)

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* updates doc

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* adds to spell check dictionary

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

fixes spellcheck

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

* fixes spell check

Signed-off-by: Rex Chang <58710378+rexnp@users.noreply.github.com>

Co-authored-by: alyssawilk <alyssar@chromium.org>
Co-authored-by: Bin Wu <46450037+wu-bin@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joshua Marantz <jmarantz@google.com>
chaoqin-li1123 pushed a commit that referenced this pull request Aug 24, 2022
…roxy#22689)

Commit Message: stream_idle_timer_ is armed to timeout the sending of the bufferred response payload in the quic stream send buffer after the end stream is buffered in the stream. But today this timer is armed even if the the encoding of the payload causes the stream to be closed, in which case the timer can never be cancelled till the stream destruction with ASSERT hit as below:

[2022-08-12 22:23:38.843][12][critical][backtrace] [./source/server/backtrace.h:104] Caught Aborted, suspect faulting address 0x50e8d0000000c
[2022-08-12 22:23:38.844][12][critical][backtrace] [./source/server/backtrace.h:91] Backtrace (use tools/stack_decode.py to get line numbers):
[2022-08-12 22:23:38.844][12][critical][backtrace] [./source/server/backtrace.h:92] Envoy version: 0/1.24.0-dev/test/DEBUG/BoringSSL
[2022-08-12 22:23:38.858][12][critical][backtrace] [./source/server/backtrace.h:96] #0: Envoy::SignalAction::sigHandler() [0x3480b28]
[2022-08-12 22:23:38.858][12][critical][backtrace] [./source/server/backtrace.h:96] #1: __restore_rt [0x7f94b072c200]
[2022-08-12 22:23:38.872][12][critical][backtrace] [./source/server/backtrace.h:96] #2: Envoy::Quic::EnvoyQuicStream::~EnvoyQuicStream() [0x2a2fe98]
[2022-08-12 22:23:38.885][12][critical][backtrace] [./source/server/backtrace.h:96] #3: Envoy::Quic::EnvoyQuicServerStream::~EnvoyQuicServerStream() [0x2a78058]
[2022-08-12 22:23:38.899][12][critical][backtrace] [./source/server/backtrace.h:96] #4: Envoy::Quic::EnvoyQuicServerStream::~EnvoyQuicServerStream() [0x2a77d30]
[2022-08-12 22:23:38.912][12][critical][backtrace] [./source/server/backtrace.h:96] #5: Envoy::Quic::EnvoyQuicServerStream::~EnvoyQuicServerStream() [0x2a77d69]
This change check stream close in this case, so that the idle timer will not be armed for closed streams.

Risk Level: low
Testing: new unit test
Docs Changes: N/A
Release Notes: N/A
Platform Specific Features: N/A
Signed-off-by: Dan Zhang <danzh@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.