Mercurial > gemma
diff pkg/mesh/cache.go @ 5724:1ea1d3ef2258
Be tolerant in re-generating multi meshes iso areas if mesh data is empty.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 29 May 2024 14:23:37 +0200 |
parents | 03dfbe675842 |
children |
line wrap: on
line diff
--- a/pkg/mesh/cache.go Wed May 29 12:49:20 2024 +0200 +++ b/pkg/mesh/cache.go Wed May 29 14:23:37 2024 +0200 @@ -16,6 +16,8 @@ import ( "context" "database/sql" + "errors" + "fmt" "sync" "time" ) @@ -51,6 +53,7 @@ SELECT mesh_index, coalesce(mesh_index_version, 1) AS mesh_index_version FROM waterway.sounding_results WHERE id = $1 + AND mesh_checksum IS NOT NULL AND mesh_index IS NOT NULL ` fetchMeshSQL = ` SELECT mesh_checksum, mesh_index, coalesce(mesh_index_version, 1) AS mesh_index_version @@ -107,13 +110,15 @@ ) (*STRTree, error) { var data []byte var version int - err := tx.QueryRowContext(ctx, directMeshSQL, id).Scan(&data, &version) - if err != nil { - return nil, err + switch err := tx.QueryRowContext(ctx, directMeshSQL, id).Scan(&data, &version); { + case errors.Is(err, sql.ErrNoRows): + return nil, nil + case err != nil: + return nil, fmt.Errorf("fetching mesh from db failed: %w", err) } tree := new(STRTree) if err := tree.FromBytes(data, version); err != nil { - return nil, err + return nil, fmt.Errorf("deserializing mesh failed: %w (version %d)", err, version) } return tree, nil }