Commit 425c700
authored
[ES-1934053] Detach result streaming from QueryContext cancellation (#373)
> Supersedes #371 (which was opened from a fork and therefore could not
run the required JFrog-dependent CI checks — forks don't receive the
OIDC `id-token`). Same context-only fix, same-repo branch so CI can run.
Review history and discussion are on #371.
## Summary
Fixes the Sev1 result-streaming truncation in **ES-1934053**. Since
#295, the caller `QueryContext` was threaded into `NewRows` →
`ResultPageIterator`, so result paging (`FetchResults`) and
`CloseOperation` inherited the caller's deadline. A short timeout meant
to gate only statement submission + status polling then fired mid-stream
and **silently truncated** large CloudFetch results (a query expected to
return 29,232,004 rows returned only 2,159,144; the `ArrowBatchIterator`
surfaced `io.EOF` rather than the deadline error).
This PR is **context-fix-only**. The Arrow row-count cap that was
originally bundled with this work is split into #372 (an independent
*over-reporting* fix).
## What changed
- Detach the result context from the caller's cancellation via
`context.WithoutCancel`, preserving its values for auth/logging.
- Wire the detached context to a cancel func invoked from
`Rows.Close()`, so in-flight `FetchResults` and CloudFetch downloads are
never left uncancellable (addresses review finding **F2**).
- `GetArrowBatches`/`GetArrowIPCStreams` now build their iterator from
the detached context, so CloudFetch S3 downloads also survive the
caller's deadline and remain abortable via `Close` (addresses **F3** —
previously paging was detached but downloads were not).
## Test plan
- `go test ./internal/rows/...` — adds
`TestNewRows_DetachesResultRPCContextFromQueryContextCancellation` and
`TestNewRows_CloseAbortsDetachedResultContext`.
- `go test ./...` — full suite green.
- E2E against a real SQL warehouse: reproduced the regression
(100,000-row stream truncated to **12,288** rows under a 2s mid-stream
deadline) and confirmed the fix drains the full result. The e2e
regression passes the **cancelled** `QueryContext` into
`GetArrowBatches` (previously `context.Background()`, which masked the
download path).
This pull request and its description were written by Isaac.
Signed-off-by: Madhavendra Rathore <madhavendra.rathore@databricks.com>1 parent 94154ac commit 425c700
3 files changed
Lines changed: 245 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| 22 | + | |
20 | 23 | | |
21 | 24 | | |
22 | 25 | | |
| |||
255 | 258 | | |
256 | 259 | | |
257 | 260 | | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
258 | 323 | | |
259 | 324 | | |
260 | 325 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
57 | 58 | | |
58 | 59 | | |
59 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
60 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
61 | 71 | | |
62 | 72 | | |
63 | 73 | | |
| |||
134 | 144 | | |
135 | 145 | | |
136 | 146 | | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
137 | 156 | | |
138 | 157 | | |
139 | 158 | | |
| |||
142 | 161 | | |
143 | 162 | | |
144 | 163 | | |
145 | | - | |
| 164 | + | |
| 165 | + | |
146 | 166 | | |
147 | 167 | | |
148 | 168 | | |
| |||
201 | 221 | | |
202 | 222 | | |
203 | 223 | | |
204 | | - | |
| 224 | + | |
205 | 225 | | |
206 | 226 | | |
207 | 227 | | |
| |||
244 | 264 | | |
245 | 265 | | |
246 | 266 | | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
247 | 273 | | |
248 | 274 | | |
249 | 275 | | |
| |||
635 | 661 | | |
636 | 662 | | |
637 | 663 | | |
638 | | - | |
639 | | - | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
640 | 672 | | |
641 | 673 | | |
642 | 674 | | |
643 | 675 | | |
644 | | - | |
| 676 | + | |
645 | 677 | | |
646 | 678 | | |
647 | | - | |
| 679 | + | |
648 | 680 | | |
649 | 681 | | |
650 | 682 | | |
651 | | - | |
652 | | - | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
653 | 686 | | |
654 | 687 | | |
655 | 688 | | |
656 | 689 | | |
657 | | - | |
| 690 | + | |
658 | 691 | | |
659 | 692 | | |
660 | | - | |
| 693 | + | |
661 | 694 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1564 | 1564 | | |
1565 | 1565 | | |
1566 | 1566 | | |
| 1567 | + | |
| 1568 | + | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
1567 | 1704 | | |
1568 | 1705 | | |
1569 | 1706 | | |
| |||
0 commit comments