Repository navigation
Abort on failed gdalcubes chunk reads before caching (#87) - #100
Merged
NewGraphEnvironment merged 4 commits intoOct 2, 2026
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PRhUJsuKABLfpBGktPoiBN
gdalcubes writes a per-chunk chunk_status into every write_ncdf() output, carried from worker processes, so a band image that fails to open (an expired or refused signed URL) is visible at any parallel where the stderr line was not. cube_write_ncdf() is now drift's single write_ncdf() call, in stac_cube_assemble() and fetch_extent_to(): it aborts (drift_incomplete_cube) on a non-OK status and on gdalcubes' "could not be added to output" merge warning, after the write returns, before anything is cached. - offset split builds both sides before terra::cover(), whose S4 dispatch re-raised the abort without its class - untiled fetch .nc caches recording failed chunks are a miss and re-fetch - GDAL HTTP retries in the cube session and every dft_stac_fetch() - tiled fetch registers tile cleanup before the reads - ncdf4 to Suggests (gdalcubes imports it) Offline fixture tests, red before the wiring and after un-wiring; live probe 8 of 8 (data-raw/probe_chunk_status_live.R). Failures gdalcubes does not record (read after open, mask failures, worker files, crashes) are documented and moved to #99. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PRhUJsuKABLfpBGktPoiBN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PRhUJsuKABLfpBGktPoiBN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PRhUJsuKABLfpBGktPoiBN
NewGraphEnvironment
deleted the
87-failed-gdalcubes-chunk-reads-are-silent
branch
October 2, 2026 14:41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
drift_incomplete_cube) with nothing cached. This coversdft_stac_cube(),dft_stac_composite()anddft_stac_fetch(), tiled and untiled. The failure is an expired, corrupted or refused signed URL, which held 15 of 30 tiles in Dated reference imagery: true-colour composites, NDWI/MNDWI, and RGB layers in dft_map_interactive (+ HLS source) #79.cube_write_ncdf()is now drift's singlewrite_ncdf()call. It checks two things:chunk_statusgdalcubes writes into every output, which reaches R from worker processes too, unlike the stderr line;terra::cover()'s S4 dispatch, a bug the new tests found;ncdf4added to Suggests (gdalcubes imports it).What this does NOT catch
gdalcubes records only one failure: a band image that will not open. Every other I/O step drops its return code. Code-check round 3 enumerated 38 failure paths in the write pipeline: drift now detects 25, and 13 stay silent. The silent ones include:
write_ncdf().These are #99, with an upstream gdalcubes draft that has not been posted. For caches other than untiled fetch (cube, composite, tiled fetch
.tif), entries written before this version cannot be re-checked. Long tiled runs from before it are worth re-running withforce = TRUE, and the NEWS entry should say so.Measurement
chunk_status9 × INCOMPLETE of 279 chunks atparallel1 and 4. The stderr line appeared at 1 only. A monthly median filled 1600 of 1600 cells from the surviving scene, so a pixel post-check could never have caught it.data-raw/probe_chunk_status_live.R, logdata-raw/logs/probe_chunk_status_live/20261002T140832Z.txt):tile_size = 20000. No BULK RSS run, since there is no new raster work to measure.devtools::test(): FAIL 0 | PASS 1549 | SKIP 16.Related Issues
Test plan
parallel = 4): red before the wiring, green after, red again with the wrapper reduced to a barewrite_ncdf()/code-check: plan review plus three rounds, ended by enumeration (planning/archive/2026-10-issue-87-silent-chunk-read-failures/)Notes
[WARNING] n out of m chunksline still prints during the broken-fixture tests. It is C++ stdio, and no R handler can silence it.🤖 Generated with Claude Code
https://claude.ai/code/session_01PRhUJsuKABLfpBGktPoiBN