[BUG] Node connections keep getting removed, latest update (Docker)

Since the latest update, when saving information in nodes, going back to the main screen removes all connections between nodes

Then if you add another node in, you get a connection from the start node and you cant delete it.

you have to save, refresh and start the links again, or refresh and loose the work done so far

This has happened to me as well. Let me check with my coworker, and we will get back to you.

thanks for sharing. I was able to reproduce and created a bug fix

3 Likes

seemed to also manage to find a bug to rip the node apart, lol

Can you share steps to reproduce? Thanks

I ran into the same issue yesterday, wasn’t sure what I did to break it though I just added a new node to my workflow and it was wonky.

Yes, unfortunately some of these bugs are hard to reproduce. Internally I asked everyone to screen record when testing and during our bug bashes.
I only figured out the rename issue above because @MutedJam luckily had a recording of it.
I also added extensive error logging to make it easy to debug any issue. So next time you come across this, please check the console. :pray:

1 Like

What is annoying is I was recording my screen when it happened but I didn’t keep the recording :man_facepalming:

I will have a poke around again and see if it happens again.

i wasnt recording, was just making stuff :frowning: but if I have logs somewhere happy to look

also noticed the nodes never match up with the grid dots behind, don’t know if that’s just me or an issue?

ok i renamed a node, the connections disappeared then I tried to move a node and it ripped apart.

image

Oh no worries then. This is related to the renaming bug. In fact, always refresh after the bug. If you want to avoid this bug completely, drag your connector to the node itself (not the endpoint).

Unnecessarily detailed explanation ahead:
Every time you rename a node, we delete all nodes and connections and recreate the workflow. Why do we need to do this? Because names are the ids of nodes. We distinguish nodes by name. I believe that’s why we rebuild the workflow, so that all references to the old node are updated (think of expressions). That’s why renaming a node can be excruciatingly slow in a big workflow.
When deleting everything, we simply suspend drawing and update the canvas until all the data updates are made. Then we unsuspend drawing so that the same workflow is drawn again.
Now what happens when a bug occurs in the middle of renaming? Well drawing is never unsuspended. That’s why you could not delete the connection from the start node. That’s why the positions of those inputs/outputs are not updated.
So why does dragging the connection to a node (not endpoint) work? Because it does not create (what I have termed) phantom connections. Long story short, when you pull a connection to an endpoint, two pieces of code run creating a real connection and a phantom connection. I thought I had enough safety guards to avoid this but turns out not. When you pull it to the node, only one piece of code runs.
So what’s the fix? I disabled one of those pieces of code when the other is applicable.
I am very disappointed we did not catch this earlier… You can actually easily reproduce this simply by dragging a connection to an endpoint and switching to another workflow (when switching, we also delete everything). I think the reason might be that the new behavior (allowing you to connect to any part of the node) is so much better and friendlier that we just got used to doing that.
Next part is not something we have discussed internally, just an idea I have… I could be wrong that this would work:
As for node names, how can we improve the performance and impact of renaming a node? I think we might have to split node name from node title. That way we can be backwards compatible by keeping names as primary ids but still allow nodes to be renamed easily without having to rebuild the entire workflow. In an expression or function, you would still use node name (Set1, Slack2…) but for display purposes we will show the node title, maybe both in some places.

1 Like

wouldnt just giving the nodes all a unique number/identifier work and then a GUI title?

That’s the basically the idea. I think it should work but I could be missing some scenario. We have to be backwards compatible, allow users to copy a workflow from any instance to another. So we would continue to use current naming approach, but add titles for the display purposes and keep names as id and reference.

1 Like

Fix got released with [email protected]