← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1330364] Re: Duplicate Qpid connection is created during Connection initialization

 

Fixed in oslo.messaging by I7618cf3506d857579dc37b338690d05179ba272d

oslo-incubator patch https://review.openstack.org/#/c/100177/

Note - this isn't nearly as bad as the report makes it sound. We simple
creating duplicate connection objects, but don't actually set up and
tear down extra sockets with the broker

** Also affects: oslo
   Importance: Undecided
       Status: New

** Also affects: oslo.messaging
   Importance: Undecided
       Status: New

** Changed in: oslo.messaging
       Status: New => Fix Released

** Changed in: oslo.messaging
   Importance: Undecided => Low

** Changed in: oslo.messaging
     Assignee: (unassigned) => ChangBo Guo(gcb) (glongwave)

** Changed in: oslo
   Importance: Undecided => Low

** Changed in: oslo
       Status: New => Triaged

** Changed in: oslo
       Status: Triaged => In Progress

** Changed in: oslo
     Assignee: (unassigned) => zhu zhu  (zhuzhubj)

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1330364

Title:
  Duplicate Qpid connection is created during Connection initialization

Status in OpenStack Neutron (virtual network service):
  New
Status in Oslo - a Library of Common OpenStack Code:
  In Progress
Status in Messaging API for OpenStack:
  Fix Released

Bug description:
  neutron was still adopting the oslo incubator code for rpc modules.
  During the qpid connection setup from amqp get_connection_pool.

  Duplicate connections will be created during __init__(class Connection
  in impl_qpid.py). And after the first connection object  is created,
  this connection will never be used, and within the next step method
  reconnect, it will create a new qpid connection object and open it.

  Need to fix this issue for duplicate creation of qpid connection.

  Impl_qpid.py
  class Connection(object):
      """Connection object."""

      pool = None

      def __init__(self, conf, server_params=None):
          if not qpid_messaging:
              raise ImportError("Failed to import qpid.messaging")

          self.session = None
          self.consumers = {}
          self.consumer_thread = None
          self.proxy_callbacks = []
          self.conf = conf

          if server_params and 'hostname' in server_params:
              # NOTE(russellb) This enables support for cast_to_server.
              server_params['qpid_hosts'] = [
                  '%s:%d' % (server_params['hostname'],
                             server_params.get('port', 5672))
              ]

          params = {
              'qpid_hosts': self.conf.qpid_hosts,
              'username': self.conf.qpid_username,
              'password': self.conf.qpid_password,
          }
          params.update(server_params or {})

          self.brokers = params['qpid_hosts']
          self.username = params['username']
          self.password = params['password']

          brokers_count = len(self.brokers)
          self.next_broker_indices = itertools.cycle(range(brokers_count))

          self.connection_create(self.brokers[0])
          self.reconnect()

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1330364/+subscriptions


References