-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Description
- Minion version: v10.29
- Perl version: v5.38.2
- Operating system: macOS/Linux
After the performance update in v10.27, Minion no longer respects its dependencies as stated in the documentation.
This means that a tree of dependant tasks might be severed if tasks in the "middle" finishes before the top and bottom of the tree.
I guess this is on purpose, but it totally breaks the excellent "flow" use case that Minion used to support.
Would it be possible to add a flag that toggles between the new and the old behaviour?
Expected behavior
This is what was done previously in Pg.pm:
# Old jobs with no unresolved dependencies and expired jobs
$db->query(
"DELETE FROM minion_jobs WHERE id IN (
SELECT j.id FROM minion_jobs AS j LEFT JOIN minion_jobs AS children
ON children.state != 'finished' AND ARRAY_LENGTH(children.parents, 1) > 0 AND j.id = ANY(children.parents)
WHERE j.state = 'finished' AND j.finished <= NOW() - INTERVAL '1 second' * ? AND children.id IS NULL
UNION ALL
SELECT id FROM minion_jobs WHERE state = 'inactive' AND expires <= NOW()
)", $minion->remove_after
);Actual behavior
This is the current code in Pg.pm, that deletes all finished jobs
# Old jobs
$db->query("DELETE FROM minion_jobs WHERE state = 'finished' AND finished <= NOW() - INTERVAL '1 second' * ?",
$minion->remove_after);
# Expired jobs
$db->query("DELETE FROM minion_jobs WHERE state = 'inactive' AND expires <= NOW()");Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels