* 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>
Add `grpc::BinderServerCredentials()` and other related functionalities for the server to listen to binder transactions through a phony "binder port".
The APIs are temporarily placed in internal headers until the corresponding gRFC is merged.
* Avoid copy constructor
```
src/core/lib/gpr/log_linux.cc:78:33: error: copying variable of type 'grpc_core::PthreadTlsImpl<long>' invokes deleted constructor
static GPR_THREAD_LOCAL(long) tid = 0;
^ ~
./src/core/lib/gpr/tls.h:64:3: note: 'PthreadTlsImpl' has been explicitly marked deleted here
PthreadTlsImpl(const PthreadTlsImpl&) = delete;
^
1 error generated.
```
* Generalize pthread TLS to any trivial type
Use multiple pthread keys for types larger than a machine word.
Implement generic timer TLS optimization on all platforms.
This PR imports unit tests and end-to-end tests of binder transport from the internal repository. No further changes will be made to internal repository.
* Add construct/destruct helper functions
Will be used in upcoming promise implementation
* Poll type for promises library
* Library to talk about things that look like promises if you squint
* Helper code for promises to deal with status types generically
* Library to talk about things that make promises
* build
* Join combinator for promise library
* Changes to sync required for promise activities
* sanitized
* Automated change: Fix sanity tests
* Automated change: Fix sanity tests
* Update basic_join.h
* 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
* Library to talk about things that make promises
* Promises loop construct
* build
* Changes to sync required for promise activities
* sanitized
* add comments
* 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
* 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>
* 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>