[coverage] Conformance findings: STATEMENT-022

Offen
#888 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
70/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Ruhig
Tech-Stack
python
Bereich
databases

Rechercherichtung

Beginne mit dem cancel()-Pfad, der an backend.cancel_command(active_command_id) weiterleitet, und untersuche dann den fehlschlagenden Test test_simultaneous_statement_cancellation im coverage-PR-Diff unter tests/. Erledigt bedeutet, dass die gleichzeitige Stornierung ohne Ausnahme abgeschlossen wird und für das Statement genau einen CancelOperation-RPC ausgibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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

  • STATEMENT-022 [thrift]: Thrift: Cursor.cancel() does not deduplicate concurrent cancels on the same statement — 3 threads emit 3 CancelOperation RPCs where the spec requires exactly 1, because cancel() forwards straight to backend.cancel_command(active_command_id) with no in-flight-cancel guard
    • failing test: test_simultaneous_statement_cancellation (see the coverage PR diff under tests/)

Reproduce & Expected

STATEMENT-022 — Validates driver handles multiple threads calling CancelOperation on same statement without deadlock or crash.

Reproduce:

SELECT a.*, b.* FROM main.tpcds_sf1_delta.catalog_returns a CROSS JOIN range(1, 10000) b ORDER BY a.cr_order_number, b.id

Expected (per the shared spec):

  • completes without an exception
  • [thrift] exactly 1 CancelOperation call(s)
  • [sea] between 1 and 3 CancelStatement call(s)

Context

Vorherrschende Sprache
Python
Sterne
233
Forks
152
Ø Merge
21 Std. 5 Min.
Gemergte PRs (30 T.)
10

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus databricks/databricks-sql-python

Alle Issues in databricks/databricks-sql-python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.