-
Notifications
You must be signed in to change notification settings - Fork 10.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IomgrEventEngine #29616
IomgrEventEngine #29616
Conversation
I haven't done a super close review, but the basics look like a good start. Going forward, we should fork the grpc iomgr timer code into iomgr_eventengine. Playbook:
Now the majority of timers do not allocate, and there's no global choke point to synchronize around (if the free list becomes a contention point we can even shard that) |
That's the plan. This is very much a temporary thing that can unblock other EventEngine progress.
That's an excellent trick. I think I could do something like that using the current |
It previously assumed single-threaded operations. Logging on EventEngine init can ask for the time while this test is changing it.
It was possible for an immediate callback to return before its handle was added to the known handles set.
I believe this is ready for review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a reasonable first step, and we know it's not a final design.
We know the follow-up actions to take, so let's keep taking those monotonic steps.
The 5 failed tests are all unrelated known issues: XDS, timeouts, or infra flakes. |
This reverts commit 7f09b98.
* Revert "Revert "IomgrEventEngine (grpc#29616)" (grpc#29692)" This reverts commit 246d13e. * temporarily disable EE usage to coordinate landing * spelling
@ctiller
Timer-only implementation. Mutates, tracks, and shuttles EventEngine API calls to iomgr.
Performance caveats:
Cancel
to return true/false, timers are registered in a hash set, which is guarded by a lock. init/cancel/run all require acquiring the lock.