Use QuicheMemSlice constructor with releasor. #31167
Check was skipped
This check was not triggered in this CI run
Details
Request (pr/31167/main@44af392)
@steveWang 44af392
#31167 merge
main@00fe753
Use QuicheMemSlice constructor with releasor.
The existing model of forwarding to the quiche::MemSliceImpl constructor is an abstraction violation and makes it hard to swap out the underlying MemSlice platform implementation. As such, we've recently added a new constructor to QuicheMemSlice (and the Impl API) that allows for an arbitrary custom releasor.
This PR uses the new constructor, guarded behind the runtime flag
envoy.reloadable_features.quiche_use_mem_slice_releasor_api
(disabled by default).Since we're storing a unique_ptr in the capture list (allowable since C++17), we can't store this in a std::function which requires copyability. As such, we use absl::AnyInvocable.
(I've marked this as medium risk since it interacts with Envoy's memory management model for QUIC streams and so deserves some scrutiny.)
Commit Message: Use QuicheMemSlice constructor with releasor.
Additional Description:
Risk Level: Medium
Testing: This is a refactor, so it should be covered by existing tests (test/common/buffer:buffer_test, test/common/quic:envoy_quic_{client,server}_stream_test)
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a
Environment
Request variables
Key | Value |
---|---|
ref | d3536b9a62a6c1b322b7882b1a126f4708f1fe8f |
sha | 44af392 |
pr | 31167 |
base-sha | 00fe753 |
actor | @steveWang |
message | Use QuicheMemSlice constructor with releasor.... |
started | 1702316828.335601 |
target-branch | main |
trusted | false |
Build image
Container image/s (as used in this CI run)
Key | Value |
---|---|
default | envoyproxy/envoy-build-ubuntu:7467652575122d8d54e767a68f141598bd855383 |
mobile | envoyproxy/envoy-build-ubuntu:mobile-7467652575122d8d54e767a68f141598bd855383 |
Version
Envoy version (as used in this CI run)
Key | Value |
---|---|
major | 1 |
minor | 29 |
patch | 0 |
dev | true |