The GitHub Actions job "Fory CI" on fory.git/row-codec-schema-versions has failed. Run started by GitHub user stevenschlansker (triggered by stevenschlansker).
Head commit for run: 96f441fd4efdd9f3f7ea6fff858d31e7d29e3b99 / 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/28471002654 With regards, GitHub Actions via GitBox --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
