C#: compatible schema ids publish a schema on open, Mesh takes only the older layout, the refusal names its file
A record whose schema id the catalog lists only as a compatible id now opens (the cache resolved a persisted schema by entry id alone). CultMesh's fallback to the older catalog-entry reader fires only for a store in that layout, decided by the entry's slot 5, not for any decode failure, so a current-layout store with a malformed slot is refused as CultCache refuses it. CultStoreUnreadableException.Path names the refused file. New vectors: compatible-id-only-v3 (accepted by all four) and three current-layout catalogs with one malformed slot. The contract states the writer's invariant. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d5bc28e207
commit
969d78de39
16 changed files with 118 additions and 16 deletions
|
|
@ -234,7 +234,7 @@ public static class CultDocumentMessagePackSerialization
|
|||
}
|
||||
catch (Exception ex) when (ex is not OutOfMemoryException)
|
||||
{
|
||||
throw new CultStoreUnreadableException(ex.Message, ex);
|
||||
throw new CultStoreUnreadableException(ex.Message, innerException: ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -268,7 +268,7 @@ public static class CultDocumentMessagePackSerialization
|
|||
}
|
||||
catch (Exception ex) when (ex is EndOfStreamException or MessagePackSerializationException or InvalidOperationException)
|
||||
{
|
||||
throw new CultStoreUnreadableException("The store is not one complete MessagePack array.", ex);
|
||||
throw new CultStoreUnreadableException("The store is not one complete MessagePack array.", innerException: ex);
|
||||
}
|
||||
|
||||
if (!whole.End)
|
||||
|
|
|
|||
Loading…
Reference in a new issue