flowd icon indicating copy to clipboard operation
flowd copied to clipboard

noflo-ui: Adding and removing an edge calls removeedge, then changeedge

Open ERnsTL opened this issue 2 years ago • 0 comments

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

ERnsTL avatar Aug 24 '22 22:08 ERnsTL