Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

[coverage] Conformance findings: CLOUDFETCH-018

未關閉
#945 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
55/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
活躍
技術堆疊
python
領域
database

研究方向

tests/ 下 coverage PR diff 中的 xfail 測試 test_link_fetch_failure_surfaces_terminal_error 開始,然後將預期行為與參考 PR #322 進行比較。執行包含多個 chunk 結果和持續發生的 Thrift FetchResults 失敗的 protocol scenario。完成的標準是:第一次 drain 在 180 秒內引發例外,重複 drain 能迅速傳回錯誤或串流結束。

由索引模型根據 Issue 內容生成。

描述

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-018 [thrift]: A permanently-failing CloudFetch link fetch (Thrift FetchResults) never surfaces a terminal error: the drain hangs indefinitely (>180s) instead of failing, stranding the application thread. The link fetch fails before any per-chunk state exists, so error handling keyed on per-chunk download/processing state never records the failure or wakes waiters (same class as kernel #319 / audit finding H03).
    • failing test: test_link_fetch_failure_surfaces_terminal_error (see the coverage PR diff under tests/)

Reproduce & Expected

CLOUDFETCH-018 — A permanently-failing CloudFetch LINK FETCH must surface a TERMINAL error to the consumer, and must do so in bounded time.

Reproduce:

  • Enable this run's protocol scenario (see protocol_scenarios above) so the
    link-fetch call fails persistently. The result must be large enough to span
    MULTIPLE chunks, so the driver has to ask for links it does not already hold --
    otherwise every link arrives inline, no link fetch is issued, and the injected
    failure never fires (the protocol guard below catches that vacuous case).
  • Drain a multi-chunk CloudFetch result whose link fetch fails permanently.
    Expect the drain to raise -- not to block, and not to report a clean
    end-of-stream over a truncated row set.
  • Fetch again on the SAME result after the terminal error. Must return promptly
    (end-of-stream or the same error), not hang.

Expected (per the shared spec):

  • full assertion contract:
result:
- label: first_drain
  exception_thrown: true
- label: first_drain
  elapsed_seconds_range:
    max: 180
- label: repeat_drain
  either_condition_true:
  - row_count: 0
  - exception_thrown: true
- label: repeat_drain
  elapsed_seconds_range:
    max: 30
protocol:
  thrift:
  - label: first_drain
    call_min:
      method: FetchResults
      min: 1
  sea:
  - label: first_drain
    call_min:
      operation: FetchResultChunk
      min: 1

Context

主要語言
Python
星號
233
分支
152
平均合併
21 小時 5 分鐘
30 天內合併 PR
10

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

databricks/databricks-sql-python 的其他 Issue

查看 databricks/databricks-sql-python 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。