This commit imports the transport implementation from internal
repository. (Some updates to existing wire_format code are also included)
After this, we still need to import codes that creates channel, unit
tests and e2e test to complete the transition to GitHub.
* 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
* Poll type for promises library
* Library to talk about things that look like promises if you squint
* build
* Changes to sync required for promise activities
* sanitized
* remove bad comment
* better comment
Currently when a gRPC server that uses a memory limit is under memory pressure, these lines can cause a large number of ERROR log lines to be written, each of which requires a flush.
From upstream cl/389641168.
* Limit initial window size increases/decreases by flow control windows of active streams
* Limit stream flow control window updates to maximum allowable
* Reviewer comments
* Alternative way
* Clean-up
* Add tests
* Remove unnecessary cq_verifier
* Generate projects
* Initialize recv_message
* Get around compilation issue
* Test size large
This exposes a bug in clang, reported upstream as
https://bugs.llvm.org/show_bug.cgi?id=51368.
The clang bug is mitigated using a fake scoped lock; that allows the
current code to compile while also serving as a change detector to
prevent it from going stale; if the compiler bug is fixed, the compiler
will see an overlapping locking requirement, and reject this code, which
will prompt a human being to remove this workaround.
* Squashed 'third_party/upb/' changes from 60607da72e..2de300726a
2de300726a Merge pull request #401 from philwo/patch-1
0010bd88ff Merge pull request #403 from haberman/google-wyhash
3f7ecfe315 A few fixes in the 32-bit fallback.
2c14e2788d Added #include for Windows instrinsic.
9e618009ec Removed some extraneous whitespace.
c4744c0b21 Updated generated files.
039975556d Merge branch 'master' into google-wyhash
ff9d011f12 Merge pull request #402 from haberman/update-ads-benchmark
c2f2e93990 Fix Bazel at 4.1.0
41bfbca375 Updated ads benchmark to v7 as v5 no longer exists upstream.
91d506ac32 Ported ABSL's wyhash to C.
3328f06117 Remove ubuntu1604 from presubmit.yml
f925acf5f0 Merge pull request #400 from haberman/extreg
897bd2500a Fixed compile error.
6e53de4a03 Addressed PR comments.
cdd6434a31 Introduced upb_extreg and plumbed it into decoder.
69f186bd75 Merge pull request #399 from haberman/msg-extrep
3f8aa6ef20 Define the extension representation in messages and mini-tables.
4ccfab154b Merge pull request #398 from haberman/field-mode
58e158c6fa Changed mini-table to use a custom "mode" instead of descriptor's "label."
7596fa740f Merge pull request #397 from haberman/codegen-refactor
fa4dfc2baa Addressed PR comments.
0fb61eaeb5 Refactored the codegen into smaller functions, in anticipation of extensions.
52be845c39 Merge pull request #396 from haberman/pre-ext-opt
807e7fe9e2 Fixed dense_below logic to be order-independent and consistent between def.c and codegen.
2e8a122fc0 Changed dense_below calculation to use UINT8_MAX as the constant.
6394894b6e Addressed PR comments.
65d7b8ab0c Optimized decoder and paved the way for parsing extensions.
3e035cb553 Merge pull request #395 from haberman/locale
e8ba2a1899 Added a fix for locales that output ',' as decimal separator.
7010a73828 Merge pull request #394 from haberman/file-uniqueness
9482957425 Enforce that filenames are unique when loaded into symtab.
aaad7801bf Merge pull request #393 from haberman/has-attribute
7887dc0c76 Fixed the __has_attribute() check for old versions of Clang.
01e7436ed3 Merge pull request #390 from haberman/musttail
4132034634 Addressed PR comment.
ed708fcd5d Addressed PR comments.
876abae2db Removed some debug printing and simplified checktag slightly.
286441afa7 Fixed a size regression due to inlining UTF-8 verification.
75df4cdaa3 Loosened the check for fasttable to match what we did before.
e84793dd73 Cleaned up debugging artifacts.
a4b35aa388 Everything passes except 4 conformance tests.
6e10b5789d Removed redundant license from port_def in amalgmation.
4f1e48ecc6 Updated amalgamator to avoid duplicating license blocks.
0723bfa700 Merge pull request #387 from haberman/json-null
dda5416569 Update bazel-skylib main branch name.
2fa52e6951 Merge branch 'master' into json-null
a3126b7c7e Merge pull request #388 from haberman/fix-macos
b344a6c582 Fixed the macOS build for XCode 11.3.
a778f2639a Only perform multiple oneof check for non-null fields.
42bdfcb849 Fix BUILD file.
75d6dab37a Merge pull request #384 from haberman/internal
3881393907 Renamed .int.h to _internal.h, for greater clarity.
5084cbe646 Merge pull request #383 from fowles/master
da4b75b979 Fix build rules for more restrive deps checks
a8f9cf54cf Merge pull request #382 from haberman/license-headers
1ba446ccfe Updated Google, Inc. to Google LLC.
823eb09694 Update all 2011 dates to 2021.
ff89277ef0 Merge pull request #380 from fowles/master
5f74d43cf9 Re-add some comment text that was accidentally removed.
0f27b0450a Merge branch 'master' into license-headers
e59d2c8fa7 Added license headers to all files.
be4f64b926 Merge pull request #381 from haberman/mv-msg-public
1674f28dd7 Put public message interface into msg.h and moved internal functions to msg.int.h.
6481f6319e Spell out deps explicitly
f104225a1e Merge pull request #376 from haberman/fix-quadratic-mem
3c3799498d Merge pull request #379 from fowles/master
2e83d5c98f Remove unused file test_util.h
b053fa6991 Merge pull request #378 from fowles/master
7876639e50 remove unused macro
5b97df91dd Restrict fuse to matching block_alloc
e74d6c23de Small renames and use uintptr_t instead of void*
d9a0c58108 Allow arena fuse to fail
53f5d9f69b Merge pull request #377 from haberman/json-parse-null
8370818143 Switch to a macro to avoid signed/const mismatches.
63ad3db980 Fixed "NULL + 0" UB in JSON encoder and decoder.
add9b12f18 Fixed quadratic memory usage in upb_array_append().
97e2aeb7ee Merge pull request #375 from haberman/cleanups
83c0edbd2a A few minor cleanups.
baa7fe7473 Merge pull request #374 from haberman/update-deps
900bd5c426 Merge pull request #355 from haberman/aarch64
89df647460 Updated versions of ABSL and protobuf deps.
e4343f0fa3 Update comment for ARM64.
103d51f102 Merge branch 'master' into aarch64
1b9cc09f0e Removed extraneous copybara directive.
bbd817fdb6 Merge pull request #373 from haberman/table-cleanup
c358829c76 Now that handlers are gone, cleaned up table to use arenas exclusively.
ed5b4108e0 Merge pull request #363 from haberman/delete-handlers
bfa528f0ae Merge pull request #372 from haberman/errmsg-fix
ec9ba3f893 Fixed error message buffer overflow.
eb0fdda14b Merge pull request #371 from haberman/json-any
e58f7a0284 Fix for Any messages with no fields.
7541ba0f38 Merge pull request #364 from catenacyber/cifuzz
81829bacc3 Removed quote chars from error message.
88ed8f5d3b Changed JSON decoding error message to be more clear.
f41c0ec261 Added an internal API to get arena from symtab, for Ruby's use.
b080659eee Merge pull request #367 from haberman/timestamp-minute-offset
f7ed1f27a3 Support non-zero minutes in the timestamp offset for JSON.
451dcbbb9a Adds CIFuzz
f5d2d55007 Deleted the legacy "Handlers" APIs. upb can finally be deserving of its name.
0f40d59258 Merge pull request #362 from haberman/rb-warnings
c7787cbaa1 Fixed a bunch of Clang warnings.
5e53b5bb3d Merge pull request #360 from haberman/default-msgval
7a6e647be1 Merge branch 'master' into default-msgval
edb0a9a2d9 Merge pull request #361 from haberman/arena-bugfix
9175989431 Bugfix for arena cleanup list when passing to upb_decode().
5e550e88f8 Added API for getting fielddef default as a upb_msgval.
de76b31f9c Merge pull request #359 from veblush/fix-upbdefs
3cab8a38fc Fixed upbdefs error
48bb3e5662 Merge pull request #357 from veblush/string-opt
4c67b2086b Merge pull request #358 from veblush/clang-tidy-fix
38b4beed6b Fix clang-tidy function 'upb_encode_ex' has a definition with different parameter names
9b020d8f65 Optimize calls to std::string::find() and friends for a single char.
3c9ae7837a The fasttable parser works on ARM64!
git-subtree-dir: third_party/upb
git-subtree-split: 2de300726a1ba2de9a468468dc5ff9ed17a3215f
* Updated upb for bazel
* Regen upb files
* Updated src/upb/gen_build_yaml.py
* xds/interop: turn on validate-for-proxyless for urlmap tests
It was turned off because retry and affinity configs were not allowed
for proxyless gRPC.
* REVERT THIS, regenerate resources
* Revert "REVERT THIS, regenerate resources"
This reverts commit a26e2916ef.
* Fix several minor issues with url-map k8s tests
* Revert changes about backend service
* Fix a k8s flag name
* Update tools/run_tests/xds_k8s_test_driver/config/local-dev.cfg.example
Co-authored-by: Sergii Tkachenko <hi@sergii.org>
Co-authored-by: Sergii Tkachenko <hi@sergii.org>
Most instances were already explicit through comments, so it's clear
that the author cared about being explicit; use the compiler to ensure
this is always the case.
This is the import of part of our binder transport implementation from
internal repository.
This "Wire Format" part implements the protocol described at
https://github.com/grpc/proposal/blob/master/L73-java-binderchannel/wireformat.md
This part of the code does not interact with gRPC transport layer. We
will import other components in the next few pull requests.
The code is well-tested in the repository we are importing from. Due to
the difficulty of setting up the tests properly (cannot automatically
import them by script), we will import them after we have finished
importing other codes.
For now we confirm that the code builds via
`bazel build //src/core/ext/transport/binder/wire_format:all`
and some local testing with actual Android tool chain.
It is not possible for such a function to be implemented in a way that
is understood by annotalysis. Mark it deprecated and replace instances
of its use with direct mutex/condvar usage.
Add a bunch of missing thread safety annotations while I'm here.