Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-jdbc. Each finding is committed as an expected-failure (xfail) test in the coverage PR — the test asserts the CORRECT (post-fix) behavior and stays red until THIS driver (databricks/databricks-jdbc) is fixed, then flips green as a tripwire.
Findings
- CLOUDFETCH-018 [thrift]: Thrift chunk-ready timeout loses its TIMEOUT classification: AbstractRemoteChunkProvider.getChunk collapses ExecutionException|TimeoutException into DatabricksSQLException("Failed to ready chunk", e.getCause()), and TimeoutException has a null cause, so a stalled CloudFetch chunk surfaces an opaque internal error instead of a timeout (SEA's StreamingChunkProvider gets this right)
- failing test:
testStalledChunkDownloadIsBoundedByAnEndToEndDeadline (see the coverage PR diff under tests/)
Reproduce & Expected
CLOUDFETCH-018 — A CloudFetch chunk download that STALLS -- the cloud-storage GET is accepted but response headers/body never arrive -- must be abandoned under an ABSOLUTE end-to-end wall-clock budget for that chunk,…
Reproduce:
- Stall EVERY CloudFetch download: the proxy accepts each GET and holds it for
180s, so no attempt ever completes and the chunk can only finish by the driver
giving up.
- A result large enough to be delivered via CloudFetch external links; drain it
and expect a terminal timeout rather than a multi-minute block.
Expected (per the shared spec):
result:
- label: stalled_drain
exception_thrown: true
- label: stalled_drain
elapsed_seconds_range:
max: 150
- label: stalled_drain
error:
contains:
- timeout
- timed out
- deadline
protocol:
thrift:
- label: stalled_drain
cloud_downloads_min: 1
sea:
- label: stalled_drain
cloud_downloads_min: 1
Context
Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-jdbc. Each finding is committed as an expected-failure (xfail) test in the coverage PR — the test asserts the CORRECT (post-fix) behavior and stays red until THIS driver (databricks/databricks-jdbc) is fixed, then flips green as a tripwire.
Findings
testStalledChunkDownloadIsBoundedByAnEndToEndDeadline(see the coverage PR diff undertests/)Reproduce & Expected
CLOUDFETCH-018 — A CloudFetch chunk download that STALLS -- the cloud-storage GET is accepted but response headers/body never arrive -- must be abandoned under an ABSOLUTE end-to-end wall-clock budget for that chunk,…
Reproduce:
180s, so no attempt ever completes and the chunk can only finish by the driver
giving up.
and expect a terminal timeout rather than a multi-minute block.
Expected (per the shared spec):
Context