* Check if memory owner available prior to polling it
The transport may drop the memory owner during its destruction sequence
* tcp_fix
* Revert "Revert "New resource quota integration (#27643)" (#28014)"
This reverts commit 0ea2c37263.
* clang-format
* fix-path
* fix
* Fix all lint errors in repo.
* Use strict buildifier by default
* Whoops. That file does not exist
* Attempt fix to buildifier invocation
* Add missing copyright
* Upgrade benchmark to 1.6.0 and remove hacks.
Details:
- GRPC currently uses an old version of benchmark (from Sept 2020). It should probably upgrade because downstream, in google3, everyone is already using 1.6.0)
- Removed the hack added in PR/27629 to allow benchmarks in GRPC to continue to work with both pre-1.6.0 and 1.6.0 benchmarks.
(This was needed to allow importing benchmarks 1.6.0 into google3 without breaking GRPC)
* fix typo
* update third_party/benchmark and check_submodules.sh
* Upmerge from v1.41.x (#27821)
* Bump version to v1.41.0-pre1 (#27371)
* Bump version to v1.41.0-pre1
* Regenerate projects
* [Backport #27373] add testing_version flag (#27385)
* Bump version to v1.41.0-pre2 (#27390)
* Bump version to v1.41.0-pre2
* Regenerate projects
* Core 19: bump core version from 18.0.0 to 19.0.0 (#27394)
* Bump core version to 19.0.0
* Regenerate projects
* fix use-after-free metadata corruption in C# when receiving response headers for streaming response calls (#27398)
* Final release: bump up version to 1.41.0 (#27476)
* Bump version to 1.41.0
* Regenerate projects
* xds_k8s_test: increase timeout to 3 hours due to recent timeout failure (#27580)
* Revert "xds_k8s_test: increase timeout to 3 hours due to recent timeout failure (#27580)" (#27590)
This reverts commit da0c7d680f.
* Update root pem certs (backport of #27539) (#27619)
* Update boringssl to the latest (#27606) (#27625)
* Change boringssl branch name
* update submodule boringssl-with-bazel with origin/main-with-bazel
* update boringssl dependency to main-with-bazel commit SHA
* regenerate files
* Increment podspec version
* generate boringssl prefix headers
* Bumping up version to v1.41.1 (#27699)
* Bump version to v1.41.1
* Regenerate projects
* [Backport][v1.41.x] xds-k8s tests: Use test driver from master branch (#27695)
Backports sourcing the test driver install script from master.
This is a backport of #27389, #27462 and #27658:
* Add missing quatation marks.
These were missed when creating the Python virtual env.
* xds-k8s tests: Use test driver from master branch (#27462)
Instead of directly sourcing the test driver provisioning script from the same branch, the script is downloaded (with curl) and sourced from the master branch.
This allows changes made to the test driver to be reflected in all future release branches. A separate PR will backport this change to existing release branches.
All cluster definitions are also moved to the install script, allowing any cluster changes to be done in one place in the master branch.
* xds_k8s tests: Fix xlang install script sourcing. (#27658)
This change sources the test driver install script correctly for the xlang tests.
This fixes a mistake in #27462 where this was missed.
* Fix Python Interop (#27620) (#27703)
* WIP. Attempt to fix interop
* Yapf
* Switch Python xDS Example Server to Listen on IPV4 Only (#27679)
* Switch to IPV4
* Update to all hosts
* Fix rvm ruby install failure (#27769)
Co-authored-by: donnadionne <donnadionne@google.com>
Co-authored-by: Lidi Zheng <lidiz@google.com>
Co-authored-by: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Co-authored-by: sanjaypujare <sanjaypujare@users.noreply.github.com>
Co-authored-by: Sergii Tkachenko <sergiitk@google.com>
Co-authored-by: Esun Kim <veblush@google.com>
Co-authored-by: Terry Wilson <terrymwilson@gmail.com>
Co-authored-by: Richard Belleville <rbellevi@google.com>
* added perf_counters.cc manually since the script didn't work
Co-authored-by: Mark D. Roth <roth@google.com>
Co-authored-by: donnadionne <donnadionne@google.com>
Co-authored-by: Lidi Zheng <lidiz@google.com>
Co-authored-by: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Co-authored-by: sanjaypujare <sanjaypujare@users.noreply.github.com>
Co-authored-by: Sergii Tkachenko <sergiitk@google.com>
Co-authored-by: Esun Kim <veblush@google.com>
Co-authored-by: Terry Wilson <terrymwilson@gmail.com>
Co-authored-by: Richard Belleville <rbellevi@google.com>
It used to be that we could run the hpack deserializer into an arbitrary
sink - that's about to change and the hpack deserializer will buffer
directly into a map. That being the case, it's really hard to compare
performance of the current and the new system. With this PR, I'm
updating the relevant scenario to be more similar to the eventual
scenario that we plan, so that as the new work finishes up, we can get a
clearer idea of what changes we're really making.
* Buffer HPACK parsing until the end of a header boundary
HTTP2 headers are sent in (potentially) many frames, but all must be
sent sequentially with no traffic intervening.
This was not clear when I wrote the HPACK parser, and still indeed quite
contentious on the HTTP2 mailing lists.
Now that matter is well settled (years ago!) take advantage of the fact
by delaying parsing until all bytes are available.
A future change will leverage this to avoid having to store and verify
partial parse state, completely eliminating indirect calls within the
parser.
* maybe fixes
* xx
* fix boundary detection
* clang-format
* Revert "xx"
This reverts commit 258d712ed3.
* fix tests
* add missed check
* fixes
* fix
* update tests
* fix benchmark
* properly unref
* optimize final slice refcounting
* cleanup bm_chttp2_hpack
* start
* new parser progress
* refinement
* get it compiling
* bug-fix
* build files
* clang-tidy
* fixes
* fixes
* fixes
* fix-leaks
* clang-tidy
* comments
* fix merge error
* Revert "Buffer HPACK parsing until the end of a header boundary (#26700)"
This reverts commit 8bab3e4bf4.
* streaming hpack parser start
* streaming parser
* clang-format
* Rework HPackTable into C++
* clang-tidy
* fix merge
* actually set the size of the entries array
* better
HTTP2 headers are sent in (potentially) many frames, but all must be
sent sequentially with no traffic intervening.
This was not clear when I wrote the HPACK parser, and still indeed quite
contentious on the HTTP2 mailing lists.
Now that matter is well settled (years ago!) take advantage of the fact
by delaying parsing until all bytes are available.
A future change will leverage this to avoid having to store and verify
partial parse state, completely eliminating indirect calls within the
parser.
This is a fairly low effort migration of the current codebase into a C++ class, instead of free standing C code.
It builds upon #26657 as a necessary first step.
I've tried to minimize any changes to semantics or logic in this change, except where required to get a minimal amount of encapsulation - which is the major aim of this change.
A future change in this series will buffer slices until all HPACK headers are in memory for a stream prior to decoding -- it's important to have an encapsulated API to the parser before doing so however (hence this CL).
The next change after that will be an almost complete rewrite of the parsing functionality -- since we'll have the total set of header bytes, we'll no longer need to support suspending decoding at arbitrary points. This will allow us to move to a simple recursive descent parser, eliminate a bunch of indirection in this code, and end up in a much more malleable place for when we start doing metadata API changes.
(we likely also end up with some good performance wins!)