ironic/releasenotes/notes/optimize-driver-task-pattern-322e02b6a2233919.yaml
Julia Kreger 4fc1abf91f Fix driver task pattern to reduce periodic db load
Previously, a pattern of periodic tasks was created where
nodes, and in many cases, all nodes not actively locked nor
those in maintenance state, were pulled in by a periodic task.
These periodic tasks would then create tasks which generated
additional database queries in order to populate the task object.

With the task object populated, the driver would then evaluate
if the driver in question was for the the driver interface in
question and *then* evaluate if work had to be performed.

However, that field containing a pointer to if work needed to be
performed as often already queried from the database on the
very initial query to generate the list of nodes to evaluate.

In essence, we've moved this up in the sequence so we evaluate
that field in question prior to creating the task, potentially
across every conductor, depending on the query, and ultimately
which drivers are enabled.

This saves potentially saves hundreds of thousands of needless
database queries on a medium size deployment per single day,
depending on which drivers and driver interfaces are in use.

Change-Id: I409e87de2808d442d39e4d0ae6e995668230cbba
2021-09-13 10:05:37 -07:00

9 lines
338 B
YAML

---
fixes:
- |
Fixes the pattern of execution for periodic tasks such that the majority
of drivers now evaluate *if* work needs to be performed in advance of
creating a node task. Depending on the individual driver query pattern,
this prevents excess database queries from being triggered with every
task execution.