Establish correct semantics for deprecated [Nested=Foo] IPDL messages
Categories
(Core :: IPC, task)
Tracking
()
People
(Reporter: handyman, Unassigned)
Details
Messages using the Nested annotation are deprecated, or at least strongly discouraged, but the ones that already exist may expect different behavior than we currently have. To this point, the most useful docs for nested messages have been in this comment in MessageChannel. This leaves out a lot but, given that, the two biggest (run-time) surprises in existing behavior are:
- If a parent actor sends an inside_sync message to its child, and the child response sends a (no-priority) async message, the child's message is handled by the parent during its sync wait. This is a violation of the comment, which says:
When waiting for a sync message reply, we dispatch an async message only if it is NESTED_INSIDE_CPOW.
(That line in turn contradicts an earlier line stating message property A as: "When waiting for a response to a sync message, we won't dispatch any messages of nesting level", but I'm assuming this refers to no-priority sync messages since otherwise priorities would be worthless.)
- If a parent actor sends an inside_sync message to its child, and the child response sends a (no-priority) sync message, the child's message is handled by the parent during its sync wait. This is a violation of the prioritization rules in the comment, which say that the child's message has to be the same or higher priority to be handled during the sync wait. This should also apply to case #1, so that one is in fact showing behavior that is unexpected for both reasons.
I don't know if either of these apply to existing uses.
Updated•4 years ago
|
Description
•