flowd
flowd copied to clipboard
noflo-ui: Adding and removing an edge calls removeedge, then changeedge
To reproduce:
- Put 2 nodes into the graph, create an edge between the two.
- mark that edge, delete it.
- Problem: noflo-ui sends removeedge, but then a changeedge on the deleted edge which does not exist any more.
- An error is returned.
INFO flowd_rs > response: sending network:edges response
INFO flowd_rs > --- end of message handling iteration
INFO flowd_rs > waiting for next message
INFO flowd_rs > got a text|binary message
INFO flowd_rs > got graph:removeedge message
INFO flowd_rs > remove_edge: GraphNodeSpec { node: "Repeat_7x9cc", port: "OUT", index: None } == GraphNodeSpec { node: "Repeat_7x9cc", port: "OUT", index: None } && GraphNodeSpec { node: "Drop_dn79b", port: "IN", index: None } == GraphNodeSpec { node: "Drop_dn79b", port: "IN", index: None } ?
INFO flowd_rs > yes
INFO flowd_rs > edge count now: 0
INFO flowd_rs > response: sending graph:removeedge response
INFO flowd_rs > --- end of message handling iteration
INFO flowd_rs > waiting for next message
INFO flowd_rs > got a text|binary message
INFO flowd_rs > got graph:changeedge message
ERROR flowd_rs > graph.change_edge() failed: edge with that src+tgt not found
INFO flowd_rs > response: sending graph:error response
INFO flowd_rs > --- end of message handling iteration
INFO flowd_rs > waiting for next message
- Seems to be some data race, because most of the time the changeede arrives first, but not always.
- Anyway, why call changeedge when it gets removed anyway? removeedge includes/implies changeedge
- the changeedge just contains metatdata {route: ""} - seems unneccessary