envoyproxy / envoyproxy/envoy

[Events] Add an file event wakeup method with socketpair

Open
#14,244 1 comment 0 reactions 0 assignees View on GitHub
help wanted tech debt
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 20h
Merged PRs (30d)
437

Description

*Description*:

The goal is to create a premitive in `source/common/event` that wakes up (schedules) an event using a socketpair instead of `scheduleCallbackCurrentIteration`. The reason for that is that `scheduleCallbackCurrentIteration` is using ` event_active(&raw_event_, EV_TIMEOUT, 0);` which takes a lock.

See comment in: https://github.com/envoyproxy/envoy/pull/13954#discussion_r533796896

This mechanism could be applied to:
1. `Win32` DirectoryWatcher
2. Replace the wakeup mechanism in `dispatcher_impl.cc` -> `void DispatcherImpl::post(std::function callback)`

For `Win32` it is good to also have #10871 if we are going to build on top of socketpairs

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.