# `Ankusa.Instance.RegistryWatch`
[🔗](https://github.com/jamescarr/ankusa/blob/ankusa-v0.7.0/packages/ankusa/lib/ankusa/instance/registry_watch.ex#L1)

Stops an instance when `Ankusa.Registry` restarts, so its supervisor starts
it again.

Every instance process registers by name in `Ankusa.Registry`, and
registering links it to the Registry's partition. A partition that dies takes
every registrant that does not trap exits (batchers, writer, rate limiter,
quarantine, the route cache…) down with it, and their supervisors restart
them, registered anew once the partition is back. A registrant that traps
exits (the store, every supervisor, `Ankusa.Instance.Isolated`) survives
instead, unregistered: `Ankusa.whereis/2` returns `nil` for it and
`Ankusa.via/2` calls to it fail, and nothing puts it back.

The watcher monitors the Registry supervisor and every partition under it,
because a partition crash restarts the partitions while the supervisor stays
up. Its own exit shuts the whole instance down: the instance's root supervisor
lists it as a *significant* child with `auto_shutdown: :any_significant`, and
whatever supervises the instance starts it again, every process registered
in the new Registry.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
