diff --git a/specs/liberty/zmq-context-per-driver-instance.rst b/specs/liberty/zmq-context-per-driver-instance.rst new file mode 100644 index 0000000..c31f81c --- /dev/null +++ b/specs/liberty/zmq-context-per-driver-instance.rst @@ -0,0 +1,141 @@ +========================================================= +ZeroMQ Context should be created once per driver instance +========================================================= + +https://blueprints.launchpad.net/oslo.messaging/+spec/zmq-context-per-driver-instance + +ZeroMQ context object has singleton nature, so producing it +more than once per driver is inefficient consuming of resources. + +Now it is created per socket. + +Proposed change +=============== + +oslo-messaging +-------------- + +Move creation of zmq context from ZmqSocket constructor +:meth:`ZmqSocket.__init__` + +:: + + # oslo_messaging/_drivers/impl_zmq.py + + class ZmqSocket(object): + + def __init__(self, addr, zmq_type, bind=True, subscribe=None): + self.ctxt = zmq.Context(CONF.rpc_zmq_contexts) + self.sock = self.ctxt.socket(zmq_type) + + +to ZmqDriver constructor :meth:`ZmqDriver.__init__` + +:: + + # oslo_messaging/_drivers/impl_zmq.py + + class ZmqDriver(base.BaseDriver): + + def __init__(self, conf, url, default_exchange=None, + allowed_remote_exmods=None): + self.ctxt = zmq.Context(CONF.rpc_zmq_contexts) + +Update :meth:`ZmqSocket.__init__` to pass zmq context as an argument + +:: + + # oslo_messaging/_drivers/impl_zmq.py + + class ZmqSocket(object): + ... + def __init__(self, zmq_ctx, addr, zmq_type, bind=True, subscribe=None): + self.ctxt = zmq_ctx + self.sock = self.ctxt.socket(zmq_type) + + +Alternatives +------------ + +None + +Impact on Existing APIs +----------------------- + +None + +Security impact +--------------- + +None + +Performance Impact +------------------ + +None + +Configuration Impact +-------------------- + +None + +Developer Impact +---------------- + +None + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: + Oleksii Zamiatin (ozamiatin@mirantis.com) + +Other contributors: + None + +Milestones +---------- + +next-kilo + +Work Items +---------- + +1. Perform the code movements +2. Update all places in impl_zmq where socket used + + +Incubation +========== + +N/A + +Adoption +-------- + +N/A + +Library +------- + +oslo.messaging + +Documentation Impact +==================== + +N/A + +Dependencies +============ + +None + +References +========== + +.. note:: + + Check neutron https://bugs.launchpad.net/neutron/+bug/1364814