Details
-
Type:
Story
-
Status: Done
-
Resolution: Done
-
Fix Version/s: None
-
Component/s: ctrl_mpexec, pipe_base
-
Labels:
-
Story Points:0.5
-
Epic Link:
-
Sprint:BG3_S19_01
-
Team:Data Access and Database
Description
Michelle discovered an interesting issue while trying to run pipetask on a single Qunatum (extracted from a full graph). Graph traverse() method tries to determine prerequisites for a quantum execution by looking at quanta inputs and determining which other quanta produced those inputs. It works OK on a full graph but when single quantum is removed from a graph its prerequisites are not in the same graph anymore and traverse() currently does not like this (it crashes).
I'd like to solve this without any extra command line options if possible (there already have too many of those).
At the core of the problem is that Quantum has inputs which do not come from butler (dataset_id is None) and the Quantum that produces those inputs is not in a graph. I think that right long-term approach for the "split graph" is to have different kind of executor which works on single Quantum and does not need all the graph-related complications. As we don't have that executor now we need some workaround for existing executor to not break in this case.
One possible workaround is to check the number of Quanta in a graph, if there is only one Quantum then it can be assumed that this is a (possibly) split graph and ignore any missing inputs (and not build prerequisites for them). Single-quantum graph can of course be built normally without splitting, but that case will not have non-existing inputs so it should be fine.
Another option is of course to add one more command line option and ignore non-existing inputs iff this option is present.