← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1293756] [NEW] Compute manager calls DB directly

 

Public bug reported:

During the course of a resize operation if the compute manager's
_poll_unconfirmed_resizes() is used to automatically confirm the resize,
the code path eventually tries to access the DB without going through
Conductor.

The code path is something like this:

    def _poll_unconfirmed_resizes(self, context):
calls:
	self.compute_api.confirm_resize(context, instance,
                                                migration=migration)

confirm_resize contains:
        # reserve quota only for any decrease in resource usage
        deltas = self._downsize_quota_delta(context, instance)
        reservations = self._reserve_quota_delta(context, deltas)

so eventually calls:
    def _reserve_quota_delta(context, deltas, project_id=None):
        if not deltas:
            return
        return QUOTAS.reserve(context, project_id=project_id, **deltas)


quota.reserve calls the db directly:

        # Get the applicable quotas.
        # NOTE(Vek): We're not worried about races at this point.
        #            Yes, the admin may be in the process of reducing
        #            quotas, but that's a pretty rare thing.
        project_quotas = db.quota_get_all_by_project(context, project_id)

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1293756

Title:
  Compute manager calls DB directly

Status in OpenStack Compute (Nova):
  New

Bug description:
  During the course of a resize operation if the compute manager's
  _poll_unconfirmed_resizes() is used to automatically confirm the
  resize, the code path eventually tries to access the DB without going
  through Conductor.

  The code path is something like this:

      def _poll_unconfirmed_resizes(self, context):
  calls:
  	self.compute_api.confirm_resize(context, instance,
                                                  migration=migration)

  confirm_resize contains:
          # reserve quota only for any decrease in resource usage
          deltas = self._downsize_quota_delta(context, instance)
          reservations = self._reserve_quota_delta(context, deltas)

  so eventually calls:
      def _reserve_quota_delta(context, deltas, project_id=None):
          if not deltas:
              return
          return QUOTAS.reserve(context, project_id=project_id, **deltas)

  
  quota.reserve calls the db directly:

          # Get the applicable quotas.
          # NOTE(Vek): We're not worried about races at this point.
          #            Yes, the admin may be in the process of reducing
          #            quotas, but that's a pretty rare thing.
          project_quotas = db.quota_get_all_by_project(context, project_id)

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


Follow ups

References