AJ Heller
2820734f47
Reland: "[EventEngine] Refactor TimerManager to leverage a shared ThreadPool ( #31392 )" ( #31482 )
...
* Revert "Revert "[EventEngine] Refactor TimerManager to leverage a shared ThreadPool (#31392 )" (#31425 )"
This reverts commit 1cbf6d64ae
.
* fix deadlock on windows engine shutdown
2 years ago
Vignesh Babu
d760c1fef7
Revert "Posix event engine tcp client ( #31074 )" ( #31452 )
...
This reverts commit 390ae5d412
.
2 years ago
Vignesh Babu
390ae5d412
Posix event engine tcp client ( #31074 )
...
* removing EndpointConfig::Get method
* Automated change: Fix sanity tests
* cleanup
* fix
* fix review comments
* review comments
* cleanup
* update comments
* fix
* cleanup
* update comments
* Automated change: Fix sanity tests
* fix misleading comments
* bug fixes
* fix
* fix
* start
* revert some changes for bug fixes and allow spurious wakeups for poll based poller
* sanity
* fix
* minor fix
* review comments
* fix
* comment
* remove re-defined function
* fix review comments
* fix windows iocp build issue due to removed function
* change Milliseconds return type
* fix
* remove header
* regenerate projects
* fix sanity
* code
* fix sanity
* Automated change: Fix sanity tests
* Forking iomgr internal_errqueue defines for posix event engine
* fix BUILD file
* start
* update
* sanity
* regenerate_projects
* Automated change: Fix sanity tests
* rename
* review comments
* update
* review comments
* Automated change: Fix sanity tests
* fix BUILD
* add no_windows tag
* update
* update
* remove debug statements
* delete unused file
* update
* fix BUILD
* regenerate projects
* update
* fix BUILD
* update
* fix sanity
* minor additions to configure global tcp user timeout values
* cleanup
* fix build syntax
* start
* update
* fix
* change poller interface for posix event engine
* update event_poller_posix_test
* fix build error
* Add more unit tests
* windows ee changes
* update comment
* remove unused deps
* fix msan issue
* add comment
* adding rcv lowat helper to socket wrapper
* fix sanity
* review comments
* fix build issue
* fix sanity
* sanity
* iwyu sanity
* fix build
* merge conflict
* Automated change: Fix sanity tests
* update
* update
* fix macos issue
* fix msan and ubsan issues
* fix macos build issue
* comment
* review comments
* remove unused dep
* sanity
* merge conflict
* mac build issue
* regenerate projects
* build issue
* fix test issues
* add test
* fix typo and address review comments
* review comments
* Automated change: Fix sanity tests
* update
* merge issue
* add a test to check connect timeouts and cancellation
* regenerate projects
* sanity
* remove unnecessary code
* Add utils to create and prepare socket for tcp client
* some fixes
* fixes
* review comments
* sanity
* fix build issue
* review comments
* add thread annotations
* MacOS fix unused variable
* add some more #endif comments
* fixes
* update
* more fixes
* regenerate projects
* sanity
* some fixes
* more fixes
* rm hdr file
* macos fixes
* typo
* more build issues
* macos crashes
* windows build
* adding Poller::Work to event engine constructor
* update client_test
* iwyu
* iwyu
* regenerate projects
* cleanup
* cleanup
* regenerate projects
* regenerate projects
* fix
* fix
* merge conflict
* comments
* add experiments flag
* fix
* newline
* newline
* iwyu
* fix
* fix
* remove some ifdefs
* fix tsan issue in bm_event_engine_run
* sanity
* sanity
* Add a quiesce to threadpool
* fix
* Automated change: Fix sanity tests
* fixes
* typo
* comments
* fix build
* fixes
* macos fixes
* more macos fixes
* handle shutdown better
* updated poller kicked api contract and fix bug
* iwyu
* fix sanity
Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>
Co-authored-by: Craig Tiller <ctiller@google.com>
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
AJ Heller
1cbf6d64ae
Revert "[EventEngine] Refactor ThreadManager to leverage a shared ThreadPool ( #31392 )" ( #31425 )
...
* Revert "[EventEngine] Refactor ThreadManager to leverage a shared ThreadPool (#31392 )"
This reverts commit 66df2c646a
.
* sanitize
2 years ago
Yash Tibrewal
5f6c357e74
Move some targets from //: to //src/core: ( #31402 )
...
* temp
* temp
* temp
* top BUILD builds
* everything builds
* buildify
* temp fix_build_deps change
* fix gpr_atm
* additional changes
* fix build files
* nofixdeps
* Generate projects
* json_args
* fix context
* Generate projects
* Sprinkle some avoid_dep tags
* Run fix_build_deps
* Remove additional avoid_dep
* Revert some targets
* grpc_mock_cel
2 years ago
AJ Heller
66df2c646a
[EventEngine] Refactor ThreadManager to leverage a shared ThreadPool ( #31392 )
...
* 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
2 years ago
Vignesh Babu
e8c30b487f
Invoking Poller::Work in posix event engine constructor ( #31128 )
...
* adding Poller::Work to event engine constructor
* iwyu
* iwyu
* cleanup
* regenerate projects
* fix
* comments
* add experiments flag
* fix
* newline
* newline
* iwyu
* remove some ifdefs
* fix tsan issue in bm_event_engine_run
* Add a quiesce to threadpool
* fix
* Automated change: Fix sanity tests
* disable posix_event_engine_test on windows
Co-authored-by: Craig Tiller <ctiller@google.com>
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
Yash Tibrewal
e8b416e654
Add a BUILD file in src/core ( #31294 )
...
* Initial
* Modifying fix_build_deps.py
* Move event_engine_common as a better signal
* fixes
* fixes
* Regenerate projects
* Export headers for event_engine_common
* Regenerate projects
* Fix build files
* Some cleanup
* Reviewer comments
* Remove unnecessary blank line
* Remove unnecessary visibility exception for event_engine_common
2 years ago
Mark D. Roth
f2c4795f4f
core tests: absl::make_unique -> std::make_unique ( #31361 )
...
* core tests: absl::make_unique -> std::make_unique
* iwyu
2 years ago
Craig Tiller
afa3a6c890
[event_engine] Fix for the EE/iomgr shutdown ordering problem ( #31265 )
...
* Remove ResetDefaultEventEngine
Now that it is a weak_ptr, there's no need to explicitly reset it. When
the tracked shared_ptr is deleted, the weak_ptr will fail to lock, and a
new default EventEngine will be created.
* forget existing engine with FactoryReset
* init/shutdown in event engine for now
* fix
* fix
* fix windows deadlock
* Automated change: Fix sanity tests
* fix
* better windows fix
Co-authored-by: AJ Heller <hork@google.com>
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
Vignesh Babu
e7ad460c7b
Event Engine related minor cleanup ( #31188 )
...
* Minor event engine related cleanup
* regenerate_projects
* fix test
* iwyu
2 years ago
Craig Tiller
db5fe72da9
[tsan] Threadsafe strerror implementation ( #31167 )
...
* fix
* spread
* fix
* Automated change: Fix sanity tests
* fix
* remove unnecessary .c_strs
* lashes
* fix
* Automated change: Fix sanity tests
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
Vignesh Babu
7655858e93
Reland tcp endpoints for posix event engine ( #31150 )
...
* Revert "Revert "Tcp endpoint implementation for posix event engine. (#30559 )" (#31134 )"
This reverts commit 5fa37322cb
.
* make tx zero-copy more robust
* make tx zero-copy more robust
* typo
* fix
* re-enable commented code
* sanity
* sanity again
* Add parsing of /etc/security/limits.d directory
* review comments
* review comments
* typo in copyright
* missing newline
* sanity
* sanity
* iwyu
2 years ago
Craig Tiller
2ec220a6b1
[sanity] Fix it ( #31163 )
...
* fix sanity
* fix sanity
2 years ago
Craig Tiller
8174a75079
[iwyu] Add more test directories ( #30952 )
...
* [iwyu] Add more test directories
* fix
* fix
* fix
* fix
* fix
* Automated change: Fix sanity tests
* fix
* iwyu
* Automated change: Fix sanity tests
* fix
* fix
* fix
* fix
* Automated change: Fix sanity tests
* fix
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
Craig Tiller
9c98d67d7a
[c++14] absl::make_unique --> std::make_unique ( #31159 )
...
* [c++14] absl::make_unique --> std::make_unique
* fix
* fix
2 years ago
AJ Heller
2ee2c91c92
Reland x2: Make GetDefaultEventEngine return a shared_ptr ( #30619 )
...
* Reland x2: Make GetDefaultEventEngine return a shared_ptr
* remove thread leak from NativeDNSResolver
This is not going to work for resolvers that support cancellation.
* give resolvers bounded lifetimes
Some resolver own EventEngines. EventEngines cannot run off the end of
the process since they have unjoined threads (problematic in a small set
of environments). This gives resolvers bounded lifetimes, and allows
replacement of resolvers without ASAN issues of deleting resolvers in
active use (occurs in tests).
* fix
* fix windows
* fix surface init test
* fix
* sanitize
* use after move
* the test must wait for the callback to be destroyed
* windows fix: delete the resolver on iomgr shutdown, not before
* Make TimerManager threads non-joinable
On gRPC shutdown, any unjoined TimerManager threads will cause TSAN to
detect thread leaks. This fix resolves issues I saw in end2end test
shutdown in another PR, where a single timer manager thread was always
alive after the test ended.
The long-term solution is to integrate the new ThreadPool here, but this
unblocks me for now.
* backport fix
* fix
* shared_ptr<EventEngine> in EventEngine benchmarks
2 years ago
Craig Tiller
5fa37322cb
Revert "Tcp endpoint implementation for posix event engine. ( #30559 )" ( #31134 )
...
This reverts commit a81391d931
.
2 years ago
Vignesh Babu
a81391d931
Tcp endpoint implementation for posix event engine. ( #30559 )
...
* convert tcp code to use EndpointConfig and successfully compile
* regenerate projects
* copying config options used in tcp code to create map backed endpoint configs
* fix minor build issues
* fix includes in tests
* fix some build and test issues
* modifying endpoint config definition from an abstract interface into a concrete implementation
* minor fix
* add unreachable code check
* fix some windows build issues
* fix more build issues
* adding a grpc_tcp_generic_options struct to hold data extracted from EndpointConfig
* code formatting
* simplify
* fix sanity checks
* fix windows issues
* some posix fixes
* disabling copy constructor and copy assignment operator for endpoint config
* fix sanity checks
* fix syntax error
* fix weird formatting
* fix build issue
* fix review comments
* reverting un-necessary change
* remove channel args completely from windows impl since it is unused
* remove unused headers and fix usage in endpoint_pair_windows.cc
* cleanup
* cleanup
* fix some initialization issues
* re-generate projects
* removing some files
* fix ifdef for windows
* fixing windows build issue due to improper header file include
* Automated change: Fix sanity tests
* start
* regenerate-projects
* delete some files
* Automated change: Fix sanity tests
* review comments
* add comment
* Migrating posix event pollers to use new event poller interface
* add inline attributes
* Automated change: Fix sanity tests
* remove ref/unref from iomgr engine closure ad add custom closure types internal to the pollers
* updating time util usage
* use unique_ptrs
* update comments
* Automated change: Fix sanity tests
* review comments
* rename GetPointer to GetVoidPointer
* cleanup
* Automated change: Fix sanity tests
* removing EndpointConfig::Get method
* Automated change: Fix sanity tests
* cleanup
* fix
* fix review comments
* review comments
* cleanup
* update comments
* fix
* cleanup
* update comments
* Automated change: Fix sanity tests
* fix misleading comments
* bug fixes
* fix
* fix
* start
* revert some changes for bug fixes and allow spurious wakeups for poll based poller
* sanity
* fix
* minor fix
* review comments
* fix
* comment
* remove re-defined function
* fix review comments
* fix windows iocp build issue due to removed function
* change Milliseconds return type
* fix
* remove header
* regenerate projects
* fix sanity
* code
* fix sanity
* Automated change: Fix sanity tests
* Forking iomgr internal_errqueue defines for posix event engine
* fix BUILD file
* start
* update
* sanity
* regenerate_projects
* Automated change: Fix sanity tests
* rename
* review comments
* update
* review comments
* Automated change: Fix sanity tests
* fix BUILD
* add no_windows tag
* update
* update
* remove debug statements
* delete unused file
* update
* fix BUILD
* regenerate projects
* update
* fix BUILD
* update
* fix sanity
* minor additions to configure global tcp user timeout values
* cleanup
* fix build syntax
* change poller interface for posix event engine
* update event_poller_posix_test
* fix build error
* Add more unit tests
* windows ee changes
* update comment
* remove unused deps
* fix msan issue
* add comment
* adding rcv lowat helper to socket wrapper
* fix sanity
* review comments
* fix build issue
* fix sanity
* sanity
* iwyu sanity
* fix build
* merge conflict
* Automated change: Fix sanity tests
* update
* update
* fix macos issue
* fix msan and ubsan issues
* fix macos build issue
* comment
* review comments
* remove unused dep
* sanity
* merge conflict
* mac build issue
* regenerate projects
* build issue
* fix typo and address review comments
* review comments
* Automated change: Fix sanity tests
* update
* merge issue
* review comments
* sanity
* fix build issue
* review comments
* add thread annotations
* MacOS fix unused variable
* add some more #endif comments
* missing semi-colon
* Automated change: Fix sanity tests
* sanity
* sanity again
* sanity try again
* sanity again
* try again with no_include pragma
Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>
2 years ago
AJ Heller
c0e5e35c7a
Replace EventEngine::Promise with grpc_core::Notification ( #31027 )
...
* Replace EventEngine::Promise with grpc_core::Notification
* remove promise.h
* Automated change: Fix sanity tests
* fix windows
* fix iocp
* fix client_test
Co-authored-by: drfloob <drfloob@users.noreply.github.com>
2 years ago
Craig Tiller
1ad4bbe78e
Revert "fix ( #31018 )" ( #31021 )
...
This reverts commit 2e6f268dfc
.
2 years ago
Craig Tiller
2e6f268dfc
fix ( #31018 )
2 years ago
Craig Tiller
96f5cddb5f
[time] Introduce time sources ( #30815 )
...
* [time] Introduce time sources
* make import trivial
* Automated change: Fix sanity tests
* fix
* Automated change: Fix sanity tests
* fix
* Automated change: Fix sanity tests
* Automated change: Fix sanity tests
* review feedback
* fix
* Automated change: Fix sanity tests
* ios fix
* fix
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
Vignesh Babu
4e7f0e1eac
Update to the event engine poller interface ( #30828 )
...
* change poller interface for posix event engine
* update event_poller_posix_test
* windows ee changes
* update comment
* remove unused deps
* review comments
* fix build issue
* fix sanity
* fix build
* Automated change: Fix sanity tests
* review comments
* remove unused dep
* sanity
* fix typo and address review comments
* review comments
* Automated change: Fix sanity tests
* fix typo in comment
Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>
2 years ago
Craig Tiller
14c3839749
[event_engine] More robust ee::Promise<> implementation ( #30977 )
...
* fix promise
* iocp
* iwyu
* Automated change: Fix sanity tests
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
Vignesh Babu
0867393bde
Revert "Revert "Forking tcp socket utils for posix event engine endpoints"" ( #30949 )
...
* Revert "Revert "Forking tcp socket utils for posix event engine endpoints (#30383 )" (#30946 )"
This reverts commit 33b3fe89c4
.
* make test robust
2 years ago
Richard Belleville
33b3fe89c4
Revert "Forking tcp socket utils for posix event engine endpoints ( #30383 )" ( #30946 )
...
This reverts commit d7cce32449
.
2 years ago
Vignesh Babu
d7cce32449
Forking tcp socket utils for posix event engine endpoints ( #30383 )
...
* convert tcp code to use EndpointConfig and successfully compile
* regenerate projects
* copying config options used in tcp code to create map backed endpoint configs
* fix minor build issues
* fix includes in tests
* fix some build and test issues
* modifying endpoint config definition from an abstract interface into a concrete implementation
* minor fix
* add unreachable code check
* fix some windows build issues
* fix more build issues
* adding a grpc_tcp_generic_options struct to hold data extracted from EndpointConfig
* code formatting
* simplify
* fix sanity checks
* fix windows issues
* some posix fixes
* disabling copy constructor and copy assignment operator for endpoint config
* fix sanity checks
* fix syntax error
* fix weird formatting
* fix build issue
* fix review comments
* reverting un-necessary change
* remove channel args completely from windows impl since it is unused
* remove unused headers and fix usage in endpoint_pair_windows.cc
* cleanup
* cleanup
* fix some initialization issues
* re-generate projects
* removing some files
* fix ifdef for windows
* fixing windows build issue due to improper header file include
* Automated change: Fix sanity tests
* start
* regenerate-projects
* delete some files
* Automated change: Fix sanity tests
* review comments
* add comment
* review comments
* rename GetPointer to GetVoidPointer
* cleanup
* Automated change: Fix sanity tests
* removing EndpointConfig::Get method
* Automated change: Fix sanity tests
* cleanup
* fix
* minor fix
* fix
* update
* fix BUILD
* update
* fix sanity
* minor additions to configure global tcp user timeout values
* fix build syntax
* fix build error
* Add more unit tests
* fix msan issue
* add comment
* adding rcv lowat helper to socket wrapper
* fix sanity
* sanity
* iwyu sanity
* fix macos issue
Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>
2 years ago
Craig Tiller
b463cabeec
Update flaky tests ( #30873 )
...
* Update flaky tests list
* Automated change: Fix sanity tests
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
Vignesh Babu
029f945504
Migrating posix event pollers to use new event poller interface ( #30419 )
...
* Migrating posix event pollers to use new event poller interface
* add inline attributes
* Automated change: Fix sanity tests
* remove ref/unref from iomgr engine closure ad add custom closure types internal to the pollers
* updating time util usage
* use unique_ptrs
* update comments
* Automated change: Fix sanity tests
* fix review comments
* review comments
* cleanup
* update comments
* fix
* cleanup
* update comments
* Automated change: Fix sanity tests
* fix misleading comments
* bug fixes
* fix
* fix
* revert some changes for bug fixes and allow spurious wakeups for poll based poller
* sanity
* fix
* review comments
* fix
* comment
* remove re-defined function
* fix review comments
* fix windows iocp build issue due to removed function
* change Milliseconds return type
* remove header
* regenerate projects
* fix sanity
* fix sanity
* Automated change: Fix sanity tests
* delete unused file
* build issue
* cleanup
Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>
2 years ago
AJ Heller
dffc20df69
Add tests for TimerManager ( #30758 )
...
* Add tests for TimerManager
* Automated change: Fix sanity tests
Co-authored-by: drfloob <drfloob@users.noreply.github.com>
2 years ago
Craig Tiller
f573fd44f9
[test] Semi-automatic flaky test tracking ( #30638 )
...
* [test] Semi-automatic flaky test tracking
* fix
* Automated change: Fix sanity tests
* Update update_flakes.py
* fix formatting
* Automated change: Fix sanity tests
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
AJ Heller
d025c1732f
Revert "Reland: Make GetDefaultEventEngine return a shared_ptr ( #30563 )" ( #30573 )
...
This reverts commit ee7c0a8e4c
.
2 years ago
Vignesh Babu
009dadbb74
Fork iomgr traced buffer list implementation for posix event engine ( #30539 )
...
* Forking iomgr internal_errqueue defines for posix event engine
* fix BUILD file
* start
* update
* sanity
* regenerate_projects
* Automated change: Fix sanity tests
* review comments
* review comments
* Automated change: Fix sanity tests
* fix BUILD
* add no_windows tag
* minor typo
* typo
* review comments
* regenerate projects
* fix BUILD issue
* iwyu fixes
Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>
2 years ago
AJ Heller
ee7c0a8e4c
Reland: Make GetDefaultEventEngine return a shared_ptr ( #30563 )
...
* 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
2 years ago
AJ Heller
45959e7cc1
Revert "Make GetDefaultEventEngine return a shared_ptr ( #30280 )" ( #30558 )
...
This reverts commit 4df74f2b4c
.
2 years ago
AJ Heller
4df74f2b4c
Make GetDefaultEventEngine return a shared_ptr ( #30280 )
...
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.
2 years ago
AJ Heller
8f5300b95d
Rename the default EventEngine headers ( #30528 )
...
* 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
2 years ago
AJ Heller
c752a6b25e
Reland: Windows IOCP implementation for the WindowsEventEngine ( #30480 )
...
Reverts #30466 , relanding #30389 . Requires a cherrypick.
2 years ago
AJ Heller
9d4e0e17fe
Revert "Windows IOCP implementation for the WindowsEventEngine ( #30389 )" ( #30466 )
...
This reverts commit 52402afdd4
.
2 years ago
AJ Heller
52402afdd4
Windows IOCP implementation for the WindowsEventEngine ( #30389 )
...
This is a partial fork of the windows iomgr code - specifically the IOCP and Socket pieces - with some improved architecture and encapsulation. And the start of a WindowsEventEngine.
Once this code is used in a gRPC TCP context, I imagine a few issues will shake out. Also, getting sanitizers set up with MSVC will take a bit of work (see a commit referencing abseil and MSVC bugs to hack around).
I forked the IomgrEventEngine's posix poller interfaces in the hope of negotiating compatibility between the platforms, but the interfaces diverged a fair bit, and I'm doubtful we'll be able to use these "pollers" generically in the same TCP code. Reunification might not happen, and that's probably fine, we'll see how similar the TCP code looks once it's fleshed out.
I also extracted the IomgrEventEngine's timer piece into a separate component, usable by both engines.
2 years ago