* Check if memory owner available prior to polling it
The transport may drop the memory owner during its destruction sequence
* tcp_fix
* Revert "Revert "New resource quota integration (#27643)" (#28014)"
This reverts commit 0ea2c37263.
* clang-format
* fix-path
* fix
* xds_end2end_test: Fix flakiness on WaitForLdsNack
* xds_end2end_test: Only start the server when we want
* Revert WaitForNack changes
* Fixes
* Fix CsdsShortAdsTimeoutTest
* Fix sanity
* Revert "fix mobile builds to properly exclude xDS (#27855)"
This reverts commit 64d026e234.
* Revert "don't build RLS on mobile (#27838)"
This reverts commit 2a69c525b8.
* RLS LB policy plugin implementation
* Add RLS tests
* rls proto
* generate projects
* Fix adding child policy to child policy map
* Fix issues
* Fix rotten bits
* generate projects
* revert some strange changes
* First batch of fixes
* second batch of addressing comments
* generate_projects
* 3rd batch of fixes
* generate_projects
* 4th batch of fix
* 5th batch of fix
* Empty commit to trigger github PR refresh
* Add insecure build
* generate project
* update picker in a closure
* mutex guard audit
* clang-format
* Aggregate child policy states
* Use OrphanablePtr on ChildPolicyOwner()
* More fixes on comments
* Remove include grpc_security from rls.cc
* Fix key builder test as we removed RlsFindPathFromMetadata
* Update rls proto and add multi-target capability
* code changes to fix build after merging master
* remove support for insecure builds
* WIP
* add LB policy metadata lookup API
* add API for creating errors from C++ strings
* add missing include
* finished updating JSON parsing
* use DualRefCounted<> for ChildPolicyWrapper
* use grpc_core::Mutex instead of std::recursive_mutex
* add lock annotations and fix some lifetime issues
* misc fixes and cleanups
* simplify child policy connectivity state machine
* add comment about hopping into ExecCtx
* don't use wait_for_ready for RLS call
* extraKeys and constantKeys support
* add lock annotations for child policy wrapper connectivity state
* improve logging
* simplify child policy state handling in picker
* use C++ style comments
* remove rls_config.proto, since it's not needed
* rewrote tests
* fix build
* fix copyright headers
* clang-format
* appease clang-tidy
* remove unnecessary dependendency on grpclb
* buildifier
* remove illegal term
* remove unneeded includes
* clang-format
* fix clang-tidy
* fix build
* move class declaration into .cc file
* clang-tidy again
* fix build
* reorganize code and misc cleanups
* clang-format
* fixed a bunch of asan bugs; still some left to debug
* fix asan problem
* make test work on IPv6-only machines
* move LRU list handling into Cache::Entry and add lock annotations
* use preincrement instead of postincrement
* fix deadlock
* add more FIXMEs
* clean up backoff timer logic
* fix build from merge
* clang-format
* fix include path to work on podspec builds
* clean up picker logic
* clang-format
* update rls.proto
* populate reason and stale_header_data in RLS request
* improve logging and fix some cache size type issues
* clang-format
* add some TODOs about a better way to expose channel creds to LB policies
* centralize handling of channel's default authority
* clang-format
* fix backup poller bug
* fix handling of call creds and authority on RLS channel
* remove unused params
* clang-format
* use two-phase update for child policies to avoid deadlocks
* fix portability issue
* minor cleanups
* update for change in grpc_error_get_status() API
* change test to store RLS requests and responses in proto form
* clang-format
* account for test slowdown factor in timeouts
* fix tsan failure and channelz linkage
* fix RLS authority death test
* fix test to not try to connect to target that should not work
* remove illegal term
* cacheSizeBytes is a required field
* add missing BUILD deps from merge
* add tests for connectivity state reporting and fix bugs found
* fix BUILD sanity
* buildifier
* fix BUILD package path
* fix bugs related to child policy lifetime and updates
* remove unnecessary srand() call from grpc_init()
* add test for two cache entries with the same target
* update rls.proto
* change RLS config parser test to support GRPC_ERROR_IS_ABSEIL_STATUS
* update upb codegen
* fix include path
* add env var guard
* avoid duplication of CountedService
* generate_projects
* add upper limit for cacheSizeBytes
* fix build
Co-authored-by: Muxi Yan <mxyan@google.com>
* Fix OOM issues in qps tests
* Add more verbose logging.
* Fix clang error
* Fix race between IsCancelled and Read
* Fix build errors from using bool in C code
* Ensure that per route retry policy (even when there are no supported
retry_on statuses) still takes precedence over virtual host level retry
policy.
Added a test to guard this case.
* Taking care of code review comments and removing unnecessary block
* xDS Security: Use new way to fetch certificate provider plugin instance
config
* Reviewer comments
* Additional fields to NACK
* Move NACKing tests for tls_certificates and tls_certificate_sds_securet_configs to client-side
* fix retry code to fail batches instead of creating attempt if previously cancelled from surface
* add xDS end2end tests covering the FI use-case that triggered the bug
* fix memory leak
If we continue to call `Write()` after `WriteLast()` (because client is still sending us data and thus `Read()` returns `true`), the buffer might become invalid and results in assertion failures.
This temporarily unblocks a related gtest upgrade. The ultimate goal is
to upgraade our gtest dependencies, but I don't have the cycles to
manage a potentially messy migration until at least next week. This PR
is coordinated with an internal change.
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.
```
* 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
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.
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.
* LB policy API improvements
* clang-format
* fix build
* a bit more cleanup
* use absl::variant<> for pick result
* fix retry_lb_drop test
* clang-format
* fix grpclb_end2end_test
* fix xds_end2end_test
* try to make variant code a bit cleaner
* clang-format
* fix memory leak
* fix build
* clang-format
* fix error refcount bug
* remove PickResult factory functions
* clang-format
* add ctors to structs
* clang-format
* fix clang-tidy
* update comments
* move LB recv_trailing_metadata callback instead of copying it
* use Match() instead of providing PickResult::Handle()
* don't use Match() for now, since it breaks lock annotations
* update retry_lb_fail test
* Tighten the error tolerance requirement by 10x
* Make it 5 sigma instead of 4.5
* Rewrap comments
* Loosen the max concurrent requests in certain test cases
* 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
* Ring hash implementation
* Fixing an error caught during import:
ipv6 addresses need small modifications when creating the ring entry.
* fixing an error
* removing debugs
* Remove unnecssary hashing
* small cleanup
* Revert "Revert "Expose trailers-only response status through C++ callback API (#26249)" (#26363)"
This reverts commit 05c3b30ea0.
* Move the trailers_only check from ClientContext to ClientReactor
* Remove unneeded change in client_context.cc
* Expose trailers-only response status through callback API
* Fix change-detector test
* Address reviewer comment about trailers_only headers
* Add TODO requested by markdroth
* Move variable in struct to improve space efficiency
* Don't instantiate ExecCtx in channel_args destructor unless needed
* 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
* Refactoring EdsResourceArgs::Locality to have a vector of Endpoints:
port, health_status, and lb_weight.
As well, Adding RpcOption to WaitForBackend()
* Update WaitForBackend
* Modified WaitForBackend default param
* reuse SeenBackend
* Code review comments
* refactor WaitForAllBackend parameter list
* Fixing tests to ensure they are more strict;
Fixing test code according to code review comments.
* Fixing code review suggestions
* Increasing timeout for StressTest
* Adding suffix for stats handling to gRPC
* Fixing typo
* Fixing codegen, adding tests
* Fixing test failures
* Adding nullptr default in StubOptions
* Updating golden test file
* Replacing std::make_unique with absl::make_unique for pre-C++14 compatibility
* Fixing clang format errors
* Reuse stub options for generic stubs
* Cleaning up compiler warnings in GenericStub
* pass XdsClient to LB policies via channel args
* add channel arg for overriding bootstrap config on a per-channel basis
* change tests to use new channel arg approach -- currently failing for server-side tests
* use the same channel args approach on the server side
* clang-format
* fix CircuitBreakingMultipleChannelsShareCallCounter test
* fix XdsEnabledServerTest test
* add TODO
* clang-format
* generate_projects
* fix clang-tidy
* fix build
* attempt to fix python
* Reduce the usage of _xds Bazel rules
* Inject DISABLED_XDS_PROTO_IN_CC to admin_services_end2end_test
* Remove _xds suffix Bazel rules completely
* Remove the _xds rules from imports
* Simplify the ifndef usage in admin_services_end2end_test
* Implement FilterChainMatch logic
* Add tests for transport protocol too
* Tests for duplicate NACKing
* Introduce ConnectionManager as an interface for config fetchers
* Do not parameterize IncrementIfNonZero
* Some formatting
* Reviewer comments
* Add filter chain match information for duplicate match error
* Reviewer comments
* Some cleanup
* Reviewer comments
* Reviewer comments
* Reviewer comments
* Clang-tidy
* Implement C++ Admin Interface API
* Address reviewer's requests
* Remove static asserts for raw pointers
* Make sanity tests happy
* Windows: pacify conflict between ifndef and macros
* Disable admin services test on iOS
* Make iOS happy by:
* Letting grpcpp_admin conditionally depend on grpcpp_csds
* Fix an unexpected side-effect of dependency update
* Implement the xDS Config Dump as CSDS in Core
* Revemp the logic of caching and constructing the CSDS response
* Unref created error
* Fix the clang tidy complains
* Resolve comments about symbol preload and Json ctor
* Improve readability
* Merge with new ADS logic && support latest CSDS
* Refactor the version/client_status logic
* Add support for error_state
* Add support for does_not_exist
* Add node information
* Fix the ProtoBuf segfault
* More test cases
* Refactor to use bytes as cache instead of JSON
* Apply clang_tidy's suggestion
* Resolve reviewer's requests
* Tiny stylish fixes && make sanity test happy
* WIP: still working on the matchers
* Update a bunch of matchers
* Improve readability a bit
* Resolve reviewer's suggestions
* Resolve reviewer's comments
* Make Unpack fail fast
* Revert "Revert "xDS status notifier (#25321)" (#25702)"
This reverts commit 3c9f3972e3.
* Remove connection from map when OnClose is not registered
* Reviewer comments
* Refactored with dynamic filters
* Error-tolerance tuned
* Fix leak of grpc_error and data race of canceller
* Adopt the latest xDS HTTP filter framework
* Fix fault injection tests' conflict with router filter
* Test alternative setup (override, no-override) without copy
* Refactor file strcutures of fault injection filter
* Rewrite the Json parsing/assembling logic again
* Added logic for aborting streaming RPC && resolve comments
* Revert "Revert "xDS HTTP filter support for gRPC client" (#25555)"
This reverts commit 785a128a83.
* xds_end2end_test: avoid flakes from lingering shutdown from previous test