* Set `connected_` to true before `SendSetupTransport()`
A race happens when the server has already sent setup transport to the
client when it's actually not ready. So move `connected_ = true` before
`SendSetupTransport()`.
However, this may cause another race that `wire_writer_` being used when
it's actually not being constructed yet. So add another Notification for
others to wait for it to be ready.
Note: simply moving `SendSetupTransport()` into the mutex section could
potentially cause a deadlock since it's possible that
`ProcessTransaction()` being called on the same call chain.
This solution is considered a workaround before we figure out a better
workable solution. It's not perfect as if the first request sends, e.g.,
64K of data, we'll try to send an ACK and the system will still
deadlock. Furthermore, this solution makes threads waiting (although the
time frame should be very short).
* Store `accept_stream_fn` call count and call it later when possible
We might be signaled to call `accept_stream_fn` before it has been set.
We should memorize this case and call it later once it has been set, or
the stream will never be accepted.
* Add comments and polish the change
* Observability Logging: Interfaces and structure
* Revert unrelated changes
* Fix test build
* Add dependency on Google Apis Logging V2 service and add a dummy logging call
* Add authority
* cmake: add separate export for plugin targets
Add a separate CMake export for the plugin targets to separate binaries
and libraries into their own CMake target export files. Skip the cross
compiled binary plugin targets during cross compile because they are not
usable and not always available.
The Yocto build system doesn't install cross compiled binaries into the
target sysroot. This makes the CMake gRPC config useless as it checks
the existent of binaries and fails without the binaries.
This is a strip down version of #22498 and related to #26148 and #26857.
Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
Signed-off-by: Clément Péron <peron.clem@gmail.com>
* regenerate cmake file
Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
Signed-off-by: Clément Péron <peron.clem@gmail.com>
Co-authored-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
* xds_client_test: increase test size so it gets a longer timeout
* shard test instead of increasing size
* Automated change: Fix sanity tests
Co-authored-by: markdroth <markdroth@users.noreply.github.com>
* Revert "Revert "xDS RouteConfig: use ValidationErrors and add unit test (#31418)" (#31653)"
This reverts commit 335b74fea7.
* use auto instead of explicitly naming the protobuf map type
Specific changes:
- Use absl::variant<> for HashPolicy types.
- Pull validation of resulting LB policy configs out of ClusterSpecifierPlugin registry and into RouteConfig validation.
- Don't ignore missing Any fields in HTTP filter configs if is_optional is true, since is_optional should apply only to unsupported filter types, not to malformed resource protos.
- Use ExtractXdsExtension() for HttpConnectionManager config itself.
- Minor API improvements to StatusCodeSet to make it a bit more useful in tests.
- Changed StringMatcher to return the underlying error message when a regex fails to compile.
- Fix a bug whereby a ClusterSpecifierPlugin would not be returned if it was not used in a vhost, even if it was used in another vhost.
* LB policy test framework: add helper methods and improve debuggability
* add ExpectPickFail() method
* fix build
* STL magic
* clang-tidy
* more clang-tidy
* add WaitForConnectionFailed() and log unexpected pick results
* add check for proper status for the connectivity state
Add a check that SEND_STATUS_FROM_SERVER and RECV_MESSAGE are not in the same batch.
This is necessary pre-work for #31204 and implements part of grpc/proposal#336.
Also eliminates fling instead of updating it:
My expectation is nobody has looked at this corner in many years
It's not a benchmark we want: concentrating on a microbenchmark that doesn't include a binding layer caused us to favor designs that emphasized a lightweight core at the expense of a expensive bindings. We should consider the whole.
Co-authored-by: ctiller <ctiller@users.noreply.github.com>