> 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?

Reply via email to