Commit Graph

860 Commits

Author SHA1 Message Date
Craig Tiller 7cded136b7
Add metadata specialization for te: trailers (#27714)
* Add metadata specialization for te: trailers

* remove the evidence

* update microbenchmarks

* ugh

* cleanup copy code

* fix asan detected leak

* Automated change: Fix sanity tests

* append

* binder

* fix-cronet

* inproc fixes

* Automated change: Fix sanity tests

* convert cronet encode path

* fixes

* fixes

* review feedback

* Automated change: Fix sanity tests

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-10-19 16:23:22 -07:00
Craig Tiller 632cc4cc36
Make hpack tracing available in opt builds also (#27728) 2021-10-15 08:47:56 -07:00
Craig Tiller 1df153f46e
Revert "Revert "Move metadata setting into HPackParser (#27545)" (#27686)" (#27688)
This reverts commit 0e6ced8800.
2021-10-13 08:44:57 -07:00
Craig Tiller 0e6ced8800
Revert "Move metadata setting into HPackParser (#27545)" (#27686)
This reverts commit f57a1f7d8c.
2021-10-12 08:37:00 -07:00
Craig Tiller f57a1f7d8c
Move metadata setting into HPackParser (#27545)
* forward work to get append, limit check into parser

* further cleanup

* Remove chttp2_incoming_metadata_buffer

* Automated change: Fix sanity tests

* test fixes

* fix cronet

* wip

* first pass mementofication of parsing - libgrpc compiles

* further progress

* fixes

* fixes

* fix leak

* Automated change: Fix sanity tests

* fix leak

* fixes

* x

* improve fuzzer

* init ordering fix

* Update hpack_parser_table.h

* Update hpack_parser.cc

* Update hpack_parser_test.cc

* Automated change: Fix sanity tests

* Automated change: Fix sanity tests

* i mustache myself why

* fix use after free

* Automated change: Fix sanity tests

* fixes

* eliminate second pass metadata - this is an illegal frame and fails the new parser

* handle mementos with size > sizeof(intptr_t)

* fix

* add parsed metadata header, test

* Automated change: Fix sanity tests

* fix includes

* phase1

* phase2

* Update parsed_metadata.h

* fix

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-10-11 20:02:29 -07:00
Vy Nguyen a145013d6d
Temporarily disable benchmarks (#27629)
benchmark 1.6.0 introduced API breaking changes so we temporarily disabled the benchmarks that are using the old API to avoid breaking.
2021-10-07 14:29:19 -07:00
Craig Tiller d1e01ac139
Add a test for a (now-illegal) build file construct (#27602)
* Add a test for a (now-illegal) build file construct

* add to test suite!

* fix

* fix

* fix syntax
2021-10-06 07:43:59 -07:00
Craig Tiller 84d9e7e9fa
Speed up microbenchmark tests (#27584)
* Speed up microbenchmark tests

* Automated change: Fix sanity tests

* Update grpc_benchmark_config.bzl

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-10-05 07:09:02 -07:00
Craig Tiller b2942f601c
Modify hpack benchmark scenarios (#27567)
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.
2021-10-04 13:14:43 -07:00
Esun Kim 1c6634ac44
Changed grpc_error_get|set_str to use std string instead of slice (#27466)
* Changed grpc_error_get|set_str to use std string

* Fix init order in tests with gtest

* Undo gtest-tify credentials_test
2021-10-01 18:58:47 -07:00
Craig Tiller 91a2db9bc2
Make deadline the first metadata trait (#27468) 2021-09-28 10:09:04 -07:00
Mark D. Roth dbade1f5e7
Revert "Revert "pass subchannel address separately instead of as a channel arg (#27443)" (#27489)" (#27491)
This reverts commit 20cc6e7414.
2021-09-28 09:54:07 -07:00
Craig Tiller 9b41852a5e
channel_init --> core configuration system (#27347)
* channel_init --> core configuration system

* Automated change: Fix sanity tests

* fixes

* Automated change: Fix sanity tests

* fixes

* fixes

* eliminate grpc_base_c

* fixes

* fix merge

* fix

* update visibility

* fixes

* feedback

* fix comment

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-09-27 15:51:39 -07:00
Vignesh Babu 20cc6e7414
Revert "pass subchannel address separately instead of as a channel arg (#27443)" (#27489)
This reverts commit 57982f0ec6.
2021-09-27 10:42:16 -07:00
Mark D. Roth 57982f0ec6
pass subchannel address separately instead of as a channel arg (#27443)
* pass subchannel address separately instead of as a channel arg

* fix bug

* fix passing address to connector

* clang-format

* fix build of bm_call_create

* revert to C-style semantics for grpc_resolved_address

* fix msan bugs
2021-09-25 07:59:47 -07:00
Craig Tiller d4407b7e59
Revert "Remove dead code (#27445)" (#27461)
This reverts commit 693f36f91c.
2021-09-23 12:56:40 -07:00
Craig Tiller 693f36f91c
Remove dead code (#27445)
* Remove dead code

* Automated change: Fix sanity tests

* build

* remove benchmark

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-09-22 19:31:00 -07:00
Esun Kim 47586fb36e
Revert "Revert "Added absl::Status support to error_utils (#27358)" (#27418)" (#27429)
This reverts commit 933676c56c.
2021-09-21 14:42:57 -07:00
Craig Tiller 933676c56c
Revert "Added absl::Status support to error_utils (#27358)" (#27418)
This reverts commit 9b3f75d322.
2021-09-21 09:48:57 -07:00
Craig Tiller b669a3c521
Revert "Revert "a useful change (#27381)" (#27411)" (#27412)
This reverts commit 5db17f7350.
2021-09-20 19:46:11 -07:00
Esun Kim 9b3f75d322
Added absl::Status support to error_utils (#27358) 2021-09-20 18:03:17 -07:00
Craig Tiller 9872da79a1
Eliminate grpc_metadata_batch_{init,destroy,move} (#27349)
* Eliminate grpc_metadata_batch_{init,destroy,move}

* fixes

* fixes

* fixes

* fixes

* portability fixes

* fixes

* fix

* fix

* fix

* be explicit about being explicit
2021-09-20 17:25:26 -07:00
Craig Tiller 5db17f7350
Revert "a useful change (#27381)" (#27411)
This reverts commit 11eb70bbed.
2021-09-20 10:30:59 -07:00
Craig Tiller 11eb70bbed
a useful change (#27381)
* a useful change

* Automated change: Fix sanity tests

* fix

* fix

* QsortCompare it is!

* Automated change: Fix sanity tests

* add missing header

* clang-tidy fixes, tweak clamp to only use <

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-09-20 09:13:27 -07:00
Craig Tiller fd233193ec
Encapsulate metadata aggregates (#27262)
* Encapsulate metadata aggregates

* Automated change: Fix sanity tests

* add const

* Automated change: Fix sanity tests

* add a comment about an awful api

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-09-14 09:45:38 -07:00
Craig Tiller ea389c00c2
Adjust include order per style guide (#27175)
Introduce clang-format configuration to sort includes closer to our rules.
2021-09-08 12:14:44 -07:00
Craig Tiller dc701787e2
Convert HPACK encoder to C++ (#27226)
* Rebuild HPACK encoder table as C++

* move comment

* incguards

* build

* Automated change: Fix sanity tests

* c++ initialization ftw

* Automated change: Fix sanity tests

* Add missing header

* Add missing header

* Begin converting HPACK encoder to c++

* First pass conversion to c++

* fixes

* Automated change: Fix sanity tests

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2021-09-07 14:28:06 -07:00
Craig Tiller b062fcd5c6
Ensure consistency of include style for <grpc.* headers (#27233)
* Add a tool to ensure consistency in how grpc public headers are included

* Apply tool

* add to test suite

* isort
2021-09-02 11:42:33 -07:00
AJ Heller d10617edb5
Move resource_user ownership into chttp2 transport/server/connector v2 (#27032)
Reintroducing PR #26643, which was reverted in #27029

Fixed a memory leak and added a test that would have caught it (ASAN build): ca0c8c4
2021-08-18 17:04:00 -07:00
Craig Tiller f5d3ed2db1
Revert "Move resource_user ownership into chttp2 transport/server/connector (#26643)" (#27029)
This reverts commit d1935a65a1. Will be rolled forward with a fix.
2021-08-16 19:07:39 -07:00
AJ Heller d1935a65a1
Move resource_user ownership into chttp2 transport/server/connector (#26643) 2021-08-16 13:50:56 -07:00
Craig Tiller bbea27de46
Reland HPACK parsing changes (#26997)
* Revert "Revert "HPACK Table --> C++ (#26851)" (#26995)"

This reverts commit 840bcce9c4.

* fix bad parsing of trailing === in binary metadata
2021-08-13 10:57:42 -07:00
Craig Tiller 840bcce9c4
Revert "HPACK Table --> C++ (#26851)" (#26995)
This reverts commit 83bcb0cf2e.
2021-08-12 11:20:19 -07:00
Craig Tiller 83bcb0cf2e
HPACK Table --> C++ (#26851)
* 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
2021-08-09 16:07:41 -07:00
Craig Tiller 613b90ba93
Revert "Buffer HPACK parsing until the end of a header boundary (#26700)" (#26825)
This reverts commit 8bab3e4bf4.
2021-07-29 11:22:47 -07:00
Craig Tiller 8bab3e4bf4
Buffer HPACK parsing until the end of a header boundary (#26700)
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.
2021-07-28 15:36:51 -07:00
Craig Tiller d3e5803cb2
Move HPACK parser to C++ (#26689)
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!)
2021-07-15 13:51:23 -07:00
Vijay Pai ea4b68e7a1
Drop experimental tags from core callback API (#26535) 2021-06-24 17:20:43 -07:00
Vijay Pai 8aff94558c
De-experimentalize C++ callback API (#25728)
* De-experimentalize callback API

* Make FromServerContext based on ServerContextBase

* Fix lambda

* Fix headers

* De-experimentalize tests

* clang-format

* Fix consistency checks

* wip

* Fix const-ness of callback client read RPC requests

* Fix golden file

* Give full route_guide callback client example with Hold etc

* Complete example route-guide server

* De-experimentalize test services

* Omit unneeded using

* Remove some uses of non-experimental macro from test

* clang-format examples

* De-experimentalize async stub calls

* Remove experimental namespace use in qps, ubms

* De-experimentalize alarms, generic stubs, and context allocator

* De-experimentalize SetContextAllocator

* clang-format

* Fix conflicts

* Leave obsolete API in place until users can be migrated
2021-05-27 14:55:25 -07:00
Vijay Pai 0f80378a21
Resolve race between OnReadDone(ok=false) and IsCancelled (#26245)
* Resolve and test race between OnReadDone(ok=false) and IsCancelled

* Fix retry case

* Fix health check case

* Address reviewer comments.

* ADD TODO requested by markdroth
2021-05-19 14:05:46 -07:00
Esun Kim ca945a58e9
Introduced grpc_error_handle (#25902)
- Define grpc_error_handle
- Replace grpc_error* with grpc_error_handle
2021-04-22 12:00:28 -07:00
Mark D. Roth 3f19333ced
Move retry code into its own filter in the DynamicFilter stack (#25820)
* rename ChannelData to ClientChannel

* make ClientChannel class definition public

* move retry code to its own filter

* move LB call factory method to ClientChannel class

* move dynamic termination filter out of ClientChannel class

* update comments

* remove retry parsing from client channel service config parser

* fix clang-tidy

* fix service_config_test

* clang-format
2021-03-31 15:39:14 -07:00
Yash Tibrewal 7021b72d1f
Revert Revert Xds Status Notifier (#25718)
* Revert "Revert "xDS status notifier (#25321)" (#25702)"

This reverts commit 3c9f3972e3.

* Remove connection from map when OnClose is not registered

* Reviewer comments
2021-03-15 14:29:06 -07:00
Yash Tibrewal 3c9f3972e3
Revert "xDS status notifier (#25321)" (#25702)
This reverts commit 81e90432e1.
2021-03-12 08:54:34 -08:00
Yash Tibrewal 81e90432e1
xDS status notifier (#25321)
* Serving status notification for xds enabled servers
2021-03-08 21:47:13 -08:00
apolcyn 0901c9914b
Remove CAS loops in global subchannel pool and simplify subchannel refcounting (#25485) 2021-03-04 20:29:34 -08:00
AJ Heller 0e3a02e903
Revert "Remove the `urgent` argument from iomgr tcp read API (#25494)" (#25592)
This reverts commit a3398f9. Justification: see b/181367644. tl;dr: assuming urgent==false does not hold in all situations.
2021-03-01 22:04:22 -08:00
AJ Heller a3398f924c
Remove the `urgent` argument from iomgr tcp read API (#25494)
The urgent argument is a platform-specific flag that leaked into the (ideally) platform-independent HTTP/2 transport layer. In an effort to clean up the cross-platform API surface, it would be helpful if we can remove this argument from the TCP Read api without losing the performance optimization that was introduced along with it (see #18240).
2021-02-24 12:30:14 -08:00
Vijay Pai af76d0321a
Restore callback microbenchmarks but make them manual for now (#25491) 2021-02-19 13:36:11 -08:00
Vijay Pai 0e6db8fbec
Reduce max size of bm_callback_streaming_ping_pong messages to match unary 2021-02-17 09:55:45 -08:00
Vijay Pai dba8bb59a0 Implement callback CQ at C++ layer using shared thread pool if non-background iomgr 2021-02-16 16:02:23 -08:00
Yash Tibrewal f4e55b85bc Replace disrespectful term 2021-02-08 15:29:53 -08:00
Esun Kim 9bd7c4917a Fix unused-parameter warning 2021-01-19 18:18:09 -08:00
Esun Kim 53ab235fb8 Fix google-explicit-constructor 2020-12-03 15:03:39 -08:00
Esun Kim e0d8c498a6 C++ cast for others 2020-11-30 17:36:21 -08:00
Esun Kim 2ff84ed8c2 C++ cast for void* 2020-11-30 17:29:15 -08:00
Esun Kim ec0b88a5d7 Fix google-readability-casting 2020-11-30 17:27:51 -08:00
Esun Kim 75e3e660fd Fix google-readability-todo 2020-11-25 10:09:42 -08:00
capstan 131579d52d Roll forward of commit 7883b51: Use abseil's flags in tests.
This replaces gflags. Added TODOs where use of `absl::Duration` or `absl::FlagSaver` might be preferred in follow-up cleanup. Fixes #24493.

This reverts commit da66b7d14e.

NEW:
* Adds references to `absl/flags/declare.h`, new to LTS 2020923.2 imported in commit 5b43440.
* Works around MSVC 2017 compiler error with large help text on flags by reducing the help text.
2020-11-06 16:07:19 +01:00
Nathan Herring da66b7d14e
Revert "Abseil Flags" 2020-10-24 15:19:55 -07:00
capstan 7883b5133d Use abseil's flags in tests.
This replaces gflags. Added TODOs where use of `absl::Duration` or `absl::FlagSaver` might be preferred in follow-up cleanup. Fixes #24493.
2020-10-23 19:36:33 +02:00
Esun Kim 5b375a3728 Fix by misc-definitions-in-headers 2020-10-19 21:56:17 -07:00
Esun Kim a62a70207c
Merge pull request #24448 from veblush/clang-format-8
Upgrade clang-format 8
2020-10-19 09:29:35 -07:00
Esun Kim 84df61b31a
Merge pull request #24453 from veblush/tidy-modernize-make-unique
[Clang-Tidy] Enable modernize-make-unique
2020-10-16 16:35:08 -07:00
Esun Kim e7434d385e Fix by tidy-modernize-use-override 2020-10-16 14:01:06 -07:00
Esun Kim 6ae8463500 Fix by modernize-make-unique 2020-10-16 13:30:56 -07:00
Esun Kim 34789b2d83 Fix by clang-format-8. 2020-10-16 11:37:18 -07:00
Esun Kim ece76ee1e8 Fix code by readability-container-size-empty 2020-10-16 09:48:20 -07:00
Esun Kim 91ca04cf6f Add TestGrpcScope 2020-09-17 12:41:14 -07:00
Mark D. Roth 7f7a6916f6
Merge pull request #23581 from markdroth/server_c++
Convert grpc_server to idiomatic C++.
2020-08-03 14:45:53 -07:00
Mark D. Roth 0b61aea1c5 Convert grpc_server to idiomatic C++. 2020-08-03 12:56:29 -07:00
Vijay Pai cd20a80a1e
Merge pull request #23653 from vjpai/bm_cq
Properly follow callback CQ API guarantees rather than existing behavior in ubm
2020-08-03 12:39:17 -07:00
Vijay Pai 94a85b051d Expand comment to address reviewer feedback 2020-07-31 14:26:17 -07:00
Michael Wang c6586f087f implemented get_local_address accessor for grpc_endpoint 2020-07-29 19:39:22 +00:00
Vijay Pai 968e1b40a5 Properly follow callback API guarantees rather than existing behavior 2020-07-28 12:42:20 -07:00
Vijay Pai 9c5a39c6db Revert "Merge pull request #23361 from vjpai/em_agnostic_core_callback_cq"
This reverts commit a46cb5e86a, reversing
changes made to b5d42e75fb.
2020-07-28 09:55:43 -07:00
Vijay Pai 9d79ca6058 C++ify core server 2020-07-20 03:15:18 -07:00
Vijay Pai 7ee2bc6db5 EM-agnostic callback completion queue 2020-07-08 16:12:23 -07:00
Vijay Pai b92ca15356
Increase size of a test to match internal guidance 2020-07-06 09:51:05 -07:00
Esun Kim c736cf073c Added call to grpc::testing::TestEnvironment in more tests 2020-07-01 13:27:08 -07:00
Esun Kim 62ac3f075a Added call to grpc::testing::TestEnvironment in tests 2020-07-01 11:37:57 -07:00
Esun Kim 165ee5007a Replaced grpc::string with std::string 2020-06-29 17:56:36 -07:00
Yash Tibrewal e98eaa5052
Revert "Revert "Add message-size check before message decompression"" 2020-06-23 12:19:07 -07:00
Karthik Ravi Shankar 70465c92ec
Merge pull request #23180 from karthikravis/opencensus
Move OpenCensus back to ::grpc from ::grpc_impl
2020-06-23 11:31:43 -07:00
Karthik Ravi Shankar f0d2aff3c7 Merge branch 'master' into opencensus 2020-06-22 17:24:05 -07:00
Vijay Pai c7f2956b67
Revert "Add message-size check before message decompression" 2020-06-22 16:18:36 -07:00
Yash Tibrewal 0497ad8bb0 Add missing message-size check before decompressing
Add and fix tests for limit check before decompression

Code restructuring to allow easy reuse of service config call data

Regenerate projects

Reviewer comments
2020-06-19 14:49:18 -07:00
Karthik Ravi Shankar 7fa6826134 Merge branch 'master' into opencensus 2020-06-10 17:47:16 -07:00
Karthik Ravi Shankar 89763a96fd Move OpenCensus back to ::grpc from ::grpc_impl
Revert - Revert "Revert "Fold opencensus into grpc_impl namespace"" #18396
2020-06-10 17:36:58 -07:00
Esun Kim 92d31d6f99 Remove the flaky flag from bm_opencensus_plugin 2020-05-04 11:41:09 -07:00
Esun Kim 234b356e2f Fix the flaky bm_opencensus_plugin 2020-04-29 09:35:57 -07:00
Vijay Pai 527509abc4 Unmark flaky on streaming_pump 2020-04-08 10:31:47 -07:00
Vijay Pai f1979cece2 Disable SockPair fixture 2020-04-08 08:41:54 -07:00
Jan Tattermusch a791e16983 mark more tests as flaky 2020-03-17 05:32:17 -04:00
Jan Tattermusch 880111fe47
Merge pull request #22355 from jtattermusch/bm_metadata_not_flaky
bm_metadata is not flaky anymore
2020-03-16 18:14:25 +01:00
Vijay Pai b4f0cad4bd
bm_arena needs more time
Internal tests show that it needs a large timeout. This has passed 100x without timeout.
2020-03-16 08:12:15 -07:00
Jan Tattermusch 29528fc026 bm_metadata is not flaky anymore 2020-03-16 03:07:25 -04:00
Yash Tibrewal b40b162cc9 Add missing grpc_slice_unref to bm_metadata 2020-03-13 18:28:16 -07:00
Jan Tattermusch cbb0ef2717 try marking some offenders as flaky 2020-02-27 22:37:32 -05:00
Jan Tattermusch 543d8796f0 dont build some microbenchmarks on windows 2020-02-26 19:56:49 -05:00