release notes | Book: 3.2, 4.0, 4.1, 4.2, 5.0, 5.1 (unreleased) | Wiki | Q&A black_bg
Edit me on GitHub

THE MISSING FILES SERVICE

Introduction

When a user requests to read a file that doesn’t exist, the door will respond to the user with the appropriate error message.

There are two use-cases where something more sophisticated is desirable. The first is that dCache should notify one or more external services that it was requested to read a file that doesn’t exist. The second is that dCache will populate the missing file from some external source, allowing the read request to succeed. There may be other examples where it is desirable for dCache to react to failed read attempts.

The MissingFiles service is a dCache component that perform these tasks.
It exists to allow dCache to react in a coordinated fashion to a user’s request to read a file that doesn’t exist. This central service instructs the door to either fail the request or retry (which makes sense only if the file has been fetched from some external source). Currently only the WebDAV door provides this supports interaction with MissingFile service. The interaction is enabled by setting :

   dcache.enable.missing-files = true

The MissingFiles service is pluggable. It takes a list of plugins and instantiates them. These plugins are used to determine how dCache should react when a user attempts to read a missing file. Each plugin is asked in turn what to do until a plugin replies with a terminating answer or the list of plugins is exhausted. A plugin replies saying to fail the request, to retry the request or to ask the next plugin in the chain. If the last plugin defers the request then then the MissingFiles service will instruct the door to fail the request.

Setting up

To instantiate MissignFiles service the following line needs to be added to your layout file.

   ..
   [<domainName>/missing-files]
   ..

Additionally the service must be enabled:

   dcache.enable.missing-files = true

The behavior of MissignFiles service is determined by plugins that need to be specified as comma separated names:

   missing-files.plugins =

Currently no plugins are available and MissingFiles service simply instructs the door to fail the request.