* Refactor ThreadManager to leverage a shared ThreadPool
This is a step towards a work-stealing thread pool implementation:
unifying thread pools so that work stealing affects timer callbacks as
well.
A subsequent step will expose the timeout logic so that the timer wakeup
and check can be triggered externally (by pollers, in the common case).
* fix atomic uint64_t type missing on some platforms
* sanitize + platform fixes
* ->quiesce
* shut down the timer manager to release the main thread
* roll back atomics
* use a dedicated thread for timer_manager to prevent local execution (work stealing)
* drain the pools after timer manager tests; sanitize
* iwyu
* reintroduce fork handling
* sanitize
* fix
* remove remains of grpc_csharp_ext artifact build completely
* add back part of C# distribtests
* redirect C# linux distribtests
* comment out some distribtests
* switch updateversion to Grpc.tools
* fix .proto
* fix distribtest complile
* temporarily comment out service in .proto
* cleanup
* improvements
* reenable mac distribtests
* fixes
* fix: grpcio fails to build from source on Apple Silicon mac #(25082)
Boringssl currently does not support macOS arm64, so installation on these platform with default config will undoubtedly fail, that means the env var 'BUILD_WITH_SYSTEM_OPENSSL' must be set to true.
* Use system installation of openssl by default on macOS arm64
* Format code by yapf
* XdsBootstrap: move two more methods out of the interface
* Automated change: Fix sanity tests
* XdsClient: add unit test
* Automated change: Fix sanity tests
* fix memory leaks
* add helper method
* add unsubscription
* add test for multiple subscriptions
* clang-format
* fix build
* fix flakiness
* add checking for other node fields
* add v2 test
* add response builder
* add test for update from server
* add test for update containing only changed resources
* clang-format
* fix build
* add test for resource not existing upon subscription
* add test for stream closed by server
* add test for multiple watchers for the same resource
* add test for connection failure
* clang-format
* add test for resources wrapped in Resource wrapper message
* add test for resource validation failure
* add test for multiple invalid resources, and fix a case in XdsClient
* add test for validation failure for already-cached resource
* add test for server not resending resources after stream disconnect
* clang-format
* fix XdsClient to report channel errors to newly started watchers
* fix XdsClient to send cached errors/does-not-exists to newly started watchers
* fix watcher to ensure events arrive in the expected order
* fix tests
* clang-format
* add test for multiple resource types
* fix xds_cluster_e2e_test
* Automated change: Fix sanity tests
* cleanup
* add federation tests
* clang-format
* remove now-unnecessary XdsCertificateProviderPluginMapInterface
* code review comments
* simplify XdsResourceType::Decode() API
* XdsClient: add unit tests for XdsClusterResourceType
* add XdsClient with gRPC bootstrap config
* add LB policy tests
* started adding CertificateProvider tests
* update for recent API changes
* fix merge bugs
* xDS resource validation: identify extensions by type_url instead of name
* fix build
* migrate to ValidationErrors
* add xds_common_types_test
* finish TLS tests and add LRS tests
* move ScopedExperimentalEnvVar to its own library and remove redundant e2e tests
* add circuit breaking and outlier detection tests
* add validation to outlier detection LB policy parsing
* clang-format
* Automated change: Fix sanity tests
* fix signedness
* fix sanity
* xDS: implement xds_wrr_locality LB policy and return xDS LB config from XdsClient
* fix unused parameter
* fix sanity
* fix test
* Automated change: Fix sanity tests
* fix aggregate cluster bug
* Automated change: Fix sanity tests
* absl::make_unique -> std::make_unique
* fix sanity
* fix sanity
* iwyu
* iwyu
* update code for XdsResourceTypeImpl changes
Co-authored-by: markdroth <markdroth@users.noreply.github.com>
The TlsSessionKeyLoggerCache constructor is annotated with
ABSL_EXCLUSIVE_LOCKS_REQUIRED(g_tls_session_key_log_cache_mu)
and in TlsSessionKeyLoggerCache::Get it gets called indirectly by:
grpc_core::MutexLock lock(g_tls_session_key_log_cache_mu);
...
cache = grpc_core::MakeRefCounted<TlsSessionKeyLoggerCache>()
New Clang versions started to analyze the constructor call in
grpc_core::MakeRefCounted, and since it cannot reason across function
boundaries it does not know that the lock is held at that point:
../../third_party/grpc/src/src/core/lib/gprpp/ref_counted_ptr.h:335:31:
warning: calling function 'TlsSessionKeyLoggerCache' requires holding mutex
'g_tls_session_key_log_cache_mu' exclusively [-Wthread-safety-analysis]
return RefCountedPtr<T>(new T(std::forward<Args>(args)...));
^
../../third_party/grpc/src/src/core/tsi/ssl/key_logging/ssl_key_logging.cc:121:26:
note: in instantiation of function template specialization
'grpc_core::MakeRefCounted<tsi::TlsSessionKeyLoggerCache>' requested here
cache = grpc_core::MakeRefCounted<TlsSessionKeyLoggerCache>();
^
1 warning generated.
This change avoids the warning by calling the constructor directly.