* Reland: "Make GetDefaultEventEngine return a shared_ptr (#30280)"
This reverts commit 45959e7cc1.
* Attempted fix with NoDestruct
* Not a process-wide singleton for the type. Just a NonDestruct
* fix
This works around valgrind memory leaks by giving EventEngines a fixed
lifetime. We eventually want ref-counted EventEngines internally, so this is
a step in the right direction as well.
* Rename the default EventEngine headers
Small cleanup. This code hasn't been related to factories for a month or
two.
* ensure only one target contains default_event_engine.h
* src + hdr in same target
* include guards
* service config API: use absl::Status instead of grpc_error
* Automated change: Fix sanity tests
* add missing build deps
* attempt to work around build breakage on older compilers
* trying the work-around in more spots
* more work-arounds
* more workarounds
* Automated change: Fix sanity tests
* work around another compiler problem
* Automated change: Fix sanity tests
* Automated change: Fix sanity tests
Co-authored-by: markdroth <markdroth@users.noreply.github.com>
* Revert "Revert "Reland: Add SRV and TXT record lookup methods to the iomgr PAI (#30242)"
This reverts commit b5966f39eb.
* release lock before unreffing
* Revert "Reland: Add SRV and TXT record lookup methods to the iomgr API (#30206)"
This reverts commit c229703f9f.
* Automated change: Fix sanity tests
Co-authored-by: drfloob <drfloob@users.noreply.github.com>
* Revert "Revert "Add SRV and TXT record lookup methods to the iomgr API (#30078)" (#30176)"
This reverts commit 2c3acbb2b2.
* one way to fix the ares handle race. Another option: work_serializer
* replace mu with parent's work serializer
* add lock annotations
* Revert "replace mu with parent's work serializer"
This reverts commit 0fce0ae150.
* statusor -> optional
* Automated change: Fix sanity tests
* add missing dep
Co-authored-by: drfloob <drfloob@users.noreply.github.com>
* Rename ResolveName to LookupHostname (same as EventEngine)
* Add stubs and no-op impls for LookupTXT and LookupSRV
* add native resolver tests that assert unimplemented
* extract custom name_server-setting logic and remove goto
* Separate SRV queries from grpc_dns_lookup_ares
* add necessary fixits before merging
* Automated change: Fix sanity tests
* fix missing ExecCtx on resolver tests
* separate out TXT lookup from hostname lookup (now all 3 are separate)
* rm DNS and update docs
* fix the fixer (forgot to add deps to BUILD)
* remove unused SRV and TXT args from ares hostname lookup method
* rename hostname-only ares dns lookup method
* refactor AresRequest using template method pattern
* Add name_server to Ares LookupHostname internals (needs iomgr API change)
* fix resolver test, callback should not be called on cancellation
* implement Ares-iomgr SRV and TXT lookup methods (verified manually)
Used a custom bind server with some redacted tests from
`resolve_address_test` to ensure both are working as expected.
* cleanup cruft
* unify common ares request setup logic between A, AAAA, TXT, and SRV
* generate_projects
* comment out unused args
* DNSResolver iomgr API uses Duration; hostname has all args now
* rm stale TODOs
* windows fix - bad variable name
* windows fix
* Automated change: Fix sanity tests
* reviewer feedback
* make protected members private
* move common properties to AresRequest base class
* localhost TXT results are empty, not an error
* reviewer feedback
* fix
Co-authored-by: drfloob <drfloob@users.noreply.github.com>
Rollforward with TCP connect handshaker again(#29111) after fixing broken internal targets.
The changes needed were just visibility changes to the handshaker and the http_connect_handshaker libraries as they are used internally.
DNS requests were previously cancellable, but it was assumed
that the resolution callback would be called in all cases. Now, requests
provide a `bool Cancel(TaskHandle handle)` method that lets callers know
whether cancellation is successful, and if so, the callback will not be
run.
This is in accordance with EventEngine's cancellation semantics, and it
is a step towards migration from iomgr to EventEngine.
Currently the tcp connect is performed in chttp2_connector before the handshaking is triggered. For
use cases where the application wants to perform business logic before
the tcp connection, this is problematic. By moving the TCP connect into
its own handshaker and registering it by default at the beginning, this
allows applications to add a new handshaker at the beginning allowing
handshaker logic before a TCP connect.
This approach has the advantage of slightly simplifying the logic in
tcp_connect_handshaker and httpcli as tcp_connect/callback can be
removed.
As the TCP connect needs parameters like resolved_addr,
interested_parties, a new struct called connection args is created as a
member for Handshaker Args.
For server handshakers most of the arguments here are not directly
useful, other than the deadline.
* Refactor end2end tests to exercise each EventEngine
* fix incorrect bazel_only exclusions
* Automated change: Fix sanity tests
* microbenchmark fix
* sanitize, fix iOS flub
* Automated change: Fix sanity tests
* iOS fix
* reviewer feedback
* first pass at excluding EventEngine test expansion
Also caught a few cases where we should not test pollers, but should
test all engines. And two cases where we likely shouldn't be testing
either product.
* end2end fuzzers to be fuzzed differently via EventEngine.
* sanitize
* reviewer feedback
* remove misleading comment
* reviewer feedback: comments
* EE test_init needs to play with our build system
* fix golden file test runner
Co-authored-by: drfloob <drfloob@users.noreply.github.com>
* Initial structure for RLS
* Adding and building the proto to parse the Any proto for the plugins
* re-org
* Parsing the plugin
* Parsing more into json
* Parsed proto to json
* small cleanup
* Adding prefix
* Added new rls_experimental policy
* build files
* Fixing according to code review comments
* code review comments
* Adding sym changes
* adding action name check
* fixing code review comments.
* fixing unused var error
* clean up
* fixing code review comments
* fixing code review comments
* fixing according to code review comments.
* Remove unnecessary include
* small fix
* generate more, hard-code less
* Moving to using absl::variant
* absl::string_view and absl::variant of vector of std::string are not
playing nice together.
* fixed variant
* Using absl::variant now
* Checkint used plugins
* Refactor Parsing code and separating out Parsing of the plugin
* Fixing code review comments
* code review comments
* fixing code review comments.
* Addressing code review comments
* First end-to-end test
* generated build files
* commit generated files via tools/codegen/core/gen_upb_api.sh
* Fixing rls policy parsing tests
* Restore checks for the test server
* Refactor rls_server
* added keys to rls request
* fixing small logic error
* Complete the test using all the keys
* Separating out RLS test and rls_server thread
* sanity errors
* generated build files
* Complete the rest of the tests and sanity cleanup
* fixing code review comments: using upb_JsonEncode now!
* fixing code review comments
* fixing code review comments
* Fixing code review comments
* misisng fix
* simplifying tests
* simplify tests 2
* Linking in the correct proto for rls_config
* restore metadata check
* Add disable test
* Fixing RLS test and removing environment var that is no longer necessary
* Fixing "Wrong type" type of tests after json parsing change to accept
STRING for number
* adding json_encode.h/c to src/upb/gen_build_yaml.py and generate
necessary files.
* Fixing un-used var error
* fixing sanity errors
* Fixing the upb encoding buffer
* Fixing code review comments.
* Adding nack test for unkonwn plugin proto
* Last bit of code review comments
* fixing unused variable
Based on a handful of https://abseil.io/tips, it's generally advised to
only fully-qualify namespaces when in a `using` statement, or when it's
otherwise required for compilation. In all other cases, the general
recommendation is to not fully-qualify.
This change fixes most `grpc.*` namespace uses. There are potential
challenges in trying to make blanket changes to non-gRPC namespace uses,
such as `::testing`, since there is also a `grpc::testing` namespace.
Based on a handful of https://abseil.io/tips, it's generally advised to
only fully-qualify namespaces when in a `using` statement, or when it's
otherwise required for compilation. In all other cases, the general
recommendation is to not fully-qualify.
This change fixes most `grpc.*` namespace uses. There are potential
challenges in trying to make blanket changes to non-gRPC namespace uses,
such as `::testing`, since there is also a `grpc::testing` namespace.
* Revert "Revert "Replace work serializer with a mutex in c-ares resolver (#27858)" (#28324)"
This reverts commit b972b76816.
* Fix synchronization of grpc_ares_resolver_address