Skip to content

PDOK-19538: report GDAL errors on generate-definitions failure - #154

Merged
botenvouwer merged 1 commit into
masterfrom
PDOK-19538-generate-definitions-error-output
Sep 10, 2026
Merged

botenvouwer merged 1 commit into
masterfrom
PDOK-19538-generate-definitions-error-output

Conversation

@botenvouwer

Copy link
Copy Markdown
Collaborator

PDOK-19538

Bij een corrupt of onleesbaar gpkg-bestand gaf generate-definitions alleen een generieke Python-traceback (via logger.exception), in tegenstelling tot validate, dat GDAL-fouten netjes opvangt en gestructureerd rapporteert. Hierdoor was bij een falende quick check niet te zien waarom schemageneratie mislukte.

Wijzigingen

  • generate_definitions_for_path opent het gpkg-bestand nu met een GdalErrorHandler (zelfde mechanisme als validate) en gooit een nieuwe generate.GeneratorError (met de opgevangen GDAL-fouttrace) wanneer de dataset niet geopend kan worden.
  • De CLI-command generate-definitions vangt deze GeneratorError op en print een gestructureerd GDAL_ERROR-resultaat op stdout (zelfde format als validate gebruikt), in plaats van alleen een ruwe traceback op stderr.
  • GdalErrorHandler is verplaatst van validate.py naar utils.py (met backwards-compatible re-export in validate.py) zodat generate.py deze kan hergebruiken zonder circulaire import.
  • Tests toegevoegd (tests/test_generate.py, tests/test_cli.py) die het gedrag verifiëren met de bestaande tests/data/test_broken_geopackage.gpkg-fixture.

Voorbeeld (voor de fix)

ERROR 1: database disk image is malformed
Error while generating table definitions
Traceback (most recent call last):
  ...
AttributeError: 'NoneType' object has no attribute 'ExecuteSQL'

Voorbeeld (na de fix)

{
    "validation_code": "GDAL_ERROR",
    "validation_description": "Could not open gpkg.",
    "level": "unknown_warning",
    "locations": [
        "At least one of the required GeoPackage tables, gpkg_spatial_ref_sys or gpkg_contents, is missing"
    ]
}

Vervolgstap (aparte PR, in k8s-clusters): de workflow-template generate-definitions aanpassen zodat deze foutoutput ook bij falen als artifact wordt vastgelegd, zodat de front-end quick check de fout kan tonen.

🤖 Generated with Copilot CLI

Previously, generate-definitions did not use a GDAL error handler when
opening the geopackage, so a corrupt or unreadable gpkg only produced a
generic Python traceback (via logger.exception) instead of a clear
reason. This made it impossible for callers (e.g. the kangaroo quick
check) to surface why schema generation failed.

generate_definitions_for_path now opens the dataset with a
GdalErrorHandler, same as validate does, and raises a new
generate.GeneratorError (with the captured GDAL error trace) when the
dataset could not be opened. The CLI's generate-definitions command
catches this error and prints a structured GDAL_ERROR result on stdout,
consistent with the error format already used by the validate command.

GdalErrorHandler moved from validate.py to utils.py (re-exported from
validate.py for backwards compatibility) so it can be reused from
generate.py without introducing a circular import.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@botenvouwer
botenvouwer merged commit 32e7e2a into master Sep 10, 2026
7 checks passed
@botenvouwer
botenvouwer deleted the PDOK-19538-generate-definitions-error-output branch September 10, 2026 13:01
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.

2 participants