> I am porting Recover to 4e. Recover is a filesystem which speaks
> 9P with two ends, a server and a client. When a connection falls down
> it pushes the state and restarts the pending requests, so you don't
> see a hung channel any more if your connection falls down.
i did something like this for inferno, but couldn't work out what was
the best thing to do about non-idempotent 9p transactions: if the
connection is lost before the reply to such a transaction is received,
what is the correct course of action? the client can't know whether the
transaction has actually taken place on the server.
examples of such requests:
create
wstat (rename)
write to an append-only file
any operation on a non-standard filesystem (e.g. writing a ctl file)
problems arising from this kind of thing will be
rare, but all the more insidious when they do actually happen.
in the end, i decided to make such requests yield Rerror("operation possibly
failed"),
but i have a niggling feeling that the whole approach is wrong.
thoughts?