Go to file
Julia Kreger bb02c49def DB: Only re-query for a lock holder if we cannot lock
Dbapi method _reserve_node_place_lock is a bit of a special
method. It has both a decorator to retry sqlite "database is locked"
issues, and an outer synchronized process fair lock
(from oslo.concurrency.lockutils), which ensures only *one* thread
is working on locks at a time.

Thing is, we can build contention when a stack of heartbeats
come in, because they are forced to execute in serialized fashion.

And whil investigating some metal3 logs, we could see some lock
interactions are basically instant, and when things begin to
get backed up, we start seeing 10+ second gaps where we are
trying to get ahold of the database, and can't lock the node.

And looking at the code for the method, I realized we were *always*
re-querying the node, but never returning it after updating the node.
Apparently, so we can just log *if* there was an issue.

Instead, just consult the result set and then re-query if we must
to determine *who* holds the lock, we now only do so *if* we are
operating without SQLite, because if we are then we can safely
assume the lock came from another thread.

Change-Id: Ie606439670be21cf267eb541ce864711d2097207
2023-09-05 10:47:54 -07:00
2023-07-31 14:35:18 -07:00
2023-08-30 12:45:44 +02:00
2019-04-19 19:40:53 +00:00
2020-04-13 07:29:37 -07:00
2013-05-02 14:55:43 -04:00
2023-08-25 09:38:39 -02:00
2023-01-04 12:01:18 +00:00
2023-08-02 16:57:32 +08:00

Ironic

Team and repository tags

image

Overview

Ironic consists of an API and plug-ins for managing and provisioning physical machines in a security-aware and fault-tolerant manner. It can be used with nova as a hypervisor driver, or standalone service using bifrost. By default, it will use PXE and IPMI to interact with bare metal machines. Ironic also supports vendor-specific plug-ins which may implement additional functionality.

Ironic is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.

Project resources

Project status, bugs, and requests for feature enhancements (RFEs) are tracked in StoryBoard: https://storyboard.openstack.org/#!/project/943

For information on how to contribute to ironic, see https://docs.openstack.org/ironic/latest/contributor

Description
A service for managing and provisioning Bare Metal servers.
Readme 325 MiB
Languages
Python 97.8%
Shell 2%