[DRMAA-WG] IDL issues
Peter Tröger
peter at troeger.eu
Wed Jun 22 02:52:47 CDT 2011
See inline.
Best,
Peter.
Am 22.06.2011 um 09:31 schrieb Daniel Gruber:
> see inline
>
> Cheers,
> Daniel
>
> Am 22.06.2011 um 00:05 schrieb Andre Merzky:
>
>> 2011/6/21 Peter Tröger <peter at troeger.eu>:
>>> Hi,
> ...
>>>
>>
>>>> - I think the following is asymmetric. There is likely a reason,
>>>> but I am not sure I understand it:
>>>>
>>>> - job session: create (name, contact), open (name), close
>>>> (session), destroy (name)
>>>> - reserv. session: create (name, contact), open (name), close
>>>> (session), destroy (name)
>>>> - monit. session: create ( contact), close
>>>> (session)
>>>>
>>>> From the above, it seems like create/close are pairs? I would
>>>> naively expect the following
>>>> pairs: open/close and create/destroy, as usual - what is the
>>>> rationale?
>>>
>>> I don't get your point. Creation returns a new persistent XXXsession
>>> instance. Open allows you to re-access the persistent existing session.
>>> Close is for cleanup after both create and open. Destroy throws away the
>>> persistent information, and therefore does not demand an open session
>>> instance.
>>
>> Why not close(name), so that all ops work with name as arg? Would be
>> more symmetric.
>
> Yeah, but you make explicit that only with a valid handle (i.e. with an
> previously opened/created session) you are able to close it. The operation
> itself works on a (existing) session not on a string.
Exactly.
> My question is: In a OO language binding, wouldn't it be more natural
> to have this operation part of the Session itself? JobSesssion xy ... = ...
> JobSession.close()? Wouldn't the IDL spec now allow this (it should)?
> In case of a close("name") it definitely would not be possible.
Close is paired with the others at the same location, since this allows a more natural mapping for C.
OO languages typically have their own destruction methods, which might implicitely act as close operation.
The language binding is free to define that - and we might mention this in the text.
>>>> Why is the Monitoring session handled differently, i.e. has no
>>>> name/open/destroy?
>>>
>>> Monitoring session have no persistency, so they need no name for opening,
>>> and no destruction.
>>
>> If something has a create, I would expect it to have a destroy, too.
>> That might just be me, but semantically those two go together...
>>
>> Anyway, your explanation helps!
>
> It is a runtime object, IMHO even a singleton.
Sounds reasonable. Is there a reason to open multiple monitoring session ? I don't think so ...
>>>> - JobWaitStarted/Terminated: The function returns always a Job
>>>> object, in order to allow chaining,
>>>> e.g. job.wait(JobStatus.RUNNING).hold(). The session-level functions
>>>>
>>>> I find that strange and inconsistent - chaining is not supported
>>>> elsewhere AFAICS, why here?
>>>> What is the advantage over 'job.wait(JobStatus.RUNNING);
>>>> job.hold();'? this has exactly the same race conditions...
>>>
>>> Chaining was raised as important thing only for the wait functions. I am too
>>> lazy to search the minutes for this, but it is handy in OO languages. We
>>> didn't spend deeper thoughts on supporting this elsewhere.
>>
>> You may want to make sure that chaining was *not* introduced to
>> prevent race conditions - because it does not.
It wasn't. I am sure.
>> Proposal: don't do chaining, it makes error handling a nightmare - for
>> almost all languages really, but in particular so for exception-less
>> languages.
I agree, but the Java people love that *so* much. It is a nightmare for the error handling in the application, so if they use it, they have to deal with the consequences.
>>>> - sessionManager.drmaaVersion: this seems to return the
>>>> implementation version, not the
>>>> DRMAA spec version (i.e. 2.0). I think this is useless without
>>>> also reporting the
>>>> drmaaName, i.e. the implementation name. Otherwise the user may
>>>> report to you that
>>>> she is using version 4.5, but what implementation?? ;-)
>>>
>>> You get the DRMS type, this is your DRMAA implementation. I propose that
>>> there will be no two DRMAA implementations for the same DRM system in the
>>> same language.
>>
>> Woah - you MAY be able to ensure that for the current WG constituency,
>> but you are writing a *standard*! You expect there will only *one*
>> implementation using fork, for example? Only one implementation for
>> PBS? You can never ensure this, and that contradicts the idea of an
>> standard, really...
>>
>> The potentially missing API call is a minor point really, but your
>> argument does not hold water ;-)
>
> I would be fine with adding drmaaName, where implementors can add
> their vendor/organization name inside. Just for the case if...
Sounds reasonable, I add it to the list.
>>>> - what is the use of the sessionManager interface? It cannot be
>>>> created/destroyed, so is likely a singleton?
>>>> This however is not explicit in the spec. A sessionManager does
>>>> not seem to have state (apart from the new
>>>> addition of a monitoring callback), but a stateless singleton is
>>>> rather useless? All methods can easily be
>>>> provided as free functions - is a language binding allowed to do that?
>>>
>>> Yes, it's a singleton.
>>
>> This should be noted in the spec (unless I missed it).
Ok, noted.
>>
>>
>>> Yes, you can do free functions in the language
>>> binding. IDL does not support that.
>>
>> Ok, thanks.
>>
>>
>> Cheers, Andre.
>>
>>
>> --
>> Nothing is ever easy...
>> --
>> drmaa-wg mailing list
>> drmaa-wg at ogf.org
>> http://www.ogf.org/mailman/listinfo/drmaa-wg
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/drmaa-wg/attachments/20110622/86c107b4/attachment.html
More information about the drmaa-wg
mailing list