writer: order dense name indexes by hash, then name
libhdf5 compares the name when two hashes are equal; the writer broke ties by insertion order, and libhdf5 could not find one of two names whose lookup3 hashes collide (k69209 / k155448). Test fails before the fix with h5py's KeyError. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
@@ -2,6 +2,17 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Writer: large dense indexes (2026-09-26)
|
||||
- **Links and attributes whose name hashes collide are found by name.** The
|
||||
dense name indexes (a group's links: B-tree v2 type 5; an object's
|
||||
attributes: type 8) are ordered by the name's lookup3 hash and, when two
|
||||
hashes are equal, by the name itself, as libhdf5 compares them. The writer
|
||||
broke ties by insertion order, so libhdf5 could not open one of two
|
||||
colliding names (`"k69209"` and `"k155448"` share hash `0x3a0b13e6`;
|
||||
collisions are likely from about 77 000 names). Regression test
|
||||
`names_whose_hashes_collide_are_found_by_name` in
|
||||
`crates/clawhdf5/tests/writer_groups_interop.rs`.
|
||||
|
||||
### Concurrent reads (2026-09-26)
|
||||
- **Full reads of chunked datasets scale with threads again when rayon's
|
||||
pool has one thread.** Each full read handed its chunks to rayon to
|
||||
|
||||
Reference in New Issue
Block a user