Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Liveness management #2

Open
jkominek opened this issue Feb 6, 2020 · 1 comment
Open

Liveness management #2

jkominek opened this issue Feb 6, 2020 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@jkominek
Copy link
Owner

jkominek commented Feb 6, 2020

Correct garbage collection and lock breaking requires "liveness management", whereby every process registers an ID used for marking inodes as in-use and holding locks. Every process will increment a counter and set a last updated time at a constant frequency. Every process will watch the PID table and, on spotting a process not updating its entry, "ping" it. Failure to respond to the "ping" within a significant multiple of the update frequency will mean the pinged process is dead, and other processes may remove the dead process' entry from the PID table which will kill it.

@jkominek jkominek added the enhancement New feature or request label Feb 6, 2020
@jkominek jkominek self-assigned this Feb 6, 2020
@jkominek jkominek added this to the "One Point Oh" milestone Dec 24, 2020
@jkominek
Copy link
Owner Author

bdb5700 gets the first pass at liveness management into place. Processes put themselves into the table, and keep their entry up to date. If they see their entry has been removed, they self-terminate.

Next step is that processes need to fetch that table occasionally, and keep an in-memory copy. They can then use that to ensure their fellow processes are staying alive, and refer to it for garbage collection. (GC should operate off a fresh copy of the process table, as well as a list of everything which was alive recently. It doesn't need to be in a hurry to clean things up.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant