[SAGA-RG] missing(?) method reporting last modification time

Andre Merzky andre at merzky.net
Thu Jun 4 15:47:04 CDT 2009


Dear Sylvain,

Quoting [Sylvain Reynaud] (Jun 04 2009):
> 
> SAGA Job Management:
> ===================
> * CPUArchitecture and OperatingSystemType should be scalar (instead of 
> vector) attributes for consistency with JSDL specification.

Good find!  These are indeed errors in the spec, and should
be scalar attributes.  Will fix.


> * page 166 says: "Attributes marked as 'not supported by JSDL' might 
> disappear in future versions of the SAGA API".
>   - Queue: this attribute makes the job description dependent on the 
>     targeted
>     execution site, this information should be put in the URL instead.

Interesting point.  The problem I see is that its hard to
define a standard way on *how* to encode it in the URL, as
each URL component (host, path, query, ...) may already be
interpreted by the backend.

For example, a globus job manager URL may well look like

https://some.remote.host:9443/wsrf/services/ManagedExecutableJobService?65e59770-35e1-11da-8810-a04185b6c7ae

Where would you put the queue?


>   - JobStartTime and JobContact: IMHO, these attributes are not in the 80%
>     of the 80/20 rule, they are not supported by most middlewares, and they
>     can be implemented by the user application.

Those have been included because DRMAA has these, and the
DRMAA folx found them dead useful.  

JobStartTime I expect to get defined in JSDL when they get
started on scheduling (which is not in the near future
AFAIK).  In SAGA, it probably should be move to the resource
management package, when that emerges.

JobContact is a tricky one: it seems dead useful to be able
to specify a custom name to a job, and to identify the job
thus in an easy way, but (a) I have yet to see a backend
which supports it, (b) SAGA does not provide a way to
actually *use* this name, e.g. as jobid, and (c) such a
mapping can trivially be implemented on application level.
I am with you here.  Anyway, I think it is kind of dangerous
to remove stuff from the spec simply because we don't see a
use at the moment.  Not sure how representative we are...


>   - Interactive: although this attribute may not be in the 80% of the 
> 80/20 rule,
>     I think it is usefull and should be kept.

Many of our original use cases had a visualization
background, where interactive jobs are more likely to be
useful than in other fields...


> * job are missing a state "QUEUED" in order to enable timeout on jobs 
> queued for a long time, synchronization with job start, or just because 
> many users want to know if their jobs are running or queued. This can 
> not be done with the job.state_detail attribute because its content is 
> not uniform. As it was said at OGF23, some job services don't have any 
> queue, but I think this is not the usual case.

I don't see why job.state_detail can't help you here: your
SAGA implementation should always be able to bap the
respective backend queue state to something like
'jsaga:queued'.  

The spec says that job_detail SHOULD be formatted as
'model:state', but you seem to have a very valid use case
for defining your own backend model for jsaga.

Reason why I am hesitant to agree with you, despite of the
validity of your use case, is: while defining the spec and
the state model, we tried only to expose those state at the
top level which are the result of a SAGA API call, or can be
left with a SAGA API call.  

There is not saga.job.queue()  or saga::job::unqueue, so
moving Queued on the top state model would break that rule
of thumb.


> SAGA Name Spaces:
> ================
> * add a flag to disable checking existence of entry in constructor and 
> open methods, because the cost for this check is not negligible with 
> some protocols (then subsequent method calls on this object may throw an 
> IncorrectState exception
> if the entry does not exist).

Makes sense.  We could also overload 'Exclusive', which, at
the moment, is only evaluated if 'Create' is specified.  It
has the same semantic meaning so (inversed): if 'Exclusive'
is not specified on 'Create', an existing file is ignored.

Would it make sense to allow Exclusive to be evaluated on
all c'tors and open calls?


> SAGA Session:
> ============
> * An exception should be thrown when several contexts of the session can 
> be used for a specific method call. Else, some files may be created with 
> unexpected owner, some jobs may fail at the end of execution because of 
> unexpected permissions, some accounts may be locked because of too many 
> failed connection attempts.

Uh, this would badly break our use cases!  In our
implementation, you may very well copy a file instance with
http, but read it with ftp, and delete it with nfs!  And we
need the respective contexts for these backends on the same
session...

Yes, results are not completely predictable if multiple
backends can be used, but the user has always the option to
create a specific session with exactly one context attached.

So, that's a tough one.


> * AFAIK, existing SAGA implementations support many technologies and may 
> be used with several grids. Default session is very convenient, but it 
> is not usable when several grids can be accessed, because a single 
> default session for all is not enough. Argument of session constructor 
> could be an identifier (e.g. a grid identifier) instead of a boolean.

Again, you can create a context for a Grid type, and attache
just that one context to a session.  Isn't that what you
need?

I may be missing something here...

Thanks, Andre.


-- 
Nothing is ever easy.


More information about the saga-rg mailing list