Commit Graph

8073 Commits

Author SHA1 Message Date
Alisha Nanda 940e2c38e5
[server] Remove name parameter from CreateMemoryOwner (#34479) 2023-10-18 10:34:44 -07:00
Mark D. Roth b2d5a3c8da
[pick_first] don't finish Happy Eyeballs pass until all subchannels fail at least once (#34717) 2023-10-18 09:46:27 -07:00
Craig Tiller b6dbfc9163
[promises] Handle double scheduling of GRPC_OP_RECV_STATUS_ON_CLIENT (#34680) 2023-10-17 16:43:26 -07:00
apolcyn 7af5efcfd3
Revert "[TLS - Revocation] Crl Provider (#33786)" (#34713)
This reverts commit 0f0396ae92.
2023-10-17 13:53:36 -07:00
Craig Tiller 975184f04b
[channel-stack] Make ordering explicit (#32852)
Ditch the old priority scheme for ordering filters, instead explicitly
mark up before/after constraints.

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-17 13:52:58 -07:00
Gregory Cooke 0f0396ae92
[TLS - Revocation] Crl Provider (#33786)
The basic APIs for the CRL Reloading features.
This adds external types to represent CRL Providers, CRLs, and
CertificateInfo.
Internally we will use `CrlImpl` - this layer is needed to hide OpenSSL
details from the user.

GRFC - https://github.com/grpc/proposal/pull/382

Things Done
* Add external API for `CrlProvider`, `Crl`, `CertInfo` (`CertInfo` is
used during CRL lookup rather than passing the entire certificate).
* Add code paths in `ssl_transport_security` to utilize CRL providers
* Add `StaticCrlProvider`
* Refactor `crl_ssl_transport_security_test.cc` so it is more extensible
and can be used with providers
2023-10-17 13:03:52 -04:00
AJ Heller 5df9082f44
[EventEngine] Re-enable skipped core/end2end tests (#34700) 2023-10-16 11:20:42 -07:00
nanahpang 601aaf80b7
Revert "[Security] Move ownership of tsi_ssl_client_handshaker_factory to grpc_ssl_credentials, version 2." (#34701)
Reverts grpc/grpc#34408
2023-10-16 18:18:44 +00:00
AJ Heller ffe6634163
[EventEngine] Lock-free fix for WinSocket/IOCP notification race (#34577)
This is a lock-free refactoring of
https://github.com/grpc/grpc/pull/34497.

---------

Co-authored-by: drfloob <drfloob@users.noreply.github.com>
2023-10-13 13:49:15 -07:00
Craig Tiller bfb98d89ec
[testing] Add a test of server handling of calls that expired in the request matcher (#34679)
Also expand core_end2end_test suite to allow testing of server
registered methods

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-13 13:44:53 -07:00
Craig Tiller a54c7f7266
[fuzzing] Fix a case whereby a call can become permanently stuck after deadline expiry (#34681)
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-13 09:13:13 -07:00
Mark D. Roth 01332e2364
[client idleness] reland: enable with experiment (#34677)
The first commit is a revert of #34675, the second one fixes the test
that failed on import.
2023-10-13 08:31:28 -07:00
Craig Tiller eb9e57a03c
[fuzzing] Fix api-fuzzer found bug in ClientPromiseBasedCall (#34655)
A little debatable if it's a bug in the fuzzer or the call, but erring
on the side of compatibility (and we'll fix when we drop the batch api).
2023-10-12 16:49:08 -07:00
Craig Tiller 7c59c09f43
[chttp2] Bound write sizes based on observed write performance (#34665)
Instead of fixing a target size for writes, try to adapt it a little to
observed bandwidth.

The initial algorithm tries to get large writes within 100-1000ms
maximum delay - this range probably wants to be tuned, but let's see.

The hope here is that on slow connections we can not back buffer so much
and so when we need to send a ping-ack it's possible without great
delay.
2023-10-12 16:48:55 -07:00
Craig Tiller 73e5b2edc5
Revert "[client idleness] enable via experiment" (#34675)
Reverts grpc/grpc#34653
2023-10-12 13:03:14 -07:00
Mark D. Roth f15635287b
[xxhash] add a wrapper header to avoid clang-format breakage (#34658) 2023-10-12 10:31:40 -07:00
Mark D. Roth d9033b36e2
[client idleness] enable via experiment (#34653)
CC @apolcyn
2023-10-12 10:25:04 -07:00
Mark D. Roth 067fc48dca
[pick_first] implement address interleaving for Happy Eyeballs (#34615) 2023-10-12 10:21:13 -07:00
Craig Tiller 594d4ed34b
[chttp2] Add an experiment to separate liveness checks from ping timeouts (#34647)
Just seeing data flowing in after a ping is enough to establish liveness
of a connection, and so we can limit keepalive timeouts to that. Ping
timeouts are necessary for protocol correctness, but may be stuck behind
other traffic, so give them a little more of a grace period.

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-12 10:04:51 -07:00
Yijie Ma bae0c705aa
[Deps] Update to Clang-16 (#34492)
<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->
2023-10-11 16:26:32 -07:00
Craig Tiller ec49866463
[fuzzing] Fix timeout in retry_exceeds_buffer_size_in_delay (#34627)
Fix b/304114403

- adds a new experimental tracer useful for diagnosing ping timeout
failures in unit tests
- adds a pair of experimental tracers for fuzzing event engine
- fix the behavior of FuzzingEventEngine so that a RunAfter(0, ...) runs
in the same tick
- up the rate of sends (reduce the send delay) so we guarantee to be
able to send 200kb/sec in fuzzed e2e unit tests

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-11 09:07:14 -07:00
Mark D. Roth be1cf357ba
[FuzzingEventEngine] fix TickForDuration() bug and add test (#34633)
The `TickForDuration()` method was using `grpc_core::Timestamp::Now()`
to get the current time, but that was not in sync with the `now_` value
inside the Fuzzing EE itself, with the result that after two subsequent
250ms increments, timers were not being properly fired. I've added a
test that demonstrates this failure without the fix.
2023-10-11 08:25:57 -07:00
Craig Tiller 6a49e953a4
[chttp2] Experiments for rst_stream pushback (#34642)
Experiment 1: On RST_STREAM: reduce MAX_CONCURRENT_STREAMS for one round
trip.
Experiment 2: If a settings frame is outstanding with a lower
MAX_CONCURRENT_STREAMS than is configured, and we receive a new incoming
stream that would exceed the new cap, randomly reject it.

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-10 19:21:41 -07:00
Craig Tiller 954b285dd2
[chttp2] Limit request count before receiving settings ack (#34638)
Previously chttp2 would allow infinite requests prior to a settings ack
- as the agreed upon limit for requests in that state is infinite.
Instead, after MAX_CONCURRENT_STREAMS requests have been attempted,
start blanket cancelling requests until the settings ack is received.
This can be done efficiently without allocating request state
structures.
2023-10-10 13:03:46 -07:00
Craig Tiller 98c7e8fb12
Revert "[chaotic-good] Initial change of chaotic-good client-read path." (#34649)
Reverts grpc/grpc#34191
2023-10-10 12:29:04 -07:00
Craig Tiller 394659a849
[fuzzing] Fix build error (#34646) 2023-10-10 11:37:49 -07:00
nanahpang ce75ec23a1
[chaotic-good] Initial change of chaotic-good client-read path. (#34191)
This is the initial change of chaotic-good client transport read path,
which is a following PR of the client transport write path at #33876.
There's a pending work of handling endpoint failures in the transport.
It will be added after we have the inter-activity pipe with close
function.
<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->
2023-10-09 14:09:54 -07:00
Eugene Ostroukhov c4a35a28fd
[fuzzers] Fix warnings (#34630) 2023-10-09 13:27:10 -07:00
Craig Tiller c744f33790
[fuzzer] Add api fuzzing capabilities to client & server fuzzer (#34609)
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-09 11:27:20 -07:00
Mark D. Roth 01907a7767
[ring_hash] add test and make some minor fixes and improvements (#34610)
- Fixes support for the same address being present more than once in the
address list, which was accidentally broken in #34244.
- Change the call attribute to encode the hash as an integer instead of
a string.
2023-10-09 10:32:59 -07:00
Mark D. Roth bb6a6faa69
[SSA] support multiple addresses per endpoint (#34472) 2023-10-06 15:23:33 -07:00
Craig Tiller d0a4347419
[build] Fix compile error (#34613) 2023-10-06 08:23:10 -07:00
Craig Tiller 8391f19a22
[api-fuzzer] Move most of the functionality down into BasicFuzzer (#34605)
Prep to leverage this work in server_fuzzer, client_fuzzer
2023-10-05 16:52:35 -07:00
Craig Tiller 0814055337
[fuzzers] Expand client_fuzzer, server_fuzzer (#34596)
Allow multiple writes, and allow those writes to know about http2
(leverages the new framing layer for chttp2 recently written)
2023-10-05 15:22:39 -07:00
Craig Tiller 0147cad52e
[fuzzing] Fix payload_fuzzer timeout (#34602)
50ms per byte is probably a little on the slow side for our existing
suite of tests.
2023-10-05 15:22:12 -07:00
Craig Tiller 8eeb71cf82
[api-fuzzer] fix flipped conditional (#34604)
We've been inadvertently not creating channels with API fuzzer for a bit
2023-10-05 14:59:13 -07:00
Craig Tiller 7fabc61f07
[chttp2] Delay starting ping timeout timer until writes complete (#34589)
We probably shouldn't count the time it takes us to write out data as
part of the ping timeout
2023-10-04 20:17:51 -07:00
Mark D. Roth 36b70504e5
[outlier detection] support multiple addresses per endpoint (#34526) 2023-10-04 16:25:23 -07:00
Matthew Stevenson 539e912ef8
[ssl] Do not crash if ssl session cache capacity is zero. (#34539)
This behavior is dangerous because we will crash when the cache is
created, which is not necessarily on application startup and is likely
when you first try to establish an SSL connection. Instead, we log an
error. If the SSL library attempts to put a session ticket in the cache
it will fail to do so, but everything else will continue as normal. In
particular, we will always seamlessly fall back to a full SSL handshake.

Along the way, we also ensure that you cannot put a null `SSL_SESSION`
into the cache, which would lead to a segfault when it is fetched from
the cache.
2023-10-04 12:45:09 -07:00
Craig Tiller b581a24a4c
[filter-test] Allow running grpc_init safely (#34567)
Previously it turns out it was not safe to run grpc_init in a filter
test - we'd end up mixing event engine implementations, and causing
undefined behavior at grpc_shutdown.

This change makes it safe and fixes a test internally that's flaking at
70% right now (b/302986486).

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-10-03 10:46:31 -07:00
Yash Tibrewal df1976b590
[server_fuzzer] Fix call details and metadata destruction point (#34579)
Fixes b/302517571
2023-10-02 19:14:33 -07:00
Mark D. Roth 7044af2691
[tests] fix flakes caused by dualstack changes (#34575)
Fix chttp2 too_many_pings test to use only one of IPv4 or IPv6,
depending on test environment.

Also fix dumb reversed conditional bug in some other tests that was
accidentally introduced in #34426.
2023-10-02 13:48:43 -07:00
Craig Tiller 077ab3ed34
[test] Move random number generation before main test (#34564)
My expectation is that generating 20 megabytes of random numbers with
MSAN was taking some time..
2023-10-02 13:48:25 -07:00
Craig Tiller 445856978f
[test] Extend deadline to resolve fuzzer bug (#34573)
b/302749917
2023-10-02 10:20:23 -07:00
Craig Tiller b9fbf41e3c
[test] Extend cancellation deadline (that should not be reached) (#34571) 2023-10-02 09:04:08 -07:00
Craig Tiller 4c16e6b68f
[test] Enforce hygene between tests that require it (#34561)
Looks like we've got a thread race on shutdown with some of these
tests... adding a barrier at the head of tests that require precise
transport counts in order to stabilize.
2023-09-29 21:03:25 -07:00
Mark D. Roth 194c447653
[core e2e tests] use slowdown factor when injecting deadline via service config (#34548) 2023-09-29 11:39:11 -07:00
Mark D. Roth 24f995538c
[xDS] add support for multiple addresses per endpoint (#34506)
Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2023-09-29 09:46:45 -07:00
Mark D. Roth 7a06614f95
[resolver and LB policy APIs] reland: change address list to support multiple addresses per endpoint (#34531)
Re-land #33567, which was reverted in #34527.

First commit is a pure revert, second commit is a small fix needed to
avoid breaking internal callers.
2023-09-28 15:40:05 -07:00
Craig Tiller a17f08b49d
[chttp2] Continue refactoring towards promises (#34437)
Isolate ping callback tracking to its own file.
Also takes the opportunity to simplify keepalive code by applying the
ping timeout to all pings.
Adds an experiment to allow multiple pings outstanding too (this was
originally an accidental behavior change of the work, but one that I
think may be useful going forward).

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-09-28 13:14:05 -07:00