A service for managing and provisioning Bare Metal servers.
Go to file
Julia Kreger 091edb0631 Retry SQLite DB write failures due to locks
Adds a database retry decorator to capture and retry exceptions
rooted in SQLite locking. These locking errors are rooted in
the fact that essentially, we can only have one distinct writer
at a time. This writer becomes transaction oriented as well.

Unfortunately with our green threads and API surface, we run into
cases where we have background operations (mainly, periodic tasks...)
and API surface transacations which need to operate against the DB
as well. Because we can't say one task or another (realistically
speaking) can have exclusive control and access, then we run into
database locking errors.

So when we encounter a lock error, we retry.

Adds two additional configuration parameters to the database
configuration section, to allow this capability to be further
tuned, as file IO performance is *surely* a contributing factor
to our locking issues as we mostly see them with a loaded CI
system where other issues begin to crop up.

The new parameters are as follows:
* sqlite_retries, a boolean value allowing the retry logic
  to be disabled. This can largely be ignored, but is available
  as it was logical to include.
* sqlite_max_wait_for_retry, a integer value, default 30 seconds
  as to how long to wait for retrying SQLite database operations
  which are failing due to a "database is locked" error.

The retry logic uses the tenacity library, and performs an
expoential backoff. Setting the amount of time to a very large
number is not advisable, as such the default of 30 seconds was
deemed reasonable.

Change-Id: Ifeb92e9f23a94f2d96bb495fe63a71df9865fef3
2023-07-18 13:14:45 +00:00
api-ref Merge "follow-up on DPU change api-ref" 2023-05-25 01:58:35 +00:00
devstack Merge "Disable spanning tree" 2023-07-12 19:55:24 +00:00
doc Stop splitting installation docs per distros 2023-07-14 11:38:10 +02:00
etc Bye-bye iSCSI deploy, you served us well 2021-05-04 14:28:25 +02:00
ironic Retry SQLite DB write failures due to locks 2023-07-18 13:14:45 +00:00
playbooks Run metal3 integration with ironic-image from source 2023-04-06 15:29:42 +00:00
redfish-interop-profiles Follow-up to Redfish Interop Profile 2022-11-30 12:08:56 -05:00
releasenotes Retry SQLite DB write failures due to locks 2023-07-18 13:14:45 +00:00
tools Add hold steps 2023-06-30 14:34:26 -07:00
zuul.d Merge "CI: Use focal dnsmasq" 2023-07-11 09:08:41 +00:00
.gitignore Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:40:53 +00:00
.mailmap Add my new address to .mailmap 2020-04-13 07:29:37 -07:00
.stestr.conf Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
bindep.txt Drop python2 from bindep.txt 2022-06-10 20:42:46 +03:00
CONTRIBUTING.rst Project Contributing updates for Goal 2020-02-20 02:01:21 +00:00
driver-requirements.txt Migrate to pysnmp lextudio ecosystem 2023-05-11 08:52:52 +02:00
LICENSE Added project infrastructure needs. 2013-05-02 14:55:43 -04:00
README.rst Update docs: Ironic uses launchpad now 2023-05-17 15:42:41 -07:00
requirements.txt Get conductor metric data 2023-02-23 11:39:07 -08:00
setup.cfg [iRMC] identify BMC firmware version 2023-01-16 18:38:57 +09:00
setup.py setup.py: Remove 'py_modules' 2023-01-04 12:01:18 +00:00
test-requirements.txt Migrate to pysnmp lextudio ecosystem 2023-05-11 08:52:52 +02:00
tox.ini Merge "Unit tests: Isolate mysql test migrations" 2023-07-11 01:13:06 +00: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