Hi Andy, (Artem, Jean-Yves, Wilko, Jerome, ....)

  It is interesting as this question also came up today in talking to the
Arda guys (CC-d). Given that Jean-Yves also got into a funny situation we 
should probably be more explicit about which types of systems are currently 
supported. The following is my understanding of the current situation. Please 
comment and then I'll stick it visibly off the xrootd webpage and/or add
the "simple examples" style documentation...

  Currently supported:

  (a) xrootd/olbd (ro) + mps + MSS

      - xrootd/olbd provides read-only access to files across multiple servers
      - new files added be "put" into MSS with whatever external mechanism
        is desirable, at which point the xrootd/olbd read-only system can
        see and serve them. The "put" can also drop the file onto a disk (in
        addition to putting it into MSS) if it likes.
      - no support for file updates
      - the MSS catalog is the ultimate list of files available in the
        system and must be checked by whatever mechanism adds new files
        to make sure a particular doesn't exist (and isn't being updated)
      - The simplest mechanism for replication of files is simply to restage
        from MSS (although others which copy between servers can be plugged 
        in if desired)
      - mps scripts provide basic mechanism for managing/purging the disk 
      - This particular solution covers a reasonable portion of the necessary
        functionality for HEP
      - system running at SLAC, CCIn2p3, RAL and setup for testing at Cornell

  (b) xrootd/olbd (ro), no MSS backend

      - xrootd/olbd provides read-only access to files across multiple servers
      - With respect to NFS or rootd, the advantage here is that the olbd
        system provides a means of finding all files across many servers
        via a single entry point (the redirector) and w/o a heavyweight 
      - if a server goes down, files on that server become unavailable unless:
         - there is still a replica on a server which is still up
         - some other MSS-like or the proxy mechanism is used to contact
           another xrootd system out in the world and find/access the file
      - new files can be added to the system simply by dropping them on
        one of the disks
      - file "update" functionality not really supported (unless user arranges
        by hand to overwrite all replicas on the disks via non-xrootd 
      - internal replication for load can be triggered by xrootd/olbd, but 
        requires a backend server-to-server copy plugin (which could be
        xrootd/olbd/xrdcp itself, but has the obvious issues if one copies
        the file from the already too-loaded server to the less loaded one)
      - trivial system for small sites to setup just to serve their event
        data (background triggers, pileup events, conditions, ....)
      - used at CNAF, FZK plus a bunch of university sites

  (c) xrootd/olbd (r/w), no MSS backend

      - this is like the BaBar skim output buffer as used since last fall
        (which we use to write temporary output from individual jobs before
         a "merge" process merges many jobs' output for eventual "publishing"
         for analysis users)
      - all files should be read/written via the xrootd interface
      - if no replication mechanism is deployed (and no servers are down)
        no problems with either update or write
      - useful "temporary" output buffer for production activities before
        file is "put" into system like (a) above 
      - used at SLAC (although BaBar production skimming may still need to 
        remove a few workarounds it was using at the beginning)

  Proposed additional system:

  (d) xrootd/olbd (ro or r/w) + SRM backend

      - new files can be added either via the xrootd interface (if r/w) or 
        the SRM one 
         - when an xrootd (configured for r/w) creates a new file it must 
           ask/tell SRM after selecting a data server
         - when SRM adds a new file to the disk cache (or underlying MSS) 
           xrootd can just discover it as in (a) above
      - files can be updated via either interface
         - when xrootd updates a file, it must tell SRM to allow internal 
           replicas to be removed
         - when SRM updates a file it must tell xrootd to invalidate that 
           entry in its redirector cache (and SRM must update all replicas)
      - files can be _read_ via xrootd with _no_ communication necessary 
        between xrootd/olbd and SRM if file is on disk
      - files can be _read_ via SRM with _no_ communication necessary 
        between xrootd/olbd and SRM 
      - files can be _read_ via xrootd with a mssgwcmd-style communication
        with SRM if file is not currently on disk (and MSS exists)
      - xrootd/olbd decides when files should be replicated and chooses a
        server based on load info and free space info from SRM, SRM on the 
        back end arranges for the replication (using whatever mechanism it 
        likes, e.g.  restaging from MSS or disk-to-disk copy)
      - while (a) can be used for most of the bulk data in HEP, this solution
        has some advantages for some methods of managing user data, etc. 

  Anything I've missed or gotten wrong?


On Wed, Mar 02, 2005 at 12:10:47PM -0800, Andrew Hanushevsky wrote:
> Hi JY,
> Hmmm, it works out in practice that checking for the file every time in
> HPSS significantly slows down the open process. That also would mean that
> if HPSS is down, the disk cache becomes inaccessible since xrootd
> can't check the hpss copy. Something we've decided to avoid here for
> robustness reasons (there is already an option to check during file
> creation).
> The real problem here is that the person is using a backdoor to modify
> the file. Had the user modified the file on the disk cache and let it
> migrate back down, there would not be a problem. Using backdoors opens
> a whole range of problems, only one of which the user experienced.
> I'm not opposed to putting in an option to do the check but I think
> serious consideration needs to be given whether this is *really* the
> mode of operation you want or will be happy with.
> Andy
> On Wed, 2 Mar 2005, Jean-Yves Nief wrote:
> > hello all,
> >
> >           one of the D0 user accessing files via xrootd encountered the
> > following issue: after having accessed a file via xrootd (so after being
> > staged from the "master" copy stored in HPSS), he modified the master
> > copy in HPSS and wanted to access the modified file via xrootd: but as
> > the old version of the file was already on the disk cache, no staging
> > occured of course (but that is the expected behavior obviously) and he
> > grabbed the old one version, which is not what he wanted. Well as an
> > emergency solution and as it was the first time it happened, I've
> > deleted the old version on the disk cache so he could proceed.
> > However, I think it would be nice to have some control on the validity
> > of the cache: one solution would be to add the following test: in case
> > the file is already in the cache, compare the creation time on the cache
> > disk (t1) with the last modified time of the file stored in HPSS (t2):
> > if t1<t2 then restage the file.
> > it will be a very small overhead to the mechanism, each time a file is
> > accessed: it have just to issue a "statx" request to the MSS.
> > or maybe there is a more simple solution.
> > cheers,
> > JY
> >
> >

Peter Elmer     E-mail: [log in to unmask]      Phone: +41 (22) 767-4644
Address: CERN Division PPE, Bat. 32 2C-14, CH-1211 Geneva 23, Switzerland