PG1204 opened a new pull request, #8729: URL: https://github.com/apache/texera/pull/8729
### What changes were proposed in this PR? The row-details modal is reused as the user pages through rows, the footer's `<` and `>` buttons mutate `rowIndex` and call `ngOnChanges()` directly, but its teardown was scoped to the modal's lifetime, so work started for one row outlived the move to the next. Two consequences. Every media cell fetched through the proxy created an object URL that was only revoked in `ngOnDestroy`, so paging through rows of images, audio or video held every blob from every row visited until the modal closed. And each `ngOnChanges` added another `selectTuple` subscription without ending the previous one, since `untilDestroyed` fires on destroy rather than on the next change, so a slower earlier response could land last and overwrite the row on screen. In-flight media requests had the same problem. Both now share one teardown: a `rowChange` subject that `ngOnChanges` emits before starting the next row's work. `releaseRow()` fires it and revokes that row's blobs, and the `selectTuple` and media requests are piped through `takeUntil(this.rowChange)`, so only the current row's work is ever live. `ngOnDestroy` calls the same method, keeping the revoke logic in one place. ### Any related issues? Closes #8727 ### How was this PR tested? Written test-first. Three tests were added to `result-panel-modal.component.spec.ts`, the previous row's blobs are revoked on navigation, a late response from the previous row no longer overwrites the current one, and an in-flight media request is cancelled when the row changes. All three fail against the current component and pass with the change; reverting the component and re-running makes exactly those three fail again. The file is at 24 tests, the result-panel suite at 180 across 5 files, and Prettier is clean. ### Was this PR authored or co-authored using generative AI tooling? Yes, this PR was co-authored with Claude in compliance with ASF policy. -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
