BUG: Make preflight geometry import metadata-only#1667
Conversation
|
I pushed a3fcfc7 to this branch after reviewing — two things, no change to the approach:
Also chased the two riskiest paths and found no regressions: no Verified on both builds: full SimplnxCore + core-library suites pass 100% on in-core ( |
a3fcfc7 to
ffd6a6e
Compare
During a metadata-only preflight, DataStructureReader now leaves geometry connectivity -- vertex/face/edge lists, derived connectivity, and rectilinear-grid bounds -- as an EmptyDataStore that carries only shape and type, exactly like ordinary attribute arrays, instead of eagerly bulk-reading it from disk. readGroup already imports every array as an EmptyDataStore when useEmptyDataStores is set, so loadRequiredData is now skipped during preflight and the geometry IO readers no longer register connectivity as required data (those ids were only ever consumed by the eager preflight read). This removes a wasted per-geometry disk read from every preflight, which is costly on high-latency storage. Execute is unchanged: it imports the real connectivity stores directly in readGroup. Also forward useEmptyDataStores from the std::filesystem::path overload of DataStructureReader::ReadFile to the FileIO overload; it was previously dropped and always defaulted to false.
… test * With the geometry IO readers no longer registering connectivity ids, nothing ever calls addRequiredId/addRequiredPath, making loadRequiredData a guaranteed no-op in every code path. Remove the entire mechanism (addRequiredPath, both addRequiredId overloads, loadRequiredData, m_RequiredPaths, m_RequiredIds) instead of leaving a call site that implies the pass still matters for full reads. * Broaden the metadata-only preflight test to cover every reader the change touched: edge, triangle, quad, tetrahedral, and hexahedral geometries plus rectilinear-grid X/Y/Z bounds, table-driven with DYNAMIC_SECTION per connectivity array. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
ffd6a6e to
452e198
Compare
Summary
During a metadata-only preflight,
DataStructureReadernow leaves geometry connectivity — vertex/face/edge lists, derived connectivity, and rectilinear-grid bounds — as anEmptyDataStorecarrying only shape and type (exactly like ordinary attribute arrays), instead of eagerly bulk-reading it from disk. This removes a wasted per-geometry disk read from every preflight, which is costly on high-latency storage such as network mounts. Execute is unchanged — it imports the real connectivity stores directly inreadGroup.readGroupalready imports every array as anEmptyDataStorewhenuseEmptyDataStoresis set, soloadRequiredDatais now skipped during preflight.EdgeGeomIO,INodeGeom0d/1d/2d/3dIO,RectGridGeomIO) no longer register connectivity as required data — those ids were only ever consumed by the eager preflight read.useEmptyDataStoresfrom thestd::filesystem::pathoverload ofDataStructureReader::ReadFileto theFileIOoverload; it was previously dropped and always defaulted tofalse.Test Plan
DREAM3DFileTestpasses (adds preflight metadata-only coverage asserting geometry connectivity stores are empty after preflight and populated after execute)