Neutron ml2/ovn does not exit when killed with SIGTERM
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Medium
|
Terry Wilson |
Bug Description
When Neutron is killed with SIGTERM (like via systemctl), when using ML2/OVN neutron workers do not exit and instead are eventually killed with SIGKILL when the graceful timeout is reached (often around 1 minute).
This is happening due to the signal handlers for SIGTERM. There are multiple issues.
1) oslo_service, ml2/ovn mech_driver, and ml2/ovo_rpc.py all call signal.
2) SIGTERM is handled in the main thread, and running blocking code there causes AssertionErrors in eventlet
3) The ml2/ovn cleanup code doesn't cause the process to end, so it interrupts the killing of the process
oslo_service has a singleton SignalHandler class that solves all of these issues and we should use that instead of calling signal.signal() ourselves.
Changed in neutron: | |
importance: | Undecided → Medium |
assignee: | nobody → Terry Wilson (otherwiseguy) |
Fix proposed to branch: master /review. opendev. org/c/openstack /neutron/ +/911625
Review: https:/