← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1458718] Re: DB2 error occurs when neutron server enables multiple api workers

 

** Also affects: neutron/kilo
   Importance: Undecided
       Status: New

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

Title:
  DB2 error occurs when neutron server enables multiple api workers

Status in neutron:
  Fix Released
Status in neutron kilo series:
  New

Bug description:
  When neutron server enables multiple api workers, it will use os.fork
  to start multiple neutron server process.  During this period, some
  DB2 error will occur as below, which shows we are trying to close a
  closed connection.  It seems like that pooled connection is shared by
  processes.

  2015-04-29 22:27:39.330 567 ERROR sqlalchemy.pool.QueuePool [-] Exception closing connection <ibm_db_dbi.Connection object at 0x469a190>
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool Traceback (most recent call last):
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool   File "/usr/lib64/python2.7/site-packages/sqlalchemy/pool.py", line 250, in _close_connection
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool     self._dialect.do_close(connection)
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool   File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/default.py", line 412, in do_close
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool     dbapi_connection.close()
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool   File "/usr/lib64/python2.7/site-packages/ibm_db_dbi.py", line 688, in close
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool     raise _get_exception(inst)
  2015-04-29 22:27:39.330 567 TRACE sqlalchemy.pool.QueuePool OperationalError: ibm_db_dbi::OperationalError: [IBM][CLI Driver] CLI0106E  Connection is closed. SQLSTATE=08003 SQLCODE=-99999

  Currently neutron is using dispose() in child process to release the
  connnection and create new one. Actually we should dispose the pool
  before os.fork in father process.

  Reference to sqlalchemy
  doc(http://docs.sqlalchemy.org/en/latest/core/connections.html#basic-
  usage)

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


References