The GitHub Actions job "Fory CI" on fory.git/row-codec-schema-versions has succeeded. Run started by GitHub user stevenschlansker (triggered by stevenschlansker).
Head commit for run: 0e3480ed5c058e3c55b8d833a72f5b0888274911 / Claude (on behalf of Steven Schlansker) <[email protected]> fix(format): delimit struct children in row-codec strict schema hash SchemaHistory.hashField mixed a StructType's constant name then recursed into its children with no boundary marker. A struct's arity is variable (unlike list/map, whose arity is fixed by the type kind), so {a: struct<x>, b} and {a: struct<x, b>} mixed an identical byte sequence and produced the same 64-bit strict hash. A non-injective strict hash can route an older payload to the wrong projection codec or trip the build-time collision guard on a legitimate evolution. Mix the struct's child count before recursing so the hash stays injective over nesting. Also tighten visibility and remove duplicate paths surfaced by review: hoist the duplicated typeCtx() (the synthesize-interfaces resolution context) into the shared BaseCodecBuilder owner; drop MapCodecBuilder's one-line combinedHash forwarder in favor of calling SchemaHistory.combineHashes directly; and narrow computeStrictSchemaHash to package-private for the new test. Add SchemaHistoryTest covering the struct-boundary collision, its minimal empty-struct form, and that structurally identical schemas still hash equal. Report URL: https://github.com/apache/fory/actions/runs/28472892155 With regards, GitHub Actions via GitBox --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
