Whenever dCache decides to copy a file from disk to
tertiary storage a user-provided executable
which can be either
a script or a binary is automatically started on the pool where
the file is located. That executable
is expected to write the
file into the Backend Storage System and to return a URI,
uniquely identifying the file within that storage system. The
format of the URI as well as the arguments to the executable
,
are described later in this document. The unique part of the URI
can either be provided by the storage element, in return of the
STORE FILE
operation, or can be taken from dCache. A
non-error return code from the executable
lets dCache assume
that the file has been successfully stored and, depending on the
properties of the file, dCache can decide to remove the disk
copy if space is running short on that pool. On a non-zero
return from the executable
, the file doesn’t change its state
and the operation is retried or an error flag is set on the
file, depending on the error return code from
the executable
.
If dCache needs to restore a file to disk the same
executable
is launched with a different set of arguments,
including the URI, provided when the file was written to
tape. It is in the responsibility of the executable
to fetch
the file back from tape based on the provided URI and to return
0
if the FETCH FILE
operation was successful
or non-zero otherwise. In case of a failure the pool retries
the operation or dCache decides to fetch the file from tape
using a different pool.