REL-ONT-002 — Propagate semantic-query cancellation
| Field | Value |
|---|---|
| Status | Open finding; client gap source-verified; engine outcome pending |
| Severity | High |
| Components | sparqd/oqullus, sparqd/bff-api, sparqd/ontology, Cube, Trino |
| Associated issues | Not opened pending finding review |
Concrete observed case
Oqullus races its Cube SDK promise with an abort promise but does not pass the
signal to cubeApi.load. Ontology proxies through a blocking HTTP call with a
30-second timeout, while BFF and the proxy buffer the response. The UI can stop
waiting although work may continue through Cube and Trino. Trino permits up to
24 hours of execution and has a two-hour client timeout.
Expected condition
One query ID is correlated across every hop. Stop sends a supported cancellation request, reports cancelling until Cube and Trino reach a terminal state, and distinguishes cancellation from timeout, failure, and browser disconnection.
Why it matters
An apparently stopped query can continue consuming shared compute, and retrying can increase the load.
Existing controls and workarounds
Ontology's HTTP timeout bounds one proxy wait, not engine execution. Cube
supports native AbortSignal and request-ID cancellation; neither is wired.
Alternatives considered
- Recommended: pass the SDK signal and expose server cancellation mapped to Cube request ID and Trino query ID.
- Server timeout — necessary safety boundary, but not user cancellation.
- Close the browser request — insufficient without verified upstream state.
Component involvement
- Oqullus sends cancellation and renders terminal state.
- BFF and Ontology preserve query identity and disconnect/cancel intent.
- Cube cancels its running query and Trino confirms final state.
Reproduction and verification
Follow ONT-S016.
Resolution conditions
Close when a long query stops in Cube and Trino within a measured budget and repeated Stop/retry actions remain idempotent and attributable.
Validation and blockers
The browser signal gap is source-confirmed. A controlled long-running semantic query and correlated Cube/Trino state are pending.