This PR added receiveMessage(s) API on GRPCUnaryProtoCall for manually receiving messasges when flow control is enabled:
* Implementation for GRPCUnaryProtoCall:receiveMessage(s) by chaining calls to GRPCStreamingProtoCall instance
* Added finish API on GRPCUnaryProtoCall
* On [GRPCUnaryProtoCall start], avoid closing streaming RPC if flow control is enabled.
* internal call to receiveMessage is removed since message is automatically received if flow control not enabled.
3 Unit tests added to InteropTests suite for validating unary call API with flow control
- testUnaryRPCWithV2APIFlowControl
- testUnaryRPCWithV2APIFlowControlNotReceivingMessage
- testPingPongUnaryRPCWithFlowControl
* Poll type for promises library
* Library to talk about things that look like promises if you squint
* Library to talk about things that make promises
* Promises if construct
* build
* Automated change: Fix sanity tests
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
* Poll type for promises library
* Library to talk about things that look like promises if you squint
* Promise helpers, and basic type erasure
* Promise map operator - change return type via a function
* build
* Changes to sync required for promise activities
* sanitized
* Automated change: Fix sanity tests
* fixes
* fixes
* Automated change: Fix sanity tests
* fix build
* review feedback
* Automated change: Fix sanity tests
* comment
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
It caused failure:
Traceback (most recent call last):
File "tools/run_tests/run_xds_tests.py", line 3096, in <module>
datetime.datetime.now().astimezone().strftime("%Y-%m-%dT%H:%M:%S %Z"))
ValueError: astimezone() cannot be applied to a naive datetime
See code commentary for an explanation.
Add an additional constructor to allow `log_linux.cc` to compile with
GPR_PTHREAD_TLS. Without it:
```
../../third_party/grpc/src/core/lib/gpr/log_linux.cc:78:33: error: no viable conversion from 'int' to 'grpc_core::PthreadTlsImpl<long>'
static GPR_THREAD_LOCAL(long) tid = 0;
^ ~
../../third_party/grpc/src/core/lib/gpr/tls.h:64:3: note: candidate constructor not viable: no known conversion from 'int' to 'const grpc_core::PthreadTlsImpl<long> &' for 1st argument
PthreadTlsImpl(const PthreadTlsImpl&) = delete;
^
1 error generated.
```
These Java code will be invoked by binder transport C++ implementation
through JNI to establish the connection between client and server.
The code is locally tested with other pending changes to make sure it
works correctly.
For now we only make sure it builds in CI. We will port proper tests
from internal repository later.
A new local repository is created for the Android-only Java code because
1. The analysis of its BUILD will fail without Android SDK configured
2. We want to prevent clang-tidy (and maybe other scripts)'s automatic
expansion of '...' to include it as they typically don't have Android
SDK installed
* xds/testing: print timestamp of commands in xds tests cripts to help debug timeout failures
There were recently many kokoro timeout, after job running for 6 hours.
In those, the run_xds_tests.py only ran less then 2 hours.
There was no enough timestamp to find what was taking so long (either
run_xds_tests.py is stuck, or something before it took too long). This
should add more timestamps to help debug.
* print script start time
* format
* Poll type for promises library
* Library to talk about things that look like promises if you squint
* Library to talk about things that make promises
* build
* Changes to sync required for promise activities
* sanitized
* remove bad comment
* possible windows fix?
* fix
* ugh
* comment fix
* fix build
* Automated change: Fix sanity tests
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
* Poll type for promises library
* Library to talk about things that look like promises if you squint
* Promise helpers, and basic type erasure
* build
* Changes to sync required for promise activities
* sanitized
* Automated change: Fix sanity tests
* suppressions
* try to fix windows failure
* Automated change: Fix sanity tests
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
* Implement type safety for TLS
This is mostly free when compiler support is available, but requires
careful templating when implemented using pthread.
Significantly slimmed the tls.h interface; it now only defines the "TLS
keyword" for each supported compiler, delegating enforcement of correct
usage (i.e. must be static) to the compiler itself.
Implemented implicit conversion for the pthread wrapper so it can be
used (mostly) the same as native support. Notable exception to this is
that static_cast<void*> is needed when printing a pointer stored in TLS
as %p.
* Use GPR_THREAD_LOCAL macros consistently
It check status on a pr, and when some set are successful it makes itself successful.
If any that it's watching fail, it fails.
If the force-merge label is applied, it succeeds.
With the plan: we make EasyCLA and probably Sanity, and this one required statuses for merging (i.e. anything that should not be bypassed still gets verified by GitHub)
We make every other status that we believe in (so everything but the Google3 presubmits because they're fresh?) something that this script verifies.
That lets us do automerge (all things are passing)
And if all things are not passing we can use human judgement and apply the force-merge label to bypass these checks... But importantly not the CLA check
* Add Kokoro scripts for k8s insecure tests
* change cluster and job names
* update name in cfg
* do not exit immediately if test case fails
* better error message, loop
* fix arr
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.