You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@texera.apache.org by "kz930 (via GitHub)" <gi...@apache.org> on 2026/10/20 22:01:52 UTC
[PR] feat(backend): read the result of any output port of an operator [texera]
kz930 opened a new pull request, #9054:
URL: https://github.com/apache/texera/pull/9054
### What changes were proposed in this PR?
Every external output port of an operator that keeps its result is stored, but result pages were always 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, so current requests are unchanged. The reply carries the port it read and that port's total row count, since the live result updates follow only the first port and a client paging another port needs the count from the reply. The frontend's reply type declares the two new fields; nothing in the frontend reads them yet.
### Any related issues, documentation, discussions?
Closes #9053. Part of #9052.
### How was this PR tested?
A new case in `ExecutionResultServiceSpec` stores different rows on an operator's two ports and checks that a request for each port returns that port's rows and row count, and that a request without a port reads the first. `PaginatedResultEventSpec` checks that the reply echoes the port and carries the count, and that it serializes to exactly the fields the frontend declares. The other websocket and result specs pass, and so do the frontend specs whose hand-built replies gained the two fields.
### Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 5.5)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: read the result of any output port of an operator [texera]
Posted by "kz930 (via GitHub)" <gi...@apache.org>.
kz930 commented on code in PR #9054:
URL: https://github.com/apache/texera/pull/9054#discussion_r4331494745
##########
frontend/src/app/workspace/component/result-panel/result-table-frame/result-table-frame.component.ts:
##########
@@ -135,9 +141,9 @@ export class ResultTableFrameComponent implements OnInit, OnChanges {
) {}
ngOnChanges(changes: SimpleChanges): void {
- this.operatorId = changes.operatorId?.currentValue;
+ if (changes.operatorId) this.operatorId = changes.operatorId.currentValue;
if (this.operatorId) {
- const paginatedResultService = this.workflowResultService.getPaginatedResultService(this.operatorId);
+ const paginatedResultService = this.paginatedResultService();
if (paginatedResultService) {
this.isFrontPagination = false;
Review Comment:
Fixed in 13c129458: the table clears on a port change, and an empty reply ends the loading. Covered by "clears the previous port's rows when the port shown is empty".
##########
frontend/src/app/workspace/component/result-panel/result-table-frame/result-table-frame.component.ts:
##########
@@ -395,7 +410,7 @@ export class ResultTableFrameComponent implements OnInit, OnChanges {
if (!this.operatorId) {
return;
}
- const paginatedResultService = this.workflowResultService.getPaginatedResultService(this.operatorId);
+ const paginatedResultService = this.paginatedResultService();
Review Comment:
Fixed in 13c129458: the reply is dropped unless its operator and port are still the ones shown. Covered by "ignores a reply from a port that is no longer shown".
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: read the result of any output port of an operator [texera]
Posted by "carloea2 (via GitHub)" <gi...@apache.org>.
carloea2 commented on code in PR #9054:
URL: https://github.com/apache/texera/pull/9054#discussion_r4331363630
##########
frontend/src/app/workspace/component/result-panel/result-table-frame/result-table-frame.component.ts:
##########
@@ -135,9 +141,9 @@ export class ResultTableFrameComponent implements OnInit, OnChanges {
) {}
ngOnChanges(changes: SimpleChanges): void {
- this.operatorId = changes.operatorId?.currentValue;
+ if (changes.operatorId) this.operatorId = changes.operatorId.currentValue;
if (this.operatorId) {
- const paginatedResultService = this.workflowResultService.getPaginatedResultService(this.operatorId);
+ const paginatedResultService = this.paginatedResultService();
if (paginatedResultService) {
this.isFrontPagination = false;
Review Comment:
[P2] Clear the previous table when the selected port is empty. I reproduced switching from a populated port 0 to an empty port 1: `setupResultTable` returns on the empty page, leaving port 0 rows visible and loading stuck on. The port-change path needs to clear the old table and finish loading for an empty reply. Please add that transition to the regression tests.
##########
frontend/src/app/workspace/component/result-panel/result-table-frame/result-table-frame.component.ts:
##########
@@ -395,7 +410,7 @@ export class ResultTableFrameComponent implements OnInit, OnChanges {
if (!this.operatorId) {
return;
}
- const paginatedResultService = this.workflowResultService.getPaginatedResultService(this.operatorId);
+ const paginatedResultService = this.paginatedResultService();
Review Comment:
[P2] Ignore replies from the output port no longer shown. I reproduced a delayed page 1 reply from port 0 arriving after port 1 has loaded: it overwrites port 1 with port 0 rows because the callback checks only `pageIndex`. Cancel the previous request on a port change, or check the operator and port identity before applying the reply. A delayed-response regression catches this.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat(backend): read the result of any output port of an operator [texera]
Posted by "kz930 (via GitHub)" <gi...@apache.org>.
kz930 commented on PR #9054:
URL: https://github.com/apache/texera/pull/9054#issuecomment-6303484388
@carloea2 could you take a look at this when you have a chance? Thanks!
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: read the result of any output port of an operator [texera]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #9054:
URL: https://github.com/apache/texera/pull/9054#issuecomment-6304479482
<!-- texera-reviewer-suggestion -->
### Automated Reviewer Suggestions
Based on the `git blame` history of the changed files, we recommend the following reviewers:
- **Contributors with relevant context:** `@aglinxinyuan`, `@yangzhang75`, `@Ma77Ball`
You can notify them by mentioning `@aglinxinyuan`, `@yangzhang75`, `@Ma77Ball` in a comment.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: read the result of any output port of an operator [texera]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #9054:
URL: https://github.com/apache/texera/pull/9054#issuecomment-6305838628
## [Codecov](https://app.codecov.io/gh/apache/texera/pull/9054?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:x: Patch coverage is `97.43590%` with `1 line` in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 92.33%. Comparing base ([`22b82a2`](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`13c1294`](https://app.codecov.io/gh/apache/texera/commit/13c1294588a30fbf216ed0db7ef4545aefb1904c?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
| [Files with missing lines](https://app.codecov.io/gh/apache/texera/pull/9054?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines |
|---|---|---|
| [...result-table-frame/result-table-frame.component.ts](https://app.codecov.io/gh/apache/texera/pull/9054?src=pr&el=tree&filepath=frontend%2Fsrc%2Fapp%2Fworkspace%2Fcomponent%2Fresult-panel%2Fresult-table-frame%2Fresult-table-frame.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-ZnJvbnRlbmQvc3JjL2FwcC93b3Jrc3BhY2UvY29tcG9uZW50L3Jlc3VsdC1wYW5lbC9yZXN1bHQtdGFibGUtZnJhbWUvcmVzdWx0LXRhYmxlLWZyYW1lLmNvbXBvbmVudC50cw==) | 95.00% | [0 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/texera/pull/9054?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
<details><summary>Additional details and impacted files</summary>
```diff
@@ 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
```
| [Flag](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | | *Carryforward flag |
|---|---|---|---|
| [access-control-service](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `77.38% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [agent-service](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `99.16% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [amber](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `87.31% <ø> (-0.01%)` | :arrow_down: | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [computing-unit-managing-service](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `60.48% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [config-service](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `87.37% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [file-service](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `82.00% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [frontend](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `96.55% <97.43%> (-0.01%)` | :arrow_down: | |
| [notebook-migration-service](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `83.73% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [pyamber](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `98.57% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [workflow-compiling-service](https://app.codecov.io/gh/apache/texera/pull/9054/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `72.43% <ø> (ø)` | | Carriedforward from [22b82a2](https://app.codecov.io/gh/apache/texera/commit/22b82a2958f8328be2f05044092e2b30e38c56cb?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
*This pull request uses carry forward flags. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) to find out more.
</details>
[:umbrella: View full report in Codecov by Harness](https://app.codecov.io/gh/apache/texera/pull/9054?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
<details><summary> :rocket: New features to boost your workflow: </summary>
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: read the result of any output port of an operator [texera]
Posted by "kz930 (via GitHub)" <gi...@apache.org>.
kz930 commented on PR #9054:
URL: https://github.com/apache/texera/pull/9054#issuecomment-6304282738
Thanks, both reproduced. Fixed in 13c129458: 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 `result-table-frame.component.spec.ts`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: read the result of any output port of an operator [texera]
Posted by "aglinxinyuan (via GitHub)" <gi...@apache.org>.
aglinxinyuan merged PR #9054:
URL: https://github.com/apache/texera/pull/9054
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: read the result of any output port of an operator [texera]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #9054:
URL: https://github.com/apache/texera/pull/9054#issuecomment-6427889184
<!-- texera-benchmarks-comment -->
## ✅ No material benchmark regressions detected
🟢 4 better · 🔴 0 worse · ⚪ 11 noise (<±5%) · 0 without baseline
> Compared against main `8fbd4f2` benchmarked on **this same runner**, so the delta is largely free of cross-runner hardware noise. The "7d avg" column still reflects the gh-pages dashboard. Treat <±5% as noise unless repeated.
[Dashboard](https://apache.github.io/texera/dev/bench/) · [Run](https://github.com/apache/texera/actions/runs/40404550369)
| | config | throughput | MB/s | latency | max Δ latest / 7d |
|---|---|---:|---:|---:|---:|
| 🟢 | bs=10 sw=10 sl=64 | 498 | 0.304 | 19,487/24,443/24,443 us | 🟢 -61.0% / 🔴 +99.9% |
| ⚪ | bs=100 sw=10 sl=64 | 1,228 | 0.75 | 80,866/99,776/99,776 us | ⚪ within ±5% / 🔴 +14.5% |
| ⚪ | bs=1000 sw=10 sl=64 | 1,402 | 0.856 | 699,903/814,900/814,900 us | ⚪ within ±5% / 🟢 -10.3% |
<details><summary>Baseline details</summary>
Latest main `8fbd4f2` from same runner
| config | metric | PR | latest main | 7d avg | Δ latest | Δ 7d |
|---|---|---:|---:|---:|---:|---:|
| bs=10 sw=10 sl=64 | throughput | 498 tuples/sec | 394 tuples/sec | 1,019 tuples/sec | +26.4% | -51.1% |
| bs=10 sw=10 sl=64 | MB/s | 0.304 MB/s | 0.241 MB/s | 0.622 MB/s | +26.1% | -51.1% |
| bs=10 sw=10 sl=64 | p50 | 19,487 us | 19,152 us | 10,144 us | +1.7% | +92.1% |
| bs=10 sw=10 sl=64 | p95 | 24,443 us | 62,750 us | 12,225 us | -61.0% | +99.9% |
| bs=10 sw=10 sl=64 | p99 | 24,443 us | 62,750 us | 15,527 us | -61.0% | +57.4% |
| bs=100 sw=10 sl=64 | throughput | 1,228 tuples/sec | 1,196 tuples/sec | 1,371 tuples/sec | +2.7% | -10.4% |
| bs=100 sw=10 sl=64 | MB/s | 0.75 MB/s | 0.73 MB/s | 0.837 MB/s | +2.7% | -10.4% |
| bs=100 sw=10 sl=64 | p50 | 80,866 us | 80,954 us | 79,910 us | -0.1% | +1.2% |
| bs=100 sw=10 sl=64 | p95 | 99,776 us | 103,056 us | 87,155 us | -3.2% | +14.5% |
| bs=100 sw=10 sl=64 | p99 | 99,776 us | 103,056 us | 106,643 us | -3.2% | -6.4% |
| bs=1000 sw=10 sl=64 | throughput | 1,402 tuples/sec | 1,460 tuples/sec | 1,415 tuples/sec | -4.0% | -0.9% |
| bs=1000 sw=10 sl=64 | MB/s | 0.856 MB/s | 0.891 MB/s | 0.864 MB/s | -3.9% | -0.9% |
| bs=1000 sw=10 sl=64 | p50 | 699,903 us | 686,035 us | 780,407 us | +2.0% | -10.3% |
| bs=1000 sw=10 sl=64 | p95 | 814,900 us | 776,888 us | 817,814 us | +4.9% | -0.4% |
| bs=1000 sw=10 sl=64 | p99 | 814,900 us | 776,888 us | 848,683 us | +4.9% | -4.0% |
</details>
<details><summary>Raw CSV</summary>
```csv
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,401.76,200,128000,498,0.304,19486.98,24442.91,24442.91
1,100,10,64,20,1628.30,2000,1280000,1228,0.750,80865.64,99775.97,99775.97
2,1000,10,64,20,14266.20,20000,12800000,1402,0.856,699903.18,814899.71,814899.71
```
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org