Skip to content

[runtime] Formalize Child vs Sibling #1849

@patrick-ogrady

Description

@patrick-ogrady

Related: #1833
Related: #1666

In the code, we implicitly assume that with_label creates a "child" and clone() creates a "sibling" (sometimes we use clone() as a child when we don't take the time to add a label).

This makes what should be a pretty straightforward supervised abort (in consensus) behave unexpectedly because we call .with_label on some actor's provided context to setup some inner actors (making them a child of the parent rather than the actor).

Current

[application]
    |
  [engine]
    |
  (with_label) -----------------------> [engine_resolver] -> [engine_resolver]:spawn
    |                      |
  [engine]::spawn     [engine_voter]
                           |
                      [engine_voter]::spawn

Implied

[application]
    |
    |
  [engine]::spawn
   |             |
[engine_voter]  [engine_resolver]

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions