On Sat, 5 Mar 2005, Fons Rademakers wrote:
> the old rootd never allowed two or more clients to open the same file
> for writing. We have the following rules:
> A file can only be opened for writing if the file is not already open for
> reading or writing by any other process.
> A file can only be opened for reading if the file is not already open for
> writing (where writing of course includes "update" mode in ROOT parlance).
That's exactly the semantic that is in xrootd.
> To be a full drop in replacement xrootd must be able to support the file
> update mode. I think this could be easily achieved if we allow r/w pools
> where the olbd never will trigger a replication. In such a pool the olbd
> can be used to keep track of the status of a file, if it is open for
> reading, in which case it cannot be opened by another process for writing
> or if a file is open for writing in which case it cannot be opened by
> anybody else.
That's also the semantic in xrootd. When a file is open for reading, any
available node can host the file. If the file is open for writing, only
one r/w node is allowed to host the file. I will tighten these rules to
make sure that a file will not be replicated if it is being hosted by
a r/w node.
I think the problem in xrdcp stemmed from a misunderstanding of what the
"force" option really does. That option exists in both rootd and xrootd
and both have exactly the same semantics (I tried very hard to
duplicate the semantics of rootd in this area).