Omer 941ccebf6c Fix RPC server not starting in forked worker processes
designate-central, designate-worker, and designate-producer called
server.init_host() in the parent process before service.serve()
forked their cotyledon worker processes. init_host() guards itself
with an _rpc_initialized flag to stay idempotent, but that flag
survives the fork while the RPC listener thread it started does
not. Every forked worker therefore inherited "already initialized"
state and skipped starting its own listener, leaving only the
parent process actually serving RPC requests regardless of the
configured `workers` count.

This also broke shutdown: on SIGTERM, cotyledon calls stop() on the
worker processes, and rpc_server.stop() blocks waiting for a
listener thread to notice the shutdown flag -- a thread that was
never started in that process. Workers hung for the full 60s
cotyledon graceful-shutdown timeout before being force-killed.

Let each worker's own start() call init_host() lazily instead, as
it already did before the eventlet-to-threading migration.

Closes-Bug: #2160304
Generated-By: Claude Code 5 Sonnet
Change-Id: I9d1e98976b0a10e80f3a7f4eb4cd79c41f558a80
Signed-off-by: Omer <oschwart@redhat.com>
2026-07-10 13:19:50 +02:00
2021-11-05 18:10:48 +00:00
2024-01-17 12:37:51 +09:00
2024-11-09 17:38:52 +09:00
2019-04-19 19:42:14 +00:00
2018-06-03 11:32:57 -04:00
2023-07-28 20:00:07 +00:00
2013-06-18 16:13:03 -04:00
2025-12-11 20:32:15 +00:00
2020-04-05 08:11:51 +02:00

OpenStack Designate

image

Designate is an OpenStack project, providing DNSaaS.

IRC: #openstack-dns @ oftc

Installation: https://docs.openstack.org/designate/latest/

API

To learn how to use Designate's API, consult the documentation available online at:

For more information on OpenStack APIs, SDKs and CLIs in general, refer to:

Development

Designate follows the OpenStack Gerrit Workflow

Setup

Setup a working environment:

git clone https://opendev.org/openstack/designate
cd designate
virtualenv .venv
. .venv/bin/activate
pip install -r requirements.txt -r test-requirements.txt
pip install -e .

Building Docs

To build the documentation from the restructured text source, do the following:

tox -e docs

Now point your browser at doc/build/html/index.html (the official documentation is published to docs.openstack.org by the maintainers.

Testing

Execute all unit tests

tox -e py3

Execute only backend tests

tox -e py3 -- unit.backend

Execute only a single test

tox -e py3 -- unit.backend.test_pdns4.PDNS4BackendTestCase.test_create_zone_success

Contributing

Install the git-review package to make life easier

pip install git-review

Branch, work, & submit:

# cut a new branch, tracking master
git checkout --track -b bug/id origin/master
# work work work
git add stuff
git commit
# rebase/squash to a single commit before submitting
git rebase -i
# submit
git-review

Other Information

S
Description
OpenStack DNS As A Service (Designate)
Readme 61 MiB
Languages
Python 93.4%
Shell 3.9%
PHP 2.5%
HTML 0.1%