[jsdl-wg] JSDL: Updates

Donal K. Fellows donal.k.fellows at manchester.ac.uk
Wed May 4 05:55:17 CDT 2005


Ali Anjomshoaa wrote:
> Remember, this week's the big push. Next week we're closing down the
> issues for v1.0. PLEASE ALL READ THE SPEC. Many thanks in advance.

What follows is a discussion of agenda issues 11, 12 and 14. If anyone
has any problems with my suggestion, drop me a line ASAP. Otherwise I'll
write it up into a set of modifications to the spec later this week.

The major issues left (that I'm at all involved with, that is) are to do
with the coupling of filesystems to the components of POSIXApplication.
We need to get this:
   a) done (without a mechanism, we can't connect the resource
      information relating to the filesystem without hard-coding the
      location of files, and that forces jsdl documents to be
      non-relocatable)
   b) correct (well duh!)
   c) comprehensible (if we come up with too complicated a solution,
      people are going to have trouble implementing it and that will hurt
      adoption)

The following sub-elements of POSIXApplication need to be optionally
related to a (virtual) filesystem:

   Executable
   Argument
   Input
   Output
   Error
   WorkingDirectory
   Environment

The relation of an element to a filesystem should be done by
interpreting the element's contents as a filename relative to the root
of the filesystem (which amounts to a simple prefixing operation). The
interpretation should apply exactly when a filesystemName attribute is
present on the element. When no filesystem is supplied, the element
should not be interpreted as relative to anything at the JSDL processing
level (leaving the underlying system free to interpret it however it
wants; e.g. looking up on the PATH if it is an Executable, passing
directly to the program if it is an Argument or Environment,
interpreting as a file/dir relative to the current WD for the others).

[EXAMPLE]
I could specify the location of my mailbox to be relative to my home
directory like this:

   <jsdl-posix:Environment name="MAIL" filesystemName="HOME">
       mailboxes/INBOX
   </jsdl-posix:Environment>

This would (on one particular system) set the MAIL environment variable
to /home/donal/mailboxes/INBOX
[END EXAMPLE]

As a side effect, it becomes possible to drop the clause from the
FileSystem/MountPoint element that talks about environment variables
because I could do this to set the SCRATCH environment variable to the
root of the SCRATCH filesystem:

   <jsdl-posix:Environment name="SCRATCH" filesystemName="SCRATCH"/>

All that remains to be done is define a default set of filesystems. Each
of these, unless the user uses an explicit FileSystem element, should be
declared like this:

   <FileSystem name="HOME">
     <Description>
       The user's home directory.
     </Description>
     <FileSystemType> normal </FileSystemType>
   </FileSystem>

   <FileSystem name="ROOT">
     <Description>
       The root of the main system filesystem. Not safe to assume that it
       is writeable.
     </Description>
     <FileSystemType> normal </FileSystemType>
   </FileSystem>

   <FileSystem name="SCRATCH">
     <Description>
       Temporary space that persists some time after the job completes
       and which is capable of taking relatively large files.
     </Description>
     <FileSystemType> spool </FileSystemType>
   </FileSystem>

   <FileSystem name="TMP">
     <Description>
       Temporary space that does not necessarily persist after the job
       terminates and which might not be shared between resources, but
       which will be fast.
     </Description>
     <FileSystemType> tmp </FileSystemType>
   </FileSystem>

Notes: None of these have any space, mount-point or mount-source
constraints. We're just establishing the general existence of the
filesystems. They may in practice be on the same physical filesystem
(and I would actually expect that to be the case with many uses of
SCRATCH and TMP, of course, though I have a requirement for having them
separate so that I can model our supercomputer cluster configuration).
The actual consuming systems should in-fact have defined locations for
these and reject a document if it demands that they be a value which
clashes.

If people prefer SPOOL to SCRATCH as a name, that's cool with me. :^)

The names HOME, ROOT, SCRATCH, TMP do not pollute the environment
variable space in my scheme (though HOME and TMP are quite possibly set
already). They have to be explicitly coupled and the only space that is
actually polluted is the space of filesystem names, which is a concept
that is internal to JSDL.

In schema terms, we'd just be adding a few attributes to a few elements.

(Question: should the "tmp" filesystem type be "temporary"?)
(Spec Bug: FileSystem examples do not match pseudoschema; names are
NCName not QName or anyURI).
(Question: should DataStaging/FileSystemName be QName or NCName?)

Donal.





More information about the jsdl-wg mailing list