generalized data lineage of plugin instances #483
jennydaman
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This is an idea of how ChRIS can be overhauled to both simplify its functionality and add new features.
Need
This idea addresses all the shortcomings of CUBE described in #481, as well as adding features, improving performance, understandability, and "elegance". These qualities are important to users.
Definitions
Generalized Multiple Inheritance
commandname [--parameters ...] inputdir/ outputdir/
Implementation Pseudocode
Python pseudocode showing how plugin instance scheduling logic can be achieved using the observer pattern.
Additionally, on start (and restart) of CUBE: search for orphans, log them, and start them. Where an "orphan" is a plugin instance whose previous are all 'finishedSuccessfully' but its own status is 'waiting'. (This would only happen in the event of database corruption, bug, being killed, improper shutdown, ...)
Comparison with Current System
Improvements
Features
Performance
Currently, the scheduling of plugin instances is implemented using busy waiting, which is slow and expensive.
ChRIS_ultron_backEnd/chris_backend/plugininstances/tasks.py
Lines 72 to 84 in 5d3c2e2
In this proposal, a more efficient implementation based on the observer pattern is described.
Understandability and Elegance
This proposal would resolve these points of confusion:
previous_id
and alsoplugininstances
Beta Was this translation helpful? Give feedback.
All reactions