Re: Depending on policy [was Re: Implementation of take (multiple) in Jini starter kit]

Chee Mun Foong <[email protected]>
Newsgroups gmane.comp.java.sun.javaspaces
Message-ID <[email protected]>
John,
Previously, we misunderstood the semantic of take(templates,
transaction,0,maxEntries) as

"take maxEntries matching entries in space"

instead of

"take maxEntries matching entries in space, except when your
javaspace instance configuration dictates a smaller bounding number"

Now that we realized such stipulation with the function, writing a
loop to ensure thorough "takes" will be sensible. The only possible
danger of the semantic is that if another remote process is writing
matching entries at a similar or higher rate of the taking, the loop
can be infinite.

On Aug 16, 2006, at 9:00 AM, John McClain - Sun Microsystems, Inc.
wrote:

> James Grahn wrote:
>> John McClain - Sun Microsystems, Inc. wrote:
>>>> Having said that, it [take multiple's option to remove fewer
>>>> entries
>>>> than asked for] does cause a problem for clients that know there
>>>> are 10 entries in the space and they would like to be able to
>>>> get them
>>>> all out in one atomic call w/o bothering with a transaction.
>>>
>>> This brings up a general question that I would be interested to hear
>>> people's opinions on.  The spec can't say "10 is safe, but 11
>>> might not be (or isn't)" but individual implementation often will.
>>> Indeed with Outrigger in its default configuration it is safe to
>>> pass 10
>>> for maxEntries and if there are 10 entries in the space (and no
>>> contention, etc., etc.) one take call will atomically remove all 10
>>> entries (or remove none) w/o having to resort to loops and
>>> transactions.
>>>
>>> The question is how do people feel about depending on such
>>> behavior? Do
>>> you feel better about if you look at the other implementations
>>> and find
>>> they support similar policies (possibly after configuration)?
>>>
>>> Other places this comes up in the spaces world is support for
>>> arbitrarily long leases (do I assume my request for a 2 day lease
>>> will
>>> be granted, or do I need to be prepared to renew the lease) and
>>> how the
>>> space picks what entry(ies) to return from a query when there is
>>> more
>>> than one possibility (do I code assuming the space will be mostly
>>> FIFO?)
>>
>> Could you perhaps rephrase the question?
>
> I can try. By there nature a specifications has to leave
> implementations
> some wiggle room. Part of this is because you want to allow different
> implementation to make different trade-offs and part of this is
> because
> often there is no useful place to draw a line. In practice all
> implementation will provide a higher level of service than the minimum
> required by the specification. The question is how comfortable do
> people
> feel writing code that depends on these "higher levels of service"
> that
> aren't guaranteed by the specification.
>
> One example from JavaSpaces is how many entries to return from take
> multiple. The JavaSpace05 spec say if you can take multiple and
> there is
> one or more matching entries you are guaranteed to get at least one
> back
> (modulo contention from other clients), but the spec makes no
> requirement around returning more than one entry.
>
> The question then becomes if you are writing a JavaSpace05 client
> application and you know there are two entries in the space and you
> want
> them both removed do you write :
>
>    while (true) {
>        Collection c = space.take(templates, null, 0, 2);
>        if (c.isEmpty())
>            break;
>    }
>
>    or
>
>    space.take(templates, null, 0 2);
>
> Option one will work with any JavaSpace05 implementation, option two
> will only work with some, but is a lot easier, and it seems likely
> that
> you could configure most (all?) spaces implementations to work with
> option two so what's the harm? (he asked in a devil's advocate sort of
> way.) Would people feel comfortable writing code like option two even
> though it was dependent on behavior not guaranteed by the spec?
>
> --
> BTW, if you want to reply to this message, please direct your reply
> to the list, thanks
>
> John McClain                                    [email protected]
> Sun Microsystems, Inc.
> Burlington, MA
>
> And it is that way today. We are tricked by hope into starting
> companies, beginning books, immigrating to this country and investing
> in telecom networks. The challenges turn out to be tougher than we
> imagined. Our excessive optimism is exposed. New skills are demanded.
> But nothing important was ever begun in a prudential frame of mind.
>
>         - David Brooks
>
> ======================================================================
> =====
> To unsubscribe, send email to [email protected] and include in
> the body
> of the message "signoff JAVASPACES-USERS".  For general help, send
> email to
> [email protected] and include in the body of the message "help".
>
> To view past JAVASPACES-USERS postings, please see:
> http://archives.java.sun.com/archives/javaspaces-users.html
>

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff JAVASPACES-USERS".  For general help, send email to
[email protected] and include in the body of the message "help".

To view past JAVASPACES-USERS postings, please see:
http://archives.java.sun.com/archives/javaspaces-users.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.