mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Merge remote-tracking branch 'origin/topic/awelzel/3190-supervisor-eventmgr-shared-pipe-fix'
* origin/topic/awelzel/3190-supervisor-eventmgr-shared-pipe-fix:
event: Reinitialize EventMgr's flare after fork() from stem
(cherry picked from commit 22fb445a7f
)
This commit is contained in:
parent
143f112a5c
commit
4d80668f1f
3 changed files with 17 additions and 0 deletions
|
@ -207,4 +207,12 @@ void EventMgr::InitPostScript()
|
|||
reporter->FatalError("Failed to register event manager FD with iosource_mgr");
|
||||
}
|
||||
|
||||
void EventMgr::InitPostFork()
|
||||
{
|
||||
// Re-initialize the flare, closing and re-opening the underlying
|
||||
// pipe FDs. This is needed so that each Zeek process in a supervisor
|
||||
// setup has its own pipe instead of them all sharing a single pipe.
|
||||
queue_flare = zeek::detail::Flare{};
|
||||
}
|
||||
|
||||
} // namespace zeek
|
||||
|
|
|
@ -118,6 +118,9 @@ public:
|
|||
const char* Tag() override { return "EventManager"; }
|
||||
void InitPostScript();
|
||||
|
||||
// Initialization to be done after a fork() happened.
|
||||
void InitPostFork();
|
||||
|
||||
uint64_t num_events_queued = 0;
|
||||
uint64_t num_events_dispatched = 0;
|
||||
|
||||
|
|
|
@ -554,8 +554,14 @@ SetupResult setup(int argc, char** argv, Options* zopts)
|
|||
auto stem = Supervisor::CreateStem(options.supervisor_mode);
|
||||
|
||||
if ( Supervisor::ThisNode() )
|
||||
{
|
||||
// If we get here, we're a supervised node that just returned
|
||||
// from CreateStem() after being forked from the stem.
|
||||
Supervisor::ThisNode()->Init(&options);
|
||||
|
||||
event_mgr.InitPostFork();
|
||||
}
|
||||
|
||||
script_coverage_mgr.ReadStats();
|
||||
|
||||
auto dns_type = options.dns_mode;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue