Remove DB polling to determine "join" readiness
Bug #1799356 reported by
Renat Akhmerov
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mistral |
Fix Released
|
High
|
Renat Akhmerov |
Bug Description
Now Mistral does DB polling in order to determine "join" task readiness. This approach doesn't work in case if a workflow has lots of joins with many dependencies because it leads to the situation when CPU is mostly occupied by scheduler that runs periodic checking jobs again and again and doesn't let the workflow progress.
Changed in mistral: | |
assignee: | nobody → Renat Akhmerov (rakhmerov) |
importance: | Undecided → High |
status: | New → Confirmed |
milestone: | none → stein-1 |
Changed in mistral: | |
status: | Confirmed → In Progress |
To post a comment you must log in.
Reviewed: https:/ /review. openstack. org/610461 /git.openstack. org/cgit/ openstack/ mistral/ commit/ ?id=1a4c599a4d1 ab9522d47a017ce 1b98eac8b290df
Committed: https:/
Submitter: Zuul
Branch: master
commit 1a4c599a4d1ab95 22d47a017ce1b98 eac8b290df
Author: Renat Akhmerov <email address hidden>
Date: Wed Oct 10 14:37:08 2018 +0700
Improve join by removing periodic jobs
* This patch removes the approach with DB polling needed to
determine if a "join" task is ready to run. Instead of running
a periodic scheduled job, each task completion now runs the
algorithm that finds all potentially affected join tasks
and schedules just one job (instead of a periodic job) to check
their readiness.
This solves a problem of system cascaded overloading in case of
having many very large joins (when a workflow has many joins with
many dependencies each). Previously, in such case Mistral created
too many periodic jobs that just didn't let the workflow progress
well, i.e. most CPU was used by scheduler to run those periodic
jobs that very rarely switched "join" tasks to the RUNNING state.
Change-Id: I5ebc44c7a3f95c 868d653689dc5ce a689c788cd0
Closes-Bug: #1799356