Skip to content

Conversation

@shayne-fletcher
Copy link
Contributor

Summary: previously if a parent proc sent attrs the child binary didn’t know about, deserialization would fail deep in bincode with “Bincode does not support Deserializer::deserialize_ignored_any”, which then surfaced as an undeliverable ProcSpec. the root cause is that bincode can't safely skip an unknown value without knowing its type/length, and we were trying to treat it like JSON and ignore it. this change makes that failure explicit: we now error as soon as we see an unknown key, and the message names both the unknown key and the binary that rejected it. the new test exercises exactly that path by injecting an unregistered key, round-tripping through bincode, and asserting we get the structured error. this gives us a clear, actionable failure mode and sets us up to filter unsupported attrs before send.

Differential Revision: D85913786

@meta-codesync
Copy link

meta-codesync bot commented Oct 31, 2025

@shayne-fletcher has exported this pull request. If you are a Meta employee, you can view the originating Diff in D85913786.

@meta-cla meta-cla bot added the CLA Signed This label is managed by the Meta Open Source bot. label Oct 31, 2025
shayne-fletcher added a commit to shayne-fletcher/monarch-1 that referenced this pull request Oct 31, 2025
…torch#1721)

Summary:

previously if a parent proc sent attrs the child binary didn’t know about, deserialization would fail deep in bincode with “Bincode does not support Deserializer::deserialize_ignored_any”, which then surfaced as an undeliverable `ProcSpec`. the root cause is that bincode can't safely skip an unknown value without knowing its type/length, and we were trying to treat it like JSON and ignore it. this change makes that failure explicit: we now error as soon as we see an unknown key, and the message names both the unknown key and the binary that rejected it. the new test exercises exactly that path by injecting an unregistered key, round-tripping through bincode, and asserting we get the structured error. this gives us a clear, actionable failure mode and sets us up to filter unsupported attrs before send.

Differential Revision: D85913786
shayne-fletcher added a commit to shayne-fletcher/monarch-1 that referenced this pull request Oct 31, 2025
…torch#1721)

Summary:

previously if a parent proc sent attrs the child binary didn’t know about, deserialization would fail deep in bincode with “Bincode does not support Deserializer::deserialize_ignored_any”, which then surfaced as an undeliverable `ProcSpec`. the root cause is that bincode can't safely skip an unknown value without knowing its type/length, and we were trying to treat it like JSON and ignore it. this change makes that failure explicit: we now error as soon as we see an unknown key, and the message names both the unknown key and the binary that rejected it. the new test exercises exactly that path by injecting an unregistered key, round-tripping through bincode, and asserting we get the structured error. this gives us a clear, actionable failure mode and sets us up to filter unsupported attrs before send.

Differential Revision: D85913786
shayne-fletcher added a commit to shayne-fletcher/monarch-1 that referenced this pull request Oct 31, 2025
…torch#1721)

Summary:

previously if a parent proc sent attrs the child binary didn’t know about, deserialization would fail deep in bincode with “Bincode does not support Deserializer::deserialize_ignored_any”, which then surfaced as an undeliverable `ProcSpec`. the root cause is that bincode can't safely skip an unknown value without knowing its type/length, and we were trying to treat it like JSON and ignore it. this change makes that failure explicit: we now error as soon as we see an unknown key, and the message names both the unknown key and the binary that rejected it. the new test exercises exactly that path by injecting an unregistered key, round-tripping through bincode, and asserting we get the structured error. this gives us a clear, actionable failure mode and sets us up to filter unsupported attrs before send.

Differential Revision: D85913786
shayne-fletcher added a commit to shayne-fletcher/monarch-1 that referenced this pull request Oct 31, 2025
…torch#1721)

Summary:

previously if a parent proc sent attrs the child binary didn’t know about, deserialization would fail deep in bincode with “Bincode does not support Deserializer::deserialize_ignored_any”, which then surfaced as an undeliverable `ProcSpec`. the root cause is that bincode can't safely skip an unknown value without knowing its type/length, and we were trying to treat it like JSON and ignore it. this change makes that failure explicit: we now error as soon as we see an unknown key, and the message names both the unknown key and the binary that rejected it. the new test exercises exactly that path by injecting an unregistered key, round-tripping through bincode, and asserting we get the structured error. this gives us a clear, actionable failure mode and sets us up to filter unsupported attrs before send.

Differential Revision: D85913786
…torch#1721)

Summary:

previously if a parent proc sent attrs the child binary didn’t know about, deserialization would fail deep in bincode with “Bincode does not support Deserializer::deserialize_ignored_any”, which then surfaced as an undeliverable `ProcSpec`. the root cause is that bincode can't safely skip an unknown value without knowing its type/length, and we were trying to treat it like JSON and ignore it. this change makes that failure explicit: we now error as soon as we see an unknown key, and the message names both the unknown key and the binary that rejected it. the new test exercises exactly that path by injecting an unregistered key, round-tripping through bincode, and asserting we get the structured error. this gives us a clear, actionable failure mode and sets us up to filter unsupported attrs before send.

Differential Revision: D85913786
shayne-fletcher added a commit to shayne-fletcher/monarch-1 that referenced this pull request Oct 31, 2025
…torch#1721)

Summary:

previously if a parent proc sent attrs the child binary didn’t know about, deserialization would fail deep in bincode with “Bincode does not support Deserializer::deserialize_ignored_any”, which then surfaced as an undeliverable `ProcSpec`. the root cause is that bincode can't safely skip an unknown value without knowing its type/length, and we were trying to treat it like JSON and ignore it. this change makes that failure explicit: we now error as soon as we see an unknown key, and the message names both the unknown key and the binary that rejected it. the new test exercises exactly that path by injecting an unregistered key, round-tripping through bincode, and asserting we get the structured error. this gives us a clear, actionable failure mode and sets us up to filter unsupported attrs before send.

Differential Revision: D85913786
@meta-codesync meta-codesync bot closed this in 958b033 Oct 31, 2025
@meta-codesync
Copy link

meta-codesync bot commented Oct 31, 2025

This pull request has been merged in 958b033.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot. fb-exported Merged meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants