This PR makes a number of improvements related to node status.
Fix node update status propagation bug
We were seeing an issue with node update propagation, where after a node is updated, its downstreams' statuses were often not updated to the right status.
The primary cause of this issue is that we weren't updating the downstreams in the right order. We need to topologically sort the downstreams, such that if node A queries from node B, B always comes before A in the ordering. We were instead sorting by level order, which is the wrong ordering and may lead to children being processed before parents.
A secondary issue is that we were only updating statuses and not columns. If a node's query changes, it may cause changes to downstream nodes' columns, which also needs to be saved in order for downstream nodes to pick up on them.
Display detailed node status
This change modifies the node validation endpoint to include a list of errors if the node's status is invalid.
We update the node info UI to (a) always revalidate the node (this can be changed later), and (b) show detailed status information. If a node is valid, we continue to display just the checkmark, but if a node is invalid, we additionally display a list of errors that explain why the node is invalid. This allows users to understand why a node's status is what it is, so that they can fix issues to correct it.
Summary
This PR makes a number of improvements related to node status.
Fix node update status propagation bug
We were seeing an issue with node update propagation, where after a node is updated, its downstreams' statuses were often not updated to the right status.
The primary cause of this issue is that we weren't updating the downstreams in the right order. We need to topologically sort the downstreams, such that if node A queries from node B, B always comes before A in the ordering. We were instead sorting by level order, which is the wrong ordering and may lead to children being processed before parents.
A secondary issue is that we were only updating statuses and not columns. If a node's query changes, it may cause changes to downstream nodes' columns, which also needs to be saved in order for downstream nodes to pick up on them.
Display detailed node status
This change modifies the node validation endpoint to include a list of errors if the node's status is invalid.
We update the node info UI to (a) always revalidate the node (this can be changed later), and (b) show detailed status information. If a node is valid, we continue to display just the checkmark, but if a node is invalid, we additionally display a list of errors that explain why the node is invalid. This allows users to understand why a node's status is what it is, so that they can fix issues to correct it.
Test Plan
make check
passesmake test
shows 100% unit test coverageDeployment Plan