Sun rejects orthogonal persistence for Java
Mark S. Miller
markm@caplet.com
Thu, 16 Sep 1999 11:14:07 -0700
Jonathan Shapiro wrote:
> >Persistence gives a form of recoverability. The main problem with it
> lies in
> >the difficulties that arise when two independently persistent systems must
> >interact. This requires transactions, which in practice requires
>violating the
> >persistence model so that the transaction log will not be lost. I suspect
>that
> >if there is an argument *against* persistence, it lies here.
At 10:38 AM 9/16/99 , Rob Jellinghaus wrote:
>That may well be, but it's a separate argument altogether :-) And again,
>I'm looking specifically at the language level here. Oops, maybe it's the
>same argument after all, in that an evolving system *is* in some sense two
>separate systems--its prior version, and its subsequent version....
Very good you two. There is indeed a strong relationship, although
transactions are not quite the right concept, and the argument is not
against persistence, but for splitting our normal notion of
reliable/invokable pointer/capability into two parts. Two VATs are
precisely the kind of interacting separately-persistent system Jonathan
refers to. Our solution is a symmetric generalization of the approach of
the KeyKOS device key. We have two kinds of interVAT pointer, both of
which have capability security nature.
1) The live reference, which is fail-stop rather than reliable. You can
asynchronously ("<-") invoke on a live reference, but it may become
disconnected (smashed) at any time. Until it's smashed, it delivers all
messages reliably & in order. Any interVAT time trauma will smash all
interVAT live references.
2) The SturdyRef, which remains connected across such time-traumas, but
which cannot be invoked on. You can ask a SturdyRef for a new live
reference, and this latter will remain live only until the next time trauma.
This also recovers a necessary explicitness we were in danger of losing in
moving to pure object/capability systems -- the recovery of distributed
consistency following such a time trauma. In order for a program to
recover, the above abstractions encourage the programmer to think through
very different recovery logic than the normal operational logic. The
result is transaction-like, but not transactional. You can think of it as
an unbundling of key elements of the transaction idea.
The relationship to upgrade? If on upgrade we throw away the
inter-"program" messages (where a "program" is a separately written
upgradable subsystem), then we have a similar inter-program time trauma
problem (insight also due to Arturo). Putting it all together, I suspect
that the boundaries in E between separately upgradable subsystems must also
be VAT boundaries, so that we can successfully reuse the consistency
recovery logic. This is unfortunate.
-----------------------------------------------------------
Due to a bug (possibly at my ISP, but probably in Eudora 4.2.0.58), on 9/15
I lost 18 email messages. If it's possible for you to check whether you
sent me something on that date, resending it would be great. Otherwise,
please excuse my non-responsiveness to email you may have sent around that
time. Sorry for the inconvenience, and thanks.
--MarkM