Repository navigation
Conversation
|
@carloea2 could you take a look at this when you have a chance? Thanks! |
Every external output port of an operator that keeps its result is stored, but results were only ever read from the first port, so a Split's second output or an If's True branch could not be shown. A pagination request can now name the output port to read, with the first port as the default, and the reply carries the port it read and that port's row count. The live result updates keep following the first port, so a client paging another port takes the count from the reply. The result store's count per operator now comes from the first port too; it was built from every stored port, so a terminal Split's second output could replace its first output's count. On the frontend, the result service gives each extra port its own pagination service, which names its port in its requests, keeps no page cache and takes its row count from each reply, and every port's service takes its schema only from replies to its own requests. The result table and its row detail can show any port. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
de65175 to
8846756
Compare
carloea2
left a comment
There was a problem hiding this comment.
110 frontend tests pass locally. Two added port-switching regressions fail at this head.
Switching the table to another output port left the previous port's rows on screen when the new port was empty, with the loading state never ending, and a late reply for the previous port could replace the new port's rows. A port change now starts from an empty table, a reply for an operator or port no longer shown is dropped, and an empty page ends the loading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, both reproduced. Fixed in 13c1294: a port change now starts from an empty table and an empty reply ends the loading, and a reply is dropped if the operator or port it was requested for is no longer shown; the two cases are added as regression tests in |
Automated Reviewer SuggestionsBased on the
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #9054 +/- ##
============================================
- Coverage 92.33% 92.33% -0.01%
+ Complexity 5045 5044 -1
============================================
Files 1261 1261
Lines 54120 54141 +21
Branches 6768 6779 +11
============================================
+ Hits 49974 49993 +19
Misses 2486 2486
- Partials 1660 1662 +2
*This pull request uses carry forward flags. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
What changes were proposed in this PR?
Every external output port of an operator that keeps its result is stored, but results were only ever read from the first port, so a Split's second output or an If's True branch could not be shown.
A pagination request can now name the output port to read, with the first port as the default, and the reply carries the port it read and that port's row count. The live result updates keep following the first port, so a client paging another port takes the count from the reply. The result store's count per operator now comes from the first port too: it was built from every stored port, so a terminal Split's second output could replace its first output's count, and the result panel paged by the wrong number.
On the frontend, the result service gives each extra port its own pagination service, which names its port in its requests, keeps no page cache and takes its row count from each reply. Every port's service takes its schema only from replies to its own requests, since all replies share one stream. The result table and its row detail can show any port; nothing picks a port other than the first yet, which comes with the pinned windows in #9052.
Any related issues, documentation, discussions?
Closes #9050. Closes #9053. Part of #9052.
How was this PR tested?
New cases in
ExecutionResultServiceSpeccheck that a request for each of an operator's two ports returns that port's rows and count, and that an operator with two stored ports is reported by its first port's count; the latter fails on main.PaginatedResultEventSpecchecks the reply's new fields and that it serializes to exactly what the frontend declares. New cases in the result service's and the result table's specs cover the per-port services and requests. The backend specs above and the affected frontend specs pass.Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 5.5)
🤖 Generated with Claude Code