Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions UPDATING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ assists people when migrating to a new version.

## Next

- `superset deletion-retention force-purge` now exits **1** when the target is
blocked by a deletion rule or is not found (the messages are unchanged), so a
scripted compliance erasure cannot mistake a refusal for a completed purge.
Only a completed purge exits 0; a usage error still exits 2.

### Default Docker image is now batteries-included; the minimal image moves to `-lean`

The default `apache/superset` Docker image (the plain tags: `latest`, `master`,
Expand Down
6 changes: 5 additions & 1 deletion superset/cli/deletion_retention.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,11 @@ def force_purge(uuid: UUID, entity_type: str | None) -> None:
)
else:
click.echo(f"No entity found for uuid={uuid} (nothing to purge).")
return
# A refused or absent target is not a completed purge: exit non-zero
# so an operator's script (a compliance-erasure runbook) cannot mistake
# it for success. The message above is the contract; only the exit
# status changed.
raise click.exceptions.Exit(1)
click.echo(
f"Purged {result['entity_type']} uuid={uuid}. "
f"Dangling charts: {len(result.get('dangling_chart_uuids') or [])}; "
Expand Down
Loading
Loading