Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[coverage] Conformance findings: CLOUDFETCH-018

Đang mở
#473 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
62/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
go, sql
Lĩnh vực
databases

Hướng nghiên cứu

Bắt đầu với TestLinkFetchFailureSurfacesATerminalError trong coverage PR dưới tests/, sau đó tái hiện kịch bản CloudFetch nhiều chunk với lỗi fetch link kéo dài. Theo dõi lỗi CloudFetch và đường dẫn drain của Go driver. Được xem là hoàn tất khi drain đầu tiên phát sinh lỗi trong vòng 180 giây, drain lặp lại trả về trong vòng 30 giây và giao thức xác nhận đã xảy ra một lần fetch chunk.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-go. 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-go) is fixed, then flips green as a tripwire.

Findings

  • CLOUDFETCH-018 [sea]: A permanently-failing CloudFetch link fetch (403 on GET .../result/chunks/{n}) never returns: after 32 attempts the failure is logged and a waiter woken, but it is never recorded as terminal provider state and end-of-stream is left unset, so the drain blocks past 180s with 0 rows instead of raising a terminal error (kernel #319; the pure-Go Thrift path conforms, giving up in 35s after 5 attempts)
    • failing test: TestLinkFetchFailureSurfacesATerminalError (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

Ngôn ngữ chính
Go
Star
53
Fork
66
Merge trung bình
7 giờ 57 phút
Pull request đã merge (30 ngày)
16

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của databricks/databricks-sql-go

Tất cả issue của databricks/databricks-sql-go

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.