You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Edges with the same label from different source nodes silently lose data #596
If two edges in a workflow have the same file edge label but come from different source nodes, mkconcore only wires up the first source. The second source node gets no out mount for that edge at all, so whatever it writes is lost, and nothing warns about it. concore validate also says the workflow is valid.
Small example, three nodes A, B, C with edges A -> C and B -> C, both labelled shared. Building with --type docker gives this run script:
docker run --name=A -v shared:/out1 ... docker-a&
docker run --name=B docker-b&
docker run --name=C ... -v shared:/in1:ro -v shared:/in2:ro docker-c&
B has no -v shared:/out1, and C mounts the same volume twice as in1 and in2. Posix has the same problem, the build script only creates the out1 link for A.
The cause is in the loop that fills edges_dict in mkconcore.py. It stores [source, [targets]] per label and only sets the source the first time it sees the label, so the source of any later edge with that label is dropped.
None of the graphml files in the repo do this, and since an edge label is one volume with one writer it doesn't look like something that should be supported. I think it should be an error in both mkconcore and concore validate.
Activity