[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Poison


> The aspect "termination sequence" is completely missing in the picture
> right now.  How can the Graceful Termination strategy be mixed with
> situation in which "termination sequences" are needed?
> For example, a filesystem writes its cache to disk before a graceful
> exit.  How is this supported by your Poison-based exit approach?

When a process receives POISON or decides spontaenously to spread POISON,
it should get itself into a safe state before doing anything.  If it were
in the middle of some transaction with a server (or client) that requires
more communications to complete, then it should do that - but not, of course,
start up any more transactions.  For example, the filesystem should flush
its buffers to the disk process before going into its graceful termination
actions (which, of course, will send POISON to the disk).

But finishing off such transactions is not strictly necessary - only polite.
When you send POISON to your transaction partner, it will get the message
that the current transaction is poisoned and should not commit to any state
change caused by the transaction so far.  Of course, it might be *you* who
is the partner that gets POISON in the middle of some transaction - in which
case, you had better not continue with the transaction!