Skip to content

polish(errors): actionable delete-manifest rejection message - #33

Merged
gordonmurray merged 1 commit into
mainfrom
polish/delete-error-message
Apr 15, 2026
Merged

gordonmurray merged 1 commit into
mainfrom
polish/delete-error-message

Conversation

@gordonmurray

Copy link
Copy Markdown
Owner

The previous 400 response told users what went wrong but not how to fix it:

Table contains row-level deletes which are not supported. This application only supports append-only Iceberg v1/v2 tables. Reading this table may return incorrect data.

The fix is always the same — compact the table. Spelling it out removes a round-trip to Google / the Iceberg docs:

Table has row-level deletes (position or equality). Cloudfloe reads would return rows the Iceberg metadata has marked removed, so the query is blocked rather than silently wrong. Compact the table first — Spark: `CALL system.rewrite_data_files('..

')`; Trino: `ALTER TABLE
EXECUTE optimize`; Iceberg CLI: `iceberg rewrite_data_files`. Then retry.

Why keep the hard block

DX.md suggested letting users proceed with a "stale data warning." Rejected — Cloudfloe's positioning (README calls out "direct Parquet reads can return deleted rows" as a danger) depends on not doing that. A toggle that silently re-enables wrong-row behaviour undermines the "reads Iceberg correctly" promise. Better error + hard block beats looser block + silent wrongness.

Verified

The previous error told users only what went wrong ("contains row-level
deletes", "append-only Iceberg v1/v2 only") without telling them how
to fix it. In practice the fix is always 'compact the table' — make
that explicit with the concrete commands for the three tools users are
already running (Spark, Trino, Iceberg CLI).
@gordonmurray
gordonmurray force-pushed the polish/delete-error-message branch from 6c0ff7f to fd8f2b5 Compare April 15, 2026 19:24
@gordonmurray
gordonmurray merged commit 297b775 into main Apr 15, 2026
4 checks passed
@gordonmurray
gordonmurray deleted the polish/delete-error-message branch April 15, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant