← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1954662] [NEW] Quota driver "DbQuotaNoLockDriver" can lock when removing the expired reservations

 

Public bug reported:

Just in case, this is related to [1].

In [1] we found that we were deleting the reservations always for a
specific resource and project, regardless of the date. The solution was
to introduce a timeout (with reasonable value of 20 seconds) to filter
the existing reservations. Any recent reservation, created by an ongoing
request transaction, is keep in the DB.

This bug shows another problem related to situations with very high
concurrency. The deletion of the expired reservations cannot be executed
at the same time by two or more concurrent transactions. In case this
happens, only one transaction will succeed and the others will fail,
triggering the DB retry and ending in a DB lock state.

[1]https://bugs.launchpad.net/neutron/+bug/1940311
[2]https://github.com/openstack/neutron/blob/e99d9a9d0697a21ba7ec84465f415f60041f3767/neutron/db/quota/driver_nolock.py#L53-L58

** Affects: neutron
     Importance: High
     Assignee: Rodolfo Alonso (rodolfo-alonso-hernandez)
         Status: New

** Changed in: neutron
     Assignee: (unassigned) => Rodolfo Alonso (rodolfo-alonso-hernandez)

** Changed in: neutron
   Importance: Undecided => High

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

Title:
  Quota driver "DbQuotaNoLockDriver" can lock when removing the expired
  reservations

Status in neutron:
  New

Bug description:
  Just in case, this is related to [1].

  In [1] we found that we were deleting the reservations always for a
  specific resource and project, regardless of the date. The solution
  was to introduce a timeout (with reasonable value of 20 seconds) to
  filter the existing reservations. Any recent reservation, created by
  an ongoing request transaction, is keep in the DB.

  This bug shows another problem related to situations with very high
  concurrency. The deletion of the expired reservations cannot be
  executed at the same time by two or more concurrent transactions. In
  case this happens, only one transaction will succeed and the others
  will fail, triggering the DB retry and ending in a DB lock state.

  [1]https://bugs.launchpad.net/neutron/+bug/1940311
  [2]https://github.com/openstack/neutron/blob/e99d9a9d0697a21ba7ec84465f415f60041f3767/neutron/db/quota/driver_nolock.py#L53-L58

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



Follow ups