[Isolate-interest] JSR-121 aggregates and links (strawman 10)
Pete Soper
Pete@Soper.US
Sun, 10 Oct 2004 19:42:30 -0400
Godmar Back wrote:
>> Are these Miles personal opinions or the opinions of the EG, and if
Except for us having described the cluster requirement as one having a
"single administrative domain" I think Miles reflected the EG view very
well.
>> the latter, could someone point me at where you documented your
>> reasoning?
It's behind passwords as a huge collection of text with a low signal to
noise ratio.
The EG hasn't discussed opening up access to this and
we haven't been able to generate and maintain the design rationale
document you desire. Glenn Skinner warned me about this day. But every
significant aspect of the public review API design got discussed
thoroughly, in some cases multiple times. We have older and wiser brains
now but there is a strong foundation and these strawmen we've been
sharing are refactoring/packaging exercises for the most part.
>>> >
>>
>>>> > > Finally, if you have time/energy, I'd like to hear the complete
>>>> > > rationale for avoiding checked exceptions in this last draft.
In what
>>>> > > way do they strengthen the contract to the user?
>>
>>> >
>>> > Think about somehow putting a checked exception onto "new", then
run that
>>> > thinking backwards.
>>> >
>> As for example in "new ClosedLinkException()"? How do I run this
>> thinking backwards? Could you give an example that shows the
>> differences between these two approaches?
Do you put try/catch around every use of "new?" I'll bet you don't,
because you figure if an out of memory exception is thrown there is
simply nothing to do anyway. You are relying on new to be reliable. I
think we should rely on Sendable to be reliable too. The EG hasn't
discussed this yet as we're all extremely busy with other work. Yes, an
isolate representing a link endpoint closing that link is going to cause
an uncoordinated send/receive operation at the other endpoint to fail.
If that couldn't be accounted for by system design then try/catch could
be used as a special case. What I'm exploring is whether the world will
be a better place if Link send/receive do not define checked exceptions
via "throws." This puts the burden on implementors and I think the
analogy with heap is valid: a decent implementation won't throw out of
memory until all kinds of things have happened to try to find available
storage (e.g. two days ago I read a Hotspot team member discussing the
possibility of the VM giving up some of its internal cached space as a
last ditch tactic). Something similar can be done with Link so that a
send/receive failure (failure, not "rug pulling exercise" via one end
doing a close) is tantamount to system (aggregate) failure.
And speaking of aggregates, I need to stress that this term is a
convenience for expressing "all isolates relating to a common ancestor"
and the "nature" of the primordial isolate varies depending on who's
discussing the subject. This seems absolutely right to me considering
the research nature of the cluster implementation style.
Laurent wrote:
>> However nice & OO this is, it is problematic to the J2ME=20
>> footprint-concious implementor.
>> When talking to some of them last year, they got really nervous about
>> adding even just a single class, especially when
>> this one has little content (e.g., one or two methods). That really
>> bloats the footprint for not much
>> in terms of functionalities.
Yes, and at JavaOne this year Bernd Mathiske really hammered on this
topic. But there seem to be more fundamental issues with CLDC and I
wonder if it needs to "grow into" exposure of isolate APIs when the
security model is more clear and invocation of these APIs can be via
Java (or maybe some CLDC impls have their launcher code implemented in
Java now, so this evolution has already started?)
-Pete