Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-python. 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-sql-python) is fixed, then flips green as a tripwire.
Findings
- CLOUDFETCH-017 [sea]: kernel (SEA) retries a persistently failing CloudFetch chunk download without bound — the drain never returns (blocked past 75s after ~7 presigned-URL GETs) instead of charging each completed failure against the download attempt budget and surfacing a terminal error; same non-termination class as databricks-odbc#144
- failing test:
test_persistent_download_failure_is_terminal_and_attempt_bounded (see the coverage PR diff under tests/)
Reproduce & Expected
CLOUDFETCH-017 — A CloudFetch chunk download that fails PERSISTENTLY must become terminal: the driver charges every completed download failure against its download attempt budget, surfaces an error to the consumer, a…
Reproduce:
- Every cloud-storage GET for the chunk fails with HTTP 500 for the whole test.
- Execute a CloudFetch (external-links) query and drain the result. The drain
must terminate with an error rather than hang; wrap it in a wall-clock bound
so an unbounded-retry driver fails instead of running to the CI timeout.
Expected (per the shared spec):
result:
- exception_thrown: true
description: 'The persistent download failure is propagated to the caller as an
error.
Message content is not asserted (drivers word cloud-download errors
differently); the point is that the read terminates in failure, not that
it returns partial rows or blocks.
'
- cloud_download_count:
min: 1
max: 2
description: "The failing chunk is downloaded at least once and NO MORE than the\n\
configured download attempt budget. A driver that skips attempt\naccounting on\
\ the stale-link path exceeds this bound (or never stops).\nA driver exposing\
\ no attempt-budget knob asserts its own small fixed\nupper bound instead \u2014\
\ the contract is that the count is BOUNDED, not\nthat it equals a particular\
\ number.\n"
- elapsed_seconds_range:
min: 0
max: 120
description: The failing drain terminates well inside the CI timeout.
Context
Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-python. 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-sql-python) is fixed, then flips green as a tripwire.
Findings
test_persistent_download_failure_is_terminal_and_attempt_bounded(see the coverage PR diff undertests/)Reproduce & Expected
CLOUDFETCH-017 — A CloudFetch chunk download that fails PERSISTENTLY must become terminal: the driver charges every completed download failure against its download attempt budget, surfaces an error to the consumer, a…
Reproduce:
must terminate with an error rather than hang; wrap it in a wall-clock bound
so an unbounded-retry driver fails instead of running to the CI timeout.
Expected (per the shared spec):
Context