Host: an entity ignoring the passivate message is cut off for good

Open
#235 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
rust
Domain
backend

Research direction

Start in tellus/src/host.rs: Host::passivate_idle (around lines 159-168) sets an entry to Stopping, the Terminated handling (around line 128) is the only way out of that state, and routing with the HostConfig::buffer dead-letter path is at lines 95-100. Decide whether an entity that ignores the passivate message should return to Live on the next routed message or after a bounded wait, and align the Host::new doc comment (lines 55-57) with that behaviour. Done when a test covers an entity that ignores the passivate message and still receives routed messages.

Written by the indexing model from the issue text.

Description

bug

Host::passivate_idle marks an entity's entry Stopping as soon as the passivate message is told (tellus/src/host.rs:159-168). Only the entity's Terminated signal leaves that state (host.rs:128).

An entity which does not stop on the passivate message is therefore never routed to again. Every message routed to it through the host is buffered, up to HostConfig::buffer, and dropped as a dead letter beyond that (host.rs:95-100), for as long as the entity lives.

The documentation of Host::new (host.rs:55-57) promises the opposite: "an entity which does not stop on that message is never passivated", which reads as if it kept receiving its messages.

Expected: an entity which ignores the passivate message keeps receiving the messages routed to it, for example by returning its entry to Live on the next routed message or after a bounded wait. A test should cover an entity which ignores the passivate message.

Related: HostConfig has no Deserialize implementation under the serde feature, unlike ActorConfig.

Dominant language
Rust
Stars
37
Forks
1
Avg merge
6h 36m
Merged PRs (30d)
123

Getting set up

  • Ships a Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from tellus-rs/tellus

All issues in tellus-rs/tellus

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.