Executive summary

Highlights from this release:

  • major overhaul of admin interface,

  • robust internal delete and flush notification,

  • info-provider generates timestamps on published objects,

  • pool migration module maintains last-access-time,

  • pool implements strict LRU garbage collection,

  • improved shutdown in space-manager,

  • reserving space from a linkgroup may be authorised by GID,

  • better scalability in FTP doors,

  • new admin commands for nfs service,

  • recording of FTS-specific information,

  • xrootd doors support the protocol’s asynchronous open.

  • support for custom HTTP response headers


  • Java 8 is required for running dCache 2.13. Both the Oracle JDK and OpenJDK are supported.

  • The chimera schema is updated upon upgrade.

  • The admin shell has been reimplemented and the user interface has changed.

  • The broadcast service has been dropped and needs to be removed from the layout file.

  • The dir service has been dropped and needs to be removed from the layout file.

  • The loginbroker service has been dropped and needs to be removed from the layout file.

  • Support for JMS brokers (ActiveMQ and OpenMQ) has been removed.

  • Support for Terracotta load balancing has been removed.

  • The httpd service reads certificates from /etc/grid-security and no longer uses Java Key Store files.

  • The dcache import commands have been removed.

  • pnfsmanager and cleaner services need to be configured according to the presence of a replica or spacemanager service.

  • dCache now defaults to expect a spacemanager service. If not present, several services need to be configured not to expect a spacemanager.

  • The default cell name of the spacemanager service was changed from SrmSpaceManager to SpaceManager.

  • The default database names and owners for all services have changed.

  • The pool Berkeley DB meta data format has changed. No change is required upon upgrading, but downgrading is not possible without explicitly converting the format.

Release 2.13.61


While migration move tasks on pools were working correctly, for migration info command an error occurred, that the current user (root) wasn’t allowed to execute anything (due to missing ACLs). This is now fixed.

Changelog 2.13.60..2.13.61

[maven-release-plugin] prepare release 2.13.61
admin: Fix Inconsistent ACL enforcement, RT 9207
[maven-release-plugin] prepare for next development iteration

Release 2.13.60


The “Disk Space Usage” webpage (/usageInfo) contains a table showing information about each pool in the dCache cluster. The “Layout” column showed the capacity usage graphically, with different colours showing how much of that pool’s capacity is being used for different tasks. This release fixes the Layout heading to describe a previously undocumented colour.

Changelog 2.13.59..2.13.60

[maven-release-plugin] prepare release 2.13.60
httpd: Fixed table headers in usageInfo
[maven-release-plugin] prepare for next development iteration

Release 2.13.59


A recent update, commit 5abc0e1c, improved the behaviour of the Milton WebDAV libraries if an IOException occurs during an upload. That patch, unfortunately, did not address all issues, and when non-spec-conformant clients are used against dCache, stacktraces can be triggered.

This patch corrects that behaviour. Also, in case of errors, the error code returned in case of any problems was changed from 400 to 500, which should signal cliens that they are free to retry the transfer after a timeout.

Changelog 2.13.58..2.13.59

[maven-release-plugin] prepare release 2.13.59
webdav: make Milton work-around more robust
[maven-release-plugin] prepare for next development iteration

Release 2.13.58

Changes affecting multiple services

The version of the PostgreSQL driver used by dCache internally was brought up to 9.4.1212. This fixes the issue described in liquibase bug 2939.


The system-test module, used for demonstration or testing purposes, comes with a built-in X.509 infrastructure. With this release, expired certificates are replaced by new ones.

Changelog 2.13.57..2.13.58

[maven-release-plugin] prepare release 2.13.58
system-test: update disposable-CA generated credentials
postgresql driver: update version to 9.4.1212
[maven-release-plugin] prepare for next development iteration

Release 2.13.57


There was an issue with a symbolic link to a directory where destination where destination contained trailing slash. This is now fixed.

Changelog 2.13.56..2.13.57

[maven-release-plugin] prepare release 2.13.57
fixed changelog XML
[maven-release-plugin] prepare for next development iteration
chimera : handle empty paths elements in path2inode stored procedure

Release 2.13.56


The current release fixed database query for storing multiple checksums for a file.


The Socket read method may return zero to indicate that no bytes were read. Although this is not an error, such occurances will result in a transfer failing.

This is now fixed.

Changelog 2.13.55..2.13.56

[maven-release-plugin] prepare release 2.13.56
chimera: fixed database query for storing multiple checksums for a file.
ftp: do not fail proxy transfer if read returns zero bytes
[maven-release-plugin] prepare for next development iteration

Release 2.13.55


The current release added implementation of MLSC. As a result Globus is able to query the contents of dCache directories using FTP and without creating additional TCP connections.

Changelog 2.13.54..2.13.55

[maven-release-plugin] prepare release 2.13.55
ftp: implement the MLSC command
[maven-release-plugin] prepare for next development iteration

Release 2.13.54


The current release improves compatibility between dCache FTP client and Globus GridFTP server.


During an ATLAS stress-test of tape recalls, it was discovered that various sites had relatively short request lifetimes. However, the SRM spec provides the opportunity for the server to inform the client (FTS, in this case) of what lifetime a request actually has. The current release includes the requests remaining lifetime in the response from the server.

The current release improves the documentation to help Admins to have a better understanding how to configure dCache correctly.

Changelog 2.13.53..2.13.54

[maven-release-plugin] prepare release 2.13.54
ftp: add support for paths relative to home directory
ftp: Add support for SITE WHOAMI command
ftp: update parsing of CLIENTINFO command
srm: include remaining request lifetime in various responses
srm: update srm request.*.lifetime configuration properties documentation
ftp: modify facts describing namespace ownership
ftp: add support for SITE TASKID command
ftp: add initial support for checksum performance markers
ftp: show SIZE facts for directories
ftp: add support in OPTS RETR for specifying performance marker frequency
[maven-release-plugin] prepare for next development iteration

Release 2.13.53


In https://github.com/xrootd/xrootd/issues/459, it became apparent that dCache could improve xrdcp compatibility by sending checksum information in lower case. This release contains this change, which should improve xrootd operations.

Changelog 2.13.52..2.13.53

[maven-release-plugin] prepare release 2.13.53
xrootd : use lower case for checksum algorithm names when replying to checksum queries.
[maven-release-plugin] prepare for next development iteration

Release 2.13.52


The SRM code has been made more robust against races between file deletions and copies.


The ‘system-test’ script was updated to ensure anonymous dcap tests succeed.

Changelog 2.13.51..2.13.52

[maven-release-plugin] prepare release 2.13.52
systemtest: allow anonymous dcap activity
srm: fix recovery procedure in internal copy if source is deleted
[maven-release-plugin] prepare for next development iteration

Release 2.13.51


The current release updated to jglobus library to fix RFC proxy support.

Changelog 2.13.50..2.13.51

[maven-release-plugin] prepare release 2.13.51
pom: update jglobus2 to fix RFC proxy support
[maven-release-plugin] prepare for next development iteration

Release 2.13.50


Users reported that they wanted to see space freed up by cleaner processes to be reported as free as soon as possible. This patch sends notifications about freed up space more often, resulting in quicker status updates.


A problem was fixed that could cause the csm check to fail on pools containing broken files.

Changelog 2.13.49..2.13.50

[maven-release-plugin] prepare release 2.13.50
cleaner: Send notification more often
pool: Fix csm check command in the pressence of broken files
[maven-release-plugin] prepare for next development iteration

Release 2.13.49


Connections of non-DCAP clients to a dCache no longer result in stack-traces in the logs.


PoolManager was updated to properly handle the dcache.authz.staging.pep and dcache.authz.staging parameters. This allows to enable stage protection properly.

Changelog 2.13.48..2.13.49

[maven-release-plugin] prepare release 2.13.49
dcap: don’t create stack-trace if tunnel fails due to bad client
PoolManager : stage protection, fix error in stage.fragment
[maven-release-plugin] prepare for next development iteration

Release 2.13.48

Changes affecting multiple services

Internal notification processing between cleaners and Pin Manager, Replica Manager and Space Manager was improved and runs quicker now.


If a dCache instance was shut down while the billing service was in the middle of a refresh, an exception was logged and shutdown was delayed. A change in exception handling fixes this rare scenario, ensuring a quick shutdown and no unnecessary log entries.


This release makes it possible for admins to ban outdated, problematic versions of dcap clients. Some old client versions contain a bug that causes the client to make unsatisfiable requests to a pool with no way for dCache to reject the request: the client will simply retry.

The client version limits are exposed using the new configuration property dcap.limits.client-version. The default is to allow all dcap client versions, unchanged from the previous behaviour.

This release fixes a regression through which Kerberos dcap would not work for host principals containing a ‘-’ character. GSI dcap was not affected.


Fixed a bug in the lb set tags command in doors that prevented setting an empty list of tags.


A bug that caused non-critical stack traces to be logged on the pool after stage or deletion failure from nearline storage has been fixed.

Changelog 2.13.47..2.13.48

[maven-release-plugin] prepare release 2.13.48
dcap: expose dcap client version limit
dcap: fix Kerberos dcap if principal contains a ‘-’
dcap: fix regression in handling old version
pool: Suppress two stack traces in nearline storage handling
cleaner: Send notifications concurrently
billing: fix stacktrace and slow shutdown if in refresh
doors: Allow setting an empty list of login broker tags
[maven-release-plugin] prepare for next development iteration

Release 2.13.47


Fixed a bug in which information on stage pool and number of attempts were lost when retrying pool selection requests.

Changelog 2.13.46..2.13.47

[maven-release-plugin] prepare release 2.13.47
doors: Ensure that pool selection context survives between retries
[maven-release-plugin] prepare for next development iteration

Release 2.13.46


Fixed a problem in the output of the dcache billing command using JSON or YAML when the billing format includes a custom date format.


Add support for the dcap client supplying additional version information.


Fix explain login and test login commands so they are able to test logging in with username and password.

Add examples to explain login command help. Our thanks to Onno Zweers for this change.


Fix regression in the transfers.txt output format.

Update the transfers.html page so it no longer includes <unknown> for default/unknown protocols. With this version of dCache, these are represented by a ? character. The webadmin page is updated to give consistent output.


Fix the billing indexer to ignore the format string, if present.

Changelog 2.13.45..2.13.46

[maven-release-plugin] prepare release 2.13.46
Active Transfers: substitute ? for <unknown> on html pages
common: add support for UserNamePrincipal as user:<name>
Added ‘explain login’ examples to help text in Gplazma2LoginStrategy.java
billing: Strip format string from attribute name
transferObserverV1: replace Args with Joiner to construct transfers.txt linesMotivation:
billing: Make billing indexer work with custom format strings
[maven-release-plugin] prepare for next development iteration
dcap: add support for clients presenting more version metadata

Release 2.13.45


If dCache’s internal ShellApplication framework detects a critical behaviour that might indicate a bug in the application, error messages now include an explicit request to send a mail to the developers and more relevant information for assessing and reproducing the situation.


This release fixes a small bug in GPlazma which inappropriately tried to handle non-DN subjects in x509 certificates. These will usually fail in gPlazma anyway, but the reported error was confusing.


Handling of DNS names without trailing dots in certificates has been made more robust and universal.

Changelog 2.13.44..2.13.45

[maven-release-plugin] prepare release 2.13.45
commons: log bugs with stack-trace and instructions
gplazma2-xacml: remove erroneous creation of placeholder extensions
[maven-release-plugin] prepare for next development iteration
srm: remove trailing dot from reverse lookup result

Release 2.13.44


In rare cases, an interrupt needed to cleanly shut down the location manager connector would not arrive. This issue was corrected, ensuring more reliable behaviour on cell shutdown.

Fixed a problem in which threads could inappropriately be created as daemon threads, causing problems in killing those threads when the cell shuts down.

Changelog 2.13.43..2.13.44

[maven-release-plugin] prepare release 2.13.44
cells: Fix lost interrupt exception
cells: Ensure that newly created threads are non-daemon normal priority threads
[maven-release-plugin] prepare for next development iteration

Release 2.13.43


The \s admin command uses the toString method to serialise the requested so that the remote cell may correctly parse it. This did not always work: ‘=’ characters in arguments were escaped but not unescaped; arguments that start with a ‘-’ character were not escaped; empty words were lost. In the current release this is fixed and \s command works as expected.


The current release fixes a regression in which the exit code of check-config would always be zero even when errors were detected.

Changelog 2.13.42..2.13.43

[maven-release-plugin] prepare release 2.13.43
dcache: Generate proper exit code for check-config command
commons: fix Args string parsing and toString method
[maven-release-plugin] prepare for next development iteration

Release 2.13.42


Alarm email notifications are now sent only on the first occurrence of given alarm (i.e., for that alarm instance’s unique ID).

If an alarm has been closed and not deleted, but then occurs again, the counter for receiving that alarm is now reset to 1, in order to treat this as a new (set of) occurrences, and to guarantee a new notification will be sent.


Due to an implementation detail in a library used for the webadmin pages, filtering tables was a bit unintuitive until now: A filter that was set in a certain table column would reappear on tables in other browser windows if they had similar columns.

This behaviour was corrected, and tables on different pages exposed simultaneously in different browser tabs are now filtered independently. However, the fix also has the side effect that now with page reloads and form submissions the filters are cleared. Any commands, however, will always be issued correctly.

Filtering rows in webadmin tables could occasionally lead to unintuitive behaviour with regard to selections: Filtering a table and hiding rows may be included in a “select all” or “deselect all” operation. This was fixed, and selection/Deselection of hidden rows is now prevented.

Issues with filter boxes disappearing or filters resetting have been solved by disabling AJAX auto refresh for the affected pages.

Changelog 2.13.41..2.13.42

[maven-release-plugin] prepare release 2.13.42
dcache-webadmin: synchronize client-side filtering with server-side selection of rows on pages using picnet table filters
alarms: reset count history on reopened alarm
dcache-webadmin: disable saving table filter settings to browser cookies
dcache-webadmin: disable AJAX autorefresh on pages using picnet table filter library
alarms: only send email on first alarm occurrence
[maven-release-plugin] prepare for next development iteration

Release 2.13.41


Chimera occasionally suffered from (operationally irrelevant) IllegalStateExceptions. Those are now avoided.


Doors could get stuck temporarily if a file was deleted during pool selection. This has been fixed, and in such cases, transfers are now aborted properly.

Changelog 2.13.40..2.13.41

[maven-release-plugin] prepare release 2.13.41
doors: Abort transfer if file is deleted during pool selection
chimera: Fix IllegalStateException in inode cache
[maven-release-plugin] prepare for next development iteration

Release 2.13.40


When using the dcache billing command with a non-default date format in the billing file, an unneccessary stack trace was printed. This has been corrected.


The SRM should periodically (by default every 10 minutes) delete obsolete historic data (older than 10 days by default) from the database. For cases where there are problems with that process, error logging and robustness against temporary database problems have been improved.

Changelog 2.13.39..2.13.40

[maven-release-plugin] prepare release 2.13.40
srm: make out-of-date historic data deletion more robust
[maven-release-plugin] prepare for next development iteration
billing: Removing erroneous stack trace output

Release 2.13.39


The Apache Commons FtpClient can issue the LIST command with the non-standard -a option. Which was causing dCache to switch output format from the long (ls -l-like) to the short (ls-like) response. This is fixed now and dCache is more compatible with Apache Commons FtpClient.

Changelog 2.13.38..2.13.39

[maven-release-plugin] prepare release 2.13.39
ftp: improve compatibility with Apache Commons FtpClient
[maven-release-plugin] prepare for next development iteration

Release 2.13.38


If the create command in CellShell fails because of unreadable setup files, it throws an IOException. This was incorrectly reported as a bug. Reporting has been corrected now.

In rare cases, active transfers would show up with an incorrect state in the active transfers page of the admin backend. This was fixed, so that ransfers which are staging from non-DCAP doors are correctly indicated (in yellow) on the active transfers page, instead of showing up as “No Mover found” (in red).


If there is an IOException when trying to read a setup file, the corresponding file name is now listed in the error message.


An issue with PoolManager prevented it from delivering correct cost estimates. This was fixed, resulting in improved estimations of pool load.

Changelog 2.13.37..2.13.38

[maven-release-plugin] prepare release 2.13.38
cells: IOException is not a bug in create command
common: include filename in error message
poolmanager: Fix incorrect correction of pool cost
cells: handle empty string pool value on staging in TransferObserver
[maven-release-plugin] prepare for next development iteration

Release 2.13.37


Log entries that were promoted to alarm status and that show up in the webadmin table can now contain more detailed information.

Changelog 2.13.36..2.13.37

[maven-release-plugin] prepare release 2.13.37
alarms: add ndc info to alarm info
[maven-release-plugin] prepare for next development iteration

Release 2.13.36


Fixed a problem with the gPlazma argus plugin that caused it to fail with a ClassNotFoundException.

Changelog 2.13.35..2.13.36

[maven-release-plugin] prepare release 2.13.36
gplazma2-argus: Update to Argus client 2.2.0 to fix dependency on VOMS library
[maven-release-plugin] prepare for next development iteration

Release 2.13.35


A change to the alarms system improves handling of alarms with unset types.


A race condition in the NFS door that could result in the creation of multiple inconsistent copies of a file being uploaded has been fixed.


When a transfer’s status is queried before the transfer is initiated, which can occasionally happen for queued requests, Exceptions were logged. This behaviour has now been corrected, providing more robust operation.

Several race conditions in the pool’s migration module are fixed now.

A regression was fixed that caused pools to “leak” movers if those were cancelled while still being queued.


Fixes a compatibility problem with NFS in which space manager would fail with a duplicate key error.


A hint to describe the necessity to include escaping has been added.

The current release fixes issues in which the use of SRM third party copy operations could cause the SRM cell to become unresponsive, possibly even run out of memory.

Changelog 2.13.34..2.13.35

[maven-release-plugin] prepare release 2.13.35
srm: add hint to escape IDs
nfs: Fix race condition in transfer startup
info: fix broken unit-test
srm: Resolve message thead blocking issues with SRM third party copy
spacemanager: Work around for doors resubmitting PoolAcceptFileMessage
pool: Fix several race conditions in migration module
pool: Fix mover leak
pool: avoid NPE when querying status of a 3rd-party HTTP transfer
alarms: fix NPE in type setter
[maven-release-plugin] prepare for next development iteration

Release 2.13.34


The admin door now generates SSH keys to ensure compatibility with OpenSSH 7. Additionally, a new property admin.paths.host-keys was introduced in the admin.properties file, allowing to specify the location of keys.


When a pool’s metadata conversion operations would fail, an error caused a script to report successful conversions. This error has been fixed now.

Changelog 2.13.33..2.13.34

[maven-release-plugin] prepare release 2.13.34
admin: Fix compatibility with OpenSSH 7
script: Do not claim success if meta data conversion failed
[maven-release-plugin] prepare for next development iteration

Release 2.13.33


First observed on Ubuntu Xenial, dCache fails to install on modern Linux distributions due to the short key length of the SSH 1 keys generated in the post install script. This patch removes those keys and their generation code. dCache has been supporting only modern key formats for quite some time now, so this change should not have any impact on users.


When creating movers, some error conditions are expected to occur and dCache is designed to transparently recover from these. Consequently, this patch lowers the log level for the related error messages to reflect that their causes are harmless.

Fixed a staging problem that would lead to failures in nearline COPY operations.


Some race conditions during SRM startup were fixed. Those race conditions could potentially have lead to failures to expire jobs and to wrong job counts in the SRM schedulers.


Until now, trying to access a file for which the client was not authorized would generate a reply with a status code 200 OK, but an empty body, rather than an error page. This patch corrects that behaviour and also improves exception handling for that case.

Changelog 2.13.32..2.13.33

[maven-release-plugin] prepare release 2.13.33
admin: Drop old ssh 1 keys
pool: Lower log level of certain failures to create mover
pool: fix staging for CopyNearlineStorage
webdav: Fix error reporting when client is unauthorized
srm: Fix job expiration during service startup
[maven-release-plugin] prepare for next development iteration

Release 2.13.32


The data used to create the 24 hour billing overviews is aggregated in hourly intervals before creating the plots. However, if there is very high activity on the system during an entire 24 hour period, there have occasionally been timeouts when querying the database for this aggregate data. This patch makes the data aggregation more robust against such situations, resulting in lower latency for histogram generation and no more timeouts.


Previously, attempts to authenticate users against an htpasswd entry that was malformed resulted in a stack trace. This patch modifies the error handling so that only a detailed error message (“Bad entry in file: hash does not start ‘\(1\)’ or ’\(apr1\)”) is logged.

Changelog 2.13.31..2.13.32

[maven-release-plugin] prepare release 2.13.32
(2.13) billing: use in-memory buffer for hourly aggregate data
[maven-release-plugin] prepare for next development iteration
gplazma: don’t generate a stack-trace if htaccess is malformed

Release 2.13.31

Changes affecting multiple services

Fixed an issue with the dcache heap dump command when called with a simple file name as the output path. In this case the dump could in some cases be written to a different directory while the script claimed the dump had failed. The dcache dump heap command has a --force option for cases in which the JVM is unresponsive. This option was ignored for processes not running as root. This is fixed now.


Fixed a problem causing FTP and DCAP per connection instances to subscribe to topics they should not subscribe to. This reduces overhead caused by routing updates.

Fixes a problem during shutdown in which communication tunnels between domains were shut down too early.

Fixed an issue that would cause log messages in which placeholders had not been replaced with actual values.

A bouncing message bug in System cell is fixed.


Setting atime-gap to –1 (default value) should disable file’s last access time updates. Nevertheless, this was not the case and atime update was always enabled. This is fixed now and file’s last access time can be disabled as described in the documentation.


Fixes an issue with pools becoming unresponsive in case of slow DNS reverse lookups.

Fix race condition in request scheduler.

If FTP clients disconnect mid-transfer, pools log a DoorTransferFinished delivery failure as the door is gone. This is fixed now and log messages like Failed to deliver DoorTransferFinishedMessage message are suppressed in pools.

When cancelling a job in a state that doesn’t allow cancellation, an illegal state exception is thrown. This was logged as a bug. This is now fixed.

Pool to pool transfers are supposed to be cancellable. However, due to an implementation issue, migration and rebalance job cancellation could occasionally appear to hang. This is now fixed.


Fixed a bug that caused delivery failures of credential service announcements to be logged. The ls -completed=n command has been observed to fail with SRMInvalidRequestException. This is fixed now and the output format of listing list requests has been changed to match that of other requests.

Changelog 2.13.30..2.13.31

[maven-release-plugin] prepare release 2.13.31
srm: Fix listing of completed list requests
dcache: fix heap dump to simple file names
script: Make dump heap –force work for non-root processes
pool: Fix p2p cancellation
script: Add missing she-bang
srm: Do not expose TURL before request is ready
pool: Don’t log illegal state exception on migration job cancellation as a bug
pool: Fix race condition in request scheduler
pool: Avoid reverse DNS lookup in HTTP mover
billing: additional fixes to insert triggers
pool: Suppress logging of delivery failure of DoorTransferFinished
system-test: update disposable-CA generated credentials
pnfsmanager: fix atime update regression
cells: Fix logging formatting string
cells: Avoid bouncing message on no-route errors in System cell
srm: Suppress message delivery failures for credential service announcements
cells: Fix tunnel shutdown order
cells: Do not subscribe to topics in per-session door instances
[maven-release-plugin] prepare for next development iteration

Release 2.13.30


When accessing a file for reading, the atime value must be updated. Previously, due to an error, the ctime (intended to reflect the time of changes to file attributes) was also changed. This update corrects that problem.


In order to increase the performance of the Billing system, reverse DNS lookups were removed from the code. While this will result in IP addresses representing hosts in the billing file, DNS performance no longer impacts overall system performance.


When representing checksums in the admin interface and configuration files, checksums are now presented in an improved format.


The nearline storage subsystem uses thread pools to manage its workload. Since some tasks are blocking, very high activity can cause these thread pools to grow beyond effective sizes. This may even lead to the pool becoming unresponsive.

This change introduces a new configuration property, pool.limits.nearline-threads, which limits the thread pool size. The default value, 30, is chosen to be sufficient for almost all imaginable use cases while at the same time avoiding potential problems with resource exhaustion.


Due to a timing issue, an initial service announcement in the SRM was sent before any listeners could register for those announcements. Thus, upon startup, a delivery error would be logged. With this patch, sending of the initial message is delayed until after the registration of listeners, and the irrelevant error messages are avoided.

Changelog 2.13.29..2.13.30

[maven-release-plugin] prepare release 2.13.30
common: fix ChecksumType.toString()
http: avoid dns reverse lookup on HttpProtocolInfo#toString()
chimera: do not update ctime on atime only attribute update
[maven-release-plugin] prepare for next development iteration
srm: Delay announcing credential service after cell start
pool: Improve scalability of nearline storage subsystem

Release 2.13.29


Fixes a bug in which a host name set in *.net.listen properties was not preserved when publishing a door or generating SURLs.

Changes affecting multiple services

When building rpm files a package which is now explicitly required as a dependency.


This change fixes a bug in routing manager that would leave orphaned topic routes in dCache domain.


A regression caused pools to fail, reporting an IllegalArgumentException, when replication manager was enabled. This patch fixes that problem.

Changelog 2.13.28..2.13.29

[maven-release-plugin] prepare release 2.13.29
pool: Fix regression breaking hopping mananger
cells: Fix route removal in routing manager
rpm: explicitly require which package
doors: Preserve name when publishing the address of doors
[maven-release-plugin] prepare for next development iteration

Release 2.13.28


LoginManager would occasionally generate error messages similar to “Discarding listening on $LOCATION 53684’ because its age of 18721640 ms exceeds its time to live of 4500 ms.”. This was due to erroneous reuse of old message envelopes in the internal messaging. This change fixes that problem.

This change addresses a potential problem in which messages sent between cells in the same domain could appear older than they are and thus would risk being discarded due to the time-to-live being expired.

Contains corrections to cells logging. The routing manager pinboard now shows information previously logged to various other cells.


This change avoids ERR_PERM errors on NFS writes in situations where NFS doors do not receive redirect messages within the allowed timeframe.


This patch avoids errors occuring when mover doors would not receive a start mover request within the allowed timeframe, providing more robustness on heavily loaded instances.


A Tier–1 site reported problems with a major WLCG VO’s read requests. Investigating the source of the problems showed that the srm_ifce library, used by the (outdated) GFAL v1 and the (supported) GFAL v2 SRM libraries, drastically limits the permitted lifetime of requests without providing admins any way to configure this.

For sites seeing errors related to desiredTotalRequestTime being exceeded, this change provides the new configuration option srm.request.maximum-client-assumed-bandwidth in srm.properties as a work-around.

Sites not observing such errors do not need to change anything with regard to this value.

Changelog 2.13.27..2.13.28

[maven-release-plugin] prepare release 2.13.28
srm: add short request lifetime work-around
chimera: Fix regression in inheriting ACLs on directory creation (HSQLDB)
cells: Set correct logging context in cell callbacks
cells: Improve robustness of message time to live
cells: Fix erroneous reuse of message envelope in location manager registration
nfs: try to re-use transfer class on client retry
pool: handle duplicated start mover requests
pool: java8 into IoQueueManager
pool: simplify pool queues
[maven-release-plugin] prepare for next development iteration

Release 2.13.27


Fix a regression causing directories to inherit ACLs as if they were files rather than directories. Soon we will provide a procedure to clean-up already existing wrongly inherited directories.

Changelog 2.13.26..2.13.27

[maven-release-plugin] prepare release 2.13.27
chimera: Fix regression in inheriting ACLs on directory creation
[maven-release-plugin] prepare for next development iteration

Release 2.13.26


On very short transfers, two internal messages could occasionally arrive in the wrong order. This would cause clients to see the “226 Transfer complete.” message without the “150 Opening BINARY data connection for” immediate reply. This rare issue is now fixed.


Billing entries for SRM uploads recently lost the storage class part of the entry. This update fixes that issue. We observed an error caused by the parallel execution of two uploads, both trying to create the same (previously non-existing) directory). This modification fixes the underlying race condition, allowing such transfers to succeed.


Fixed a regression introduced in 2.13 in which internal options like -c:puts were erroneously included to the call out to the HSM script.


This modification fixes a potential race condition in pool manager.

This modification fixes a race condition in pool manager that could theoretically have provided erroneous data to pin manager, space manager, srm, xrootd and webdav. This modification fixes a race condition in pool manager that could theoretically have provided erroneous data to pin manager, space manager, srm, xrootd and webdav.


The ctlcluster utility is now fully supported under Linux.


When writing to a path /a/b/c, if b exists and is a file, SRM currently returns SRM_INTERNAL_ERROR. This modification changes that behaviour so that the more appropriate status SRM_INVALID_PATH is returned. During SRM-based operations, some sites reported problems with the delegation of user credentials. This modification remedies those problems, while at the same time reducing the CPU usage of establishing 3rd-party SRM connections.


This modification corrects the error reporting under WebDAV. When attempting to delete a non-existing file, unauthenticated users receive a 401 Unauthorized response, while authenticated users receive a 404 Not Found response.

Changelog 2.13.25..2.13.26

[maven-release-plugin] prepare release 2.13.26
pnfsmanager: Fix regression in SRM billing entries
pool: Fix filtering of options in script HSM driver
pnfsmanager: Fix race leading to transaction failures in Chimera
srm: Disable delegation on srmCopy to or from other SRMs
srm: Return SRM_INVALID_PATH when target directory is a file
ftp: Fix race on short transfers
[maven-release-plugin] prepare for next development iteration
Fix compatibility issues with ctlcluster
poolmanager: Acquire read lock when serializing cost module and partition manager
poolmanager: Acquire read lock when serializing pool selection unit
poolmanager: Fix race condition in pool selection unit
webdav: fix 404 error if attempting to delete a nonexistent file

Release 2.13.25


Fixes a race condition and a responsiveness issue in doors.


Fix regression introduced by single thread model.


Fixes a race condition during space manager startup that could lead to log messages about failed link group updates and failed transfers.

Changelog 2.13.24..2.13.25

[maven-release-plugin] prepare release 2.13.25
libs: use nfs4j–0.10.8
dcache: Fix compilation regression
spacemanager: Fix pool monitor fetch race during startup
doors: Fix contention point and race in login broker publishing
[maven-release-plugin] prepare for next development iteration

Release 2.13.24


With this release, PnfsManager adds safety checks rejecting invalid upload paths that SRM might erroneously supply. This release hardens an installation against possible bugs triggering data loss.

This release adds a check that detects failed or incomplete SRM uploads and prevents the file from being committed to its final path. Common symptoms of this bug were zero sized files that experiment catalogues registered as successfully uploaded.


This patch improves support for HTTP Keep-Alive connections. On closing a connection, in accordance with RFC 2616, an HTTP header indicating closure of the connection is sent out.

On highly loaded systems, DNS slowdowns could lead to pools and/or domains becoming unresponsive. This fix increases resilience against DNS problems.

Increased performance and resilience in situations where NFS clients send many requests at once.


This release adds a check to detect broken uploads using SRM during the final stage of file transmission. While it causes transfers to take a little more time, resilience against upload failures is increased.


dCache has supported 3rd-party HTTP push requests for WebDAV for some time. This release adds support for 3rd-party HTTP pull requests.

Changelog 2.13.23..2.13.24

[maven-release-plugin] prepare release 2.13.24
pool: send connection header when closing a connection.
pool: Avoid lock contention on DNS lookup in p2p component
srm: Check for broken files during srmPutDone
pnfsmanager: Check file size and upload completion when committing temporary upload paths
pnfsmanager: Protect against erroneous upload paths
pool: use “same thread strategy” for nfs movers
webdav: add support for 3rd-party HTTP pull
[maven-release-plugin] prepare for next development iteration

Release 2.13.23

Changes affecting multiple services

Several cases of slow performance were reported while deleting directory in Chimera. This is now fixed.


dCache pool yaml command dumps the meta data of a pool using the human an machine readable YAML format. A regression causing a null pointer exception has been fixed.

When command execution to migrate files between pools (e.g. migration concurrency or migration copy) is interrupted due to the failure to find migration job the returned error message is considered as a bug. This is now fixed so that a new message is returned indicating that the job being requested does not exist.


When file upload is cancelled the value of temporary upload path tracked by SRM could be a value different from a regular path, either because it was changed outside of dCache, or it contains entries from a very old version of dCache. This could result in data loss while canceling upload. The current release fixed a potential data loss scenario.


The statistics service creates static HTML pages that describe dCache usage over time as simple files that the webadmin service can serve. This includes information about pools and store-units. The problem is that the statistics webpages do not show information about any pool or store-unit that contains a / in the name. This is now fixed. A side-effect is that the history of any pool or store-unit containing a ^ in the name is lost.

Changelog 2.13.22..2.13.23

[maven-release-plugin] prepare release 2.13.23
chimera: Alter statistics target for t_tags(itagid)
srm: Add safe-guard against invalid file ID in put requests
pool: Don’t consider failure to find migration job a bug
statistics: encode ‘/’ in filenames
[maven-release-plugin] prepare for next development iteration
pool: Fix NPE in pool yaml tool

Release 2.13.22


On heavily loaded systems creating alarms at very high frequencies and with comparatively slow databases for alarm logging, components ran out of memory and blocked. This release introduces a mechanism that will drop alarm messages that would cause the system to fail, ensuring continued operation. Note that no messages that are critical to system operation will ever be dropped by this change.


Pinning files is now a non-blocking operation. For files stored on tape, this should result in a more responsive system behaviour, avoiding NFS blocking in situations with many concurrent pin requests.

Changelog 2.13.21..2.13.22

[maven-release-plugin] prepare release 2.13.22
(2.13) alarms: change executor to have bounded queue and discard events on overrun
nfs: use noitify instead of blocking sendAndWait when sending pin/unpin messages via touch “.(get)(<file_name>)(pin)” command
[maven-release-plugin] prepare for next development iteration

Release 2.13.21

Changes affecting multiple services

Sometimes when a cell start up was interrupted an error message was logged as a bug. This is now fixed.


The GLUE infomation provider supplies information about the dCache instance, which is important for the clients in WLCG area. Because in dCache different doors can have different roots, clients may need to adjust their path when accessing dCache through different doors. The info-provider is updated so that a new path root property is provided. This allows clients to modify paths, as necessary. Note that the SRM door already supports this translation when redirecting clients for transfers.

Changelog 2.13.20..2.13.21

[maven-release-plugin] prepare release 2.13.21
info-provider: publish door root path
cells: Suppress illegal state exception during initialization
[maven-release-plugin] prepare for next development iteration

Release 2.13.20


This release includes the PNFS-ID in the door’s logging output when proxying data movement.


Spacemanager backs off when it encounters a problem writing to the database. Previously, if the problem was due to deadlocks then the two tasks involved are delayed by the same amount, which means it is possible that subsequent attempt will also deadlock. This release randomises the delay to reduce the likelihood of this problem occuring.

Changelog 2.13.19..2.13.20

[maven-release-plugin] prepare release 2.13.20
spacemanager: Randomize backoff in case of transient errors
nfs-proxy: include file’s pnfsid into debug context
[maven-release-plugin] prepare for next development iteration

Release 2.13.19


Fix buffer leak in the HTTP mover.

Improve scalability of pools when opening files or changing sticky flags.

Resolve problem where starting a migration job on a pool with many files can result in an unresponsive pool.

This release fixes a bug that caused the output of the rep ls -s admin command to contain negative values.

Improve pool scalability of pool, allowing it to remain responsive even when undertaking many pool-to-pool transfers.


The prevelance of old versions (3.x) of xrootd client along with that version’s unfortunate behaviour when replying asynchronously has forced this release to revert the asychronous response to open requests.

Fix dCache handling of open requests where uploads were considered downloads.

Changelog 2.13.18..2.13.19

[maven-release-plugin] prepare release 2.13.19
pool: Fix lock contention during heavy p2p activity
Revert “pool: Expose Berkeley DB configuration as dCache properties”
pool: Fix buffer leak in HTTP mover
xrootd: Fix classification of uploads
pool: Expose Berkeley DB configuration as dCache properties
xrootd: Roll back asynchronous reply on open
pool: Fix lock starvation in migration module
pool: Fix accounting error in repository statistics
pool: Avoid lock contention when opening files and setting sticky flags
pool: Simplify synchronization during repository setup
[maven-release-plugin] prepare for next development iteration

Release 2.13.18

Changes affecting multiple services

Don’t log Error while reading from tunnel: java.nio.channels.AsynchronousCloseException when a domain shuts down.


Fix cleaner so it no longer sends cleaning requests to pools it knows cannot enact these requests. This prevents the cleaner from spamming a disabled pool.


No longer spam log file with 666:"Client disconnected without closing file." when an xrootd client closes a file it was reading. This is still logged if the client fails to close a file opened for writing.

This release provides more robust monitoring of a pool’s health by periodically testing the data directory in addition to testing the metadata.

With this release, the pool provides a more robust behaviour when the client requests a file without being redirected from a door. The pool will redirect the client back to its previously used door, if known. Additionally, the pool no longer logs when this happens in the pool log file, but only in the pinboard.

This release fixes buffer leaks in the xrootd mover. It also removes endsess spam from pool log files.

The pool’s info output now includes a progress report during initialisation.

Changelog 2.13.17..2.13.18

[maven-release-plugin] prepare release 2.13.18
pool: Upgrade xrootd4j to 3.0.2
pool: Redirect xrootd client to door on failure to open file
pool: Do not fail read if xrootd client doesn’t close file
cleaner: Fix black listing in case of disabled pools
cells: Don’t log AsynchronousCloseException when tunnel closes
pool: Show progress during repository initialization
pool: Fix health check of file store
[maven-release-plugin] prepare for next development iteration

Release 2.13.17

Changes affecting multiple services

Update the Spring, Milton, AspectJ, Jetty and DataNucleus-core libraries to latest version. All dCache services are affected.


Fix debug logging of the voms gPlazma plugin so it shows a clear and complete description of which FQAN is mapped; previously the log would contain confusing entries if the first FQAN is not mapped exactly.


If a 3rd-party transfer fails then the pool may log and report incomplete information on why this happened. This release fixes this problem.


This release fixes the interpretation of srm.persistence.enable.store-transient-state when srm.persistence.enable.history is disabled. Sites that have history disabled may put additional load on the SRM database if store-transient-state is true; the old behaviour can be restored by setting srm.persistence.enable.store-transient-state to false.

Fix the report sent to the srm client so that the failure code and error message always match. Earlier releases of this branch sometimes returned an inconsistent combination of failure code and error message.

Fix potential for inconsistent information being logged in the SRM database, where the request state was different than the last logged transition.

Changelog 2.13.16..2.13.17

[maven-release-plugin] prepare release 2.13.17
srm: Lock job while saving to create consistent persistent state
srm: Fix saving of transient states to database
2.13: upgrade third party dependencies
http–3rd-party: ensure IOException logged with toString
srm: Fix race in state reporting
gplazma: Improve logging in voms plugin
info: fix test to be less critical on timing
[maven-release-plugin] prepare for next development iteration

Release 2.13.16

Changes affecting multiple services

Enable SRM to discover FTP and dcap doors faster after restart. May also resolve messages like Failed to deliver LoginBrokerInfoRequest message <1449649391771:176> to [>LoginBrokerRequestTopic@local]: Route for >*@srm-bombayDomain< not found at >dCacheDomain<. All ftp and dcap doors should be updated.

Fix tab completion for non-default cells (messaging) topologies; all domains must be upgraded to deploy the fix. Sites with default topologies are unaffected.

For non-default star topologies, there are intermediate domains that pass messages between dCacheDomain and end domains. This release fixes propagation of routing information by these intermediate domains. Sites with default topologies are unaffected; those with non-default topologies should upgrade all intermediate domains.


When using the admin interface, there are three possible behaviours: interactive mode (new interface), no-terminal mode (new interface targeted for scripts) and legacy mode (old interface). The latter two could become stuck in an endless loop if the client disconnects before all data was sent. This is fixed with this release.


Add new options to the rep set sticky command to allow filtering by access-latency, retention-policy, storage class and cache class.

Add an option to migration module to support filtering by cache class.

Add the -meta-only option to migration module. This limits the affected replicas to those where the file’s data is not transferred; i.e., the target is some existing replica of the file. Local replicas that do not exist on any other pool are skipped.

Extend the migration module’s -sticky option to allow negated selection. This is marked by prefixing the sticky owner with a -. For example, -sticky=-system selects replicas that do not have the system sticky.

Fix persistency of the sticky bits. Should a replica’s list of sticky bits be modified by either the rep set sticky command or the migration module modifying some existing replica then the sticky flags are held in memory but not written to the Berkeley DB. The next restart of the pool will loose that information, potentially resulting in data loss. Pools that store metadata as files are not affected.


Previous releases of dCache contained a bug where replicas generated by pool-to-pool copies failed to include the access latency and retention policy. While not directly affecting dCache operations, the result is that this information is no longer reliable.


Fix listing by PNFS-ID. Glob support is removed as it was non-functional.

Changelog 2.13.15..2.13.16

[maven-release-plugin] prepare release 2.13.16
pool: Do not output expired sticky flags
pool: Only save sticky bits if not already set
poolmanager: Fix missing access latency and retention policy on pool to pool copy
admin: Fix endless loop in non-interactive mode
pool: Make bulk sticky bit operation robust against repository changes
pool: Throw IllegalArgumentException on rep set sticky errors
spacemanager: Fix listing by pnfs id
pool: Extend migration module with -meta-only option
pool: Add option to migration module to filter by cache class
pool: Add bulk mode for rep set sticky command
pool: Add migration option to filter by absense of sticky flags
pool: Fix persistence of sticky bits
cells: Tab complete on distant downstream domains too
cells: Fix route propagation trigger on non-default topologies
ftp,dcap: Fix LoginBrokerRequestTopic subscription
[maven-release-plugin] prepare for next development iteration

Release 2.13.15

Changes affecting multiple services

A request to read a file stored only on tape when the user does not have permission to stage files will fail. Additionally, a user attempting to upload a file that would trigger creating a new space-reservation but the user is not authorised to create such a reservation will also fail. With earlier versions of dCache, in both these cases, the door would retry the request until the times out. This version fixes this issue. All doors are affected.

This release fixes a caching issue where changes to inode metadata (e.g., ownership or permissions) for / (the root directory of Chimera) are not visible until the service is restarted. This affects NFS doors and pnfsmanager service.


Fix the NFS door so it no longer logs Post-processing failed: No such file or directory if a file is deleted while still open.

Changelog 2.13.14..2.13.15

[maven-release-plugin] prepare release 2.13.15
transfers: fail request if pool/space manager reject request
chimera: Prevent filling of stat cache of root inode
nfs: ingore file_not_found on close
[maven-release-plugin] prepare for next development iteration

Release 2.13.14

Changes affecting multiple services

The chimera library, used by PnfsManager and NFS, contains possible race conditions that can lead to a NullPointerException. These are updated so that Chimera gives the correct error message under these circumstances.

The chimera library, used by the pnfsmanager and nfs services, contains a bug where two near-simultaneous attempts to delete a hitherto empty directory and write a file into the same directory will both succeed but leave an orphaned file: it exists in the t_dirs table but the parent does not exist in t_inodes table. This seems to be triggered when an ftp door fails with no write pool configured. This release fixes this problem.


Fix the error message (logged by the domain hosting pnfsmanager) if an attempt to finalise an SRM upload fails within pnfsmanager, or if an attempt to cancel an SRM upload fails within pnfsmanager.


Fix the NFS mover so that, when the client is reading a file and reaches the end of file, the EOF flag is set correctly. This bugfix applies both to files read through pNFS and those read through the door.


When reporting an alarm that a pool is declared DOWN, the message mistakenly omitted the name of the pool. This is now fixed.


Update to the latest version of milton.


Update the alice-token plugin to allow the host name check to succeed on dual-stack (IPv4 and IPv6) machines.

Fix door so that it no longer logs: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.

Log initial response (usually that an asynchronous reply is forthcoming) when client attempts to open a file.

When authenticating with the GSI plugin, provide an informative message if the host private key file cannot be understood.

Changelog 2.13.13..2.13.14

[maven-release-plugin] prepare release 2.13.14
xrootd: Update alice token plugin to fix IPv6 compatibility
xrootd: Upgrade to xrootd4j 2.1.3
chimera: Detect races in directory deletion
chimera: Detect races during move
xrootd: Fix logging of Netty exceptions
webdav: update to latest milton
PnfsManager: remove copy-n-paste error in error message
(2.13) pool manager: add pool name to alarm
system-test: Fix grid-security settings
nfs: set EOF flag when channel indicated EOF
rpm: enforce SL5 compatibility when building RPM packages
[maven-release-plugin] prepare for next development iteration

Release 2.13.13

Changes affecting multiple services

Fix shutdown of the nfs, srm and xrootd doors; previously, shutting down any of these doors would block for two seconds.

Eliminate race condition that can lead to a NullPointerException if a cell does not shut down cleanly.

The dcache script no longer checks whether the hostkey.pem file is in PKCS#8 format when dcache stop is invoked. Previously this could lead to orphaned dCache domains; for example, when upgrading dCache RPM.


Fix potential IndexOutOfBoundsException should the response from the acm cell be malformed.


Update the text format of logged and emailed alarms so that messages include the type of alarm rather than simply the phrase ALARM [ ALARM_TYPE ]. Note that the alarms.email.encoding-pattern and alarms.history.encoding-pattern properties have been updated; sites that have modified either of these properties must review their configuration to take advantage of this update.


Fix an intended pool-to-pool transfer optimisation: the receiving pool failed to reuse a delayed mover, should the pool-to-pool request timeout and be retried.

Fix pools so that they do not log NullPointerException if a pool receives a request to restore a file from an HSM to which it has no access.


Fix how the writedata command in the chimera shell accepted data: the command-line argument was ignored if supplied and data was taken from stdin, if no argument was supplied then the command would fail with NullPointerException. Note: this command does NOT write data into dCache, but into Chimera.


Fix the context information included when logging failures to write job information to the database.

Changelog 2.13.12..2.13.13

[maven-release-plugin] prepare release 2.13.13
srm-client, dcache: fixed passing incompatible arguments to functions
dcache-nfs, dcache: removed unecessary use of non-short-circuit logic
(2.13) alarms: modify logback encoding to show actual alarm type
pool: Fix NPE when restoring file
scripts: do not check for PKCS#8 formatted hostkey.pem on shutdown
chimera: Null value passed to non-null parameter in org.dcache.chimera.cli.Shell$WriteCommand.call()
Fix shutdown of bounded executor
srm: Use correct logging context when saving jobs
cells: Fix NPE during shutdown
[maven-release-plugin] prepare for next development iteration

Release 2.13.12


In earlier versions of dCache, a pool will announce itself (in disabled state) to poolmanager before it can handle any queries. This has the potential to result in such messages timing out. With this release, a pool announces its availability only when it is able to handle basic queries.

This release updates how dCache configures the Berkeley DB when used for storing pool metadata. In addition, dCache will now no longer disable the pool when suffering a Berkeley DB-related problem if the Berkeley DB environment is still valid. Combined, these two changed should greatly reduce the occurances of pools disabling themselves when under heavy IO load.


Both versions of the SRM protocol (v1.1 and v2.2) support 3rd-party copying of data. In both cases, the client polls the server to discover what progress has been made. When queried, the server provides a hint when the client should next query the status of the transfer. The SRM v2 code hinted the client should retry only after a very long delay. This is now fixed.

Changelog 2.13.11..2.13.12

[maven-release-plugin] prepare release 2.13.12
pool: Refine Berkeley DB failure handling
pool: Do not announce cell until the cell is running
srm: Report correct estimated wait time for SRM 2.2 copy requests
[maven-release-plugin] prepare for next development iteration

Release 2.13.11

Changes affecting multiple services

The ftp, webdav and xrootd doors will delete the target file if an upload was unsuccessful. The copy manager (part of the transfermanagers service) has a similar behaviour if an internal copy is unsuccessful. If this delete was unsuccessful (e.g., the client deleted the file itself) previous dCache versions would log this at ERROR level. With this dCache version, such occurrences are logged at DEBUG level.

Previous versions of dCache would leak resources, potentially leading to slow-down and risking out-of-memory exceptions. Affected services are: dcap (if gsi authentication is used), gplazma (if the voms or xacml plugins are used) and srm.


One challenge with the NFS protocol is that the server provides the client a directory listing in chunks, with the client controlling when the next chunk is delivered; however, there is no mechanism for the client to say the directory listing is no longer needed. Since directory listings cannot be retained indefinitely, dCache NFS server stores a listing for a maximum of 10 minutes and a maximum of 512 listings are retained (with an LRU policy). Previously, dCache returned an error if the client requests further content from a directory listing that is no longer stored. Although the protocol allows this, the Linux client reacts badly. With this version, dCache tries harder to continue a directory listing: clients that request more content when that listing is no longer stored but where the directory has not changed will succeed with NFS re-reading that directory; only if the content has changed is an error returned.

This release of dCache fixes the error returned to the client if it requests more of a directory’s contents and the NFS server cannot generate that response (e.g., the directory’s contents have changed). Previously BAD_COOKIE (10003) was returned; with this release, NOT_SAME (10027) is returned instead.

Fix how mask names are logged when a GETATTR request is processed.

Fix race condition that can occur when a pool is first accepting pNFS transfers if multiple requests are processed almost simultaneously.


Fix regression introduced in 2.13.10 where the -uri argument(s) for the HSM script were mistakenly omitted when staging a file (the script’s get operation).


Previous versions of dCache failed to honour the srm.authn.capath and srm.authn.vomsdir configuration properties.


Adds support for the Robots Exclusion Standard (/robots.txt). The default advice is that web-crawlers should avoid indexing all content in dCache.

The webdav door has separate configuration allowing the admin to configure the door-local path that contains site-local files and the URI prefix to access those files. Earlier versions of dCache mistakenly used the former for the latter, which this release fixes.

Changelog 2.13.10..2.13.11

[maven-release-plugin] prepare release 2.13.11
voms: Fix resource leak regression
ScriptNearlineStorage: Fix missing -uri parameter for fetch
libx: update to nfs4j–0.10.7
webdav: Respect webdav.static-content.uri property
doors: Do not log failure to delete absent files on upload failures:
nfs4: fix race in request processing
webdav: Add robots.txt
[maven-release-plugin] prepare for next development iteration

Release 2.13.10

Changes affecting multiple services

In earlier versions of dCache, the code-base would always establish a node’s FQDN through a DNS query on start-up. For some services and for dCache scripts (for example, the chimera script), this information is not used. With this release, dCache only makes the DNS query when it is necessary, so domains hosting services that do not need this information and scripts will start faster.


Doors describe their root path to SRM so it can calculate appropriate TURLs. Previous versions of dCache had dcap doors register incorrect paths, which this release fixes.

dCache configuration allows an admin to control if certain ciphers are allowed. In particular, this allows sites to remove support for problematic ciphers or hashing algorithms. This release fixes a problem where the GSI-dcap door failed to honour such settings.


A problem within the FTP door could be triggered if the door was proxying a transfer that completes while, at the same time, another component within dCache queries the current status of this transfer. This can have a knock-on effect; for example, causing the System cell to be unresponsive, so preventing tab-completion in the admin shell. This problem is now fixed.

A problem existed since 2.13.0 where FTP transfers, especially those involving data proxying, can hang if the transfer fails. This is fixed with this release.


The xacml plugin is primarily used with GUMS servers to discover under which username a user should be logged in. This decision is influenced by the user’s VOMS group-membership, which the xacml plugin extracts. In previous versions of dCache, these group-membership attributes were not checked (as the GUMS server does this). With this release, this is updated so the VOMS attributes are checked. As a consequence, the gplazma.xacml.vomsdir.dir and gplazma.xacml.vomsdir.ca properties are introduced, which take default values from dcache.authn.vomsdir and dcache.authn.capath respectively.


The replica-manager periodically requests a list of file replicas that a pool is hosting. In previous versions of dCache, if the pool finds a broken file then an error is returned to replica-manager. The replica-manager then considered the entire pool as being offline. With this version od dCache, such errors are logged on the pool. The replica-manager will not consider the pool as hosting that file’s data, but will otherwise consider the pool online.

The different HSM operations (flush, stage and remove) have internal timeouts after which the pool considers the request as failed. In previous versions of dCache, the default pool setup includes a four hour timeout for flush and stage but neglected to set a default for delete. This omission caused delete operations to time-out very quickly. With this release, delete operations also have a default of four hours.

Fix the Ruby implementation of the hsmcp script (hsmcp.rb) so it can parse new command-line arguments that include concurrency options.

The concurrency for active HSM operations is configurable and may be adjusted dynamically. In earlier versions of dCache, decreasing the concurrency only became effective when that operation started to idle. This has been fixed so the limits start to have an effect as operations complete.

Each movers can have one of three priority (LOW, MEDIUM, HIGH) and a selection discipline (FIFO or LIFO). The documented behaviour was for queue with names that start with - have LIFO discipline and those that start with any other character have FIFO discipline. Due to a bug, the order was wrong, with the priorities inverted and the two disciplines swapped, so LOW priority movers were started before MEDIUM level and MEDIUM were started before HIGH. This release fixes this so HIGH priority movers are selected preferentially over MEDIUM and, MEDIUM priority movers are chosen over LOW priority; however, it was decided to keep the disciplines as in previous versions and updated the documentation accordingly. There are several reasons for this: first, there is no difference between LIFO and FIFO when movers are not queued; second, neither discipline will help if the pool is persistently overloaded; third, LIFO discipline (although unfair) is documented as providing a better overall throughput during a time-limited overload; fourth, by default dCache has been running with LIFO discipline since v1.9.11 (released 2011–01–13) without any apparent problems.

In earlier versions of dCache, if one of the HSM script arguments contained any whitespace then the script would be invoked with incorrectly formatted arguments. Such whitespace is mostly likely to come from the storage-info. This is now fixed: the arguments are as expected even when they contain whitespace.

HTTP third-party transfers report back if there was a problem verifying that the transfer was successful. One possible problem is that the remote server failed to supply checksum information. Reporting of such situations is now fixed.


The dCache alarms page in webadmin can be slow to respond when first visited. This is because the page attempts to load all alarm events when showing this page. With this version of dCache, the initial visit is limited to the most recent 100 events. The auto-refresh of this page has become an option shown within the page and is switched off by default.


In previous versions of dCache, should a user cancel a transfer shortly after a mover is created then there was a risk that the mover is abandoned. This is fixed with this release.


Fix race-condition that can lead to a stack-trace like:

Uncaught exception in thread xrootd-net-13 java.util.ConcurrentModificationException: null
        at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429) ~[na:1.8.0_60]
        at java.util.HashMap$KeyIterator.next(HashMap.java:1453) ~[na:1.8.0_60]
        at org.dcache.xrootd.door.XrootdRedirectHandler.channelInactive(XrootdRedirectHandler.java:147) ~[dcache-xrootd-2.13.9.jar:2.13.9]

In earlier versions of dCache, if the xrootd door times out for a write request while waiting for the mover to send the redirection information then the mover is abandoned. This is fixed with this release.

Changelog 2.13.9..2.13.10

[maven-release-plugin] prepare release 2.13.10
hsmcp: update to match new HSM interface.
(2.13) webadmin: improve user-friendliness of alarms page on load
(2.13) old replica manager: prevent pool being listed as offline when there are files with corrupt metadata
webdav: Kill abandoned movers
xrootd: Kill mover on aborted write
pool: Fix transfer prioritization
pool: Add nearline storage default timeouts
xrootd: Fix race condition in request cancelation
pool: Let script nearline storage provider scale down when lowering limits
HSM Script: pass arguments in array
dcap: Fix broken argument parsing
xacml: fix voms attribute validation
dcap: Fix socket factory argument parsing
Fix build and startup regression
pool: Fix error reporting in remote HTTP mover
ftp: Don’t hold locking during proxy shut down
ftp: Fix deadlock triggered by failures
prepare for next development iteration

Release 2.13.9


Fix security vulnerability in srm EGI-SVG–2015–9495 (restricted).

Release 2.13.8

Changes affecting multiple services

In many cases, poolmanager would timeout after ten seconds when asked which pool to use for a transfer. This behaviour was not intended. The consequence of this bug is protocol specific: for some protocols, the door retries internally while other doors propagate this error to the client. Another consequence was the increased risk of the domain hosting poolmanager running out of memory, particularly when staging files. This release fixes the underlying problem. It is recommended that all doors be upgraded.

Fix a performance regression when deleting directories; the fix affects the pnfsmanager and nfs services.

Doors announce themselves with tags that identify for which purposes they should be used. These tags are comma-separated and the srm tag indicates that the door should be made available for SRM transfers. In earlier versions of dCache, a problem was found where the comma-separated list was not split correctly, preventing the SRM from recognising the door is available. This is fixed with this release.

Fix that the configured ca directory and vomsdir were ignored by the srm and dcap doors.


Fix how dcap doors are published so the SRM door no longer selects plain (unauthenticated) dcap doors for writing when the dcap.authz.anonymous-operations configuration property states that they are READONLY, and never selects the door if the property value is NONE. The dcap.authz.readonly configuration property continues to be honoured when dcap.authz.anonymous-operations is FULL, but is ignored otherwise.


Fix performance regression due to reloading of trusted CA certificates with each request.

Fix support for credential delegation if the credential’s certificate is sent over multiple SSL frames. This most likely happens when the certificate exceeds the maximum frame size.

Changelog 2.13.7..2.13.8

[maven-release-plugin] prepare release 2.13.8
ftp: Add missing import
srm: Cache the vomsdir and ca stores
chimera: Resolve performance regression in directory deletion
doors: Fix timeout handling during retries
Fix timeout math to avoid overflow
srm: Fix credential delegation
doors: Fix string parsing for door tags and paths
dcap: Respect dcap.authz.anonymous-operations when publishing login information
srm,dcap: Respect cadir and vomsdir settings
prepare for next development iteration

Release 2.13.7


Fix security vulnerability in gsi and kerberos authenticated ftp.

Release 2.13.6

Changes affecting multiple services

The System cell of each domain contains a version command that allows discovery of which dCache version is running. This release fixes this command. Note: there is no problem with the dcache script’s version command.

The internal message handling within dCache allows for online changes to how messages are routed. This release fixes the command for removing existing default and dumpster routes.


Doors may retry creating a mover should the initial creation fail. The web-admin is not prepared for this eventuality, leading to a stack-trace with Multiple entries with same key being logged. This release fixes this.


The NFS protocol provides access to additional infomation through dot commands. This release fixes the nameof and pathof commands for non-ASCII filenames.


Fix that dCache respects the setgid bit on a parent directory when the user uploads a file via the SRM protocol. Important: the srm node should be updated at the same time.


Enforce authorisation of requests to finalise or cancel an upload. When initiating an upload, the user’s uid and primary gid are taken as the request owner-uid and owner-gid respectively. Only users that have the same uid as the request’s owner-uid or are a member of the request’s owner-gid are allowed to cancel or finalise an upload. Important: the srm must be updated if the pnfsmanager is updated.


This release fixes a bug with the periodic building of billing plots. Previously, if the billing service took too long to reply then there would be no further updates to the billing plots.

Changelog 2.13.5..2.13.6

[maven-release-plugin] prepare release 2.13.6
rpm: remove “commented out” macros lines from spec file
cells: Fix dumpster and default route removal
chimera: fix nameof and pathof for paths containing unicode
httpd: Fix transfer collection for duplicate movers
chimera: Let SRM respect setgid on upload
srm: Add authorization to put done and abort requests
module: cells
(2.13) dcache-webadmin: add TimeoutCacheException to catch clause in billing service
[maven-release-plugin] prepare for next development iteration

Release 2.13.5

Changes affecting multiple services

Specifying the DISABLE_BROKEN_DH flag in the dcache.authn.ciphers configuration property disables all Diffie-Hellman ciphers if Java 7 is used; if dCache is run with Java 8 then this flag has no effect. Disabling DH ciphers is necessary because Java 7 contains a broken implementation of Diffie-Hellman, which was fixed with the release of Java 7 update 51. This dCache release updates the behaviour of the DISABLE_BROKEN_DH flag to allow Diffie-Hellman ciphers if dCache is run within Java 7 update 51 or later.

The description of the DISABLE_EC and DISABLE_RC4 flags have been expanded and updated.

This release updates advice on how the dcache.net.listen configuration property should be set when clients should use a DNS alias FQDN (a CNAME record) rather than the FQDN of one of the door’s public interfaces.


Add support for the TEST_STATEID and FREE_STATEID RPC methods. These are used by the Linux kernel during recovery procedure. The previous lack of support for these methods can lead to the leaking of stateids, which can lead to NFS4ERR_RESOURCE : Too many states being logged.


Improve the error message (logged by the pool and in billing) should the FTP mover fail to connect to the client.

Changelog 2.13.4..2.13.5

[maven-release-plugin] prepare release 2.13.5
pool: fix ftp mover to provide better logging when failing to connect
properties: update description of dcache.net.listen
crypto: refine handling of broken ciphers
libs: update to nfs4j–0.10.6
[maven-release-plugin] prepare for next development iteration

Release 2.13.4

Changes affecting multiple services

The event logger records when messages are received and sent by cells. Some cell messages send string commands; if so, the log entry contains that string. In previous releases, such string commands were mistakenly double-escaped. This is fixed with this release.

Doors publish their root path as part of the information that the srm service uses when determining TURLs. With this release, the published root path is included in the door’s info output.


The admin cell features tab-completion for cell names; names without an @ expand using a list of well-known cells. In earlier releases, this did not work if both the admin and the well-known cell are not located in the broker domain (typically dCacheDomain). This is now fixed.


Fix debug output to include the flavour of GSS implementation; for example, GssFtpDoorV1::secure_reply: going to authorize using k5


Earlier 2.13 releases contained a performance regression that resulted in the voms plugin requiring large amounts of CPU; using this plugin would result in gPlazma being very slow. This is now fixed.


When a user attempts to delete a symbolic link using a non-NFS door, previous versions of dCache would resolve the symbolic link to determine whether the user is allowed to delete the symblic link: only if the user is allowed to delete the symblic link’s target would the symbolic link be removed. With this release, the check verifies if the user is allowed to delete the symbolic link instead.


This release updates the JVM command-line to make it explicit that compressed object references are in use. This allows the Berkeley DB library to calculate a more accurate cache size, potentially improving pool performance.

In previuos releases, any attempt is made to query a pool’s info (e.g., via the admin interface) while the pool is initialising will block until the initialisation has completed. This has a knock-on effect of blocking all subsequent messages. With this release, requesting information about a pool will not block during initialisation.

Fix high memory usage during pool initialisation if pool has any precious files.


Fix SRM to allow downloads via read-only doors.


The access log for the domain hosting an xrootd door would contain incomplete information about xrootd interactions: certain responses were logged without the corresponding xrootd session. This is now fixed.

Earlier releases will record a stack-trace if xrootd recieves a malformed request. This is now fixed.

Changelog 2.13.3..2.13.4

[maven-release-plugin] prepare release 2.13.4
doors: Include root path in login broker info output
admin: Fix cell name tab completion
srm: Fix read path check for srmPrepareToGet
cell: Don’t quote string command in event logger
pool: Explicitly enable compressed oops to calculate correct cache size
pool: Fix locking bug causing high memory usage during pool initialization
chimera: Fix path resolution on delete
xrootd: Fix ‘xrootd logs stack-trace on malformed request’
move execution of the superclass method before any concrete class initializations
gplazma: Fix VOMS plugin regressions
pool: do not list a repository during initialization
xrootd: Add session to access log
[maven-release-plugin] prepare for next development iteration

Release 2.13.3


This release fixes a regression where using the xacml gPlazma plugin would prevent gsiftp-based transfers from succeeding.


The Berkeley DB based metadata storage can sometimes fail. Should this happen, the pool must be restarted. In previously releases, such problems were logged with an unclear message and a stack-trace; the pool would continue to operate but would fail all subsequent transfers; nothing made it clear the pool must be restarted. With this release, such Berkeley DB problems will be logged with a concise error message and the pool will be disable, making the restart requirement explicit.

Fix regression in the migration module that could caused more replicas to be created than was desired and could cause replication to fail with a No targets error message.


In previous versions of dCache, the ls operation in SRM occationally returned incomplete or inconsistent results. This is now fixed.


Fixes GSI authenticated xrootd.

Changelog 2.13.2..2.13.3

[maven-release-plugin] prepare release 2.13.3
pool: Fix race condition in migration module
srm: fix race condition in ls response
xrootd: Fix GSI authentication
pool: Disable pool on meta data failures
srm: Fix wrong Spring factory bean type
(2.13) gplazma-xacml: add GlobusPrincipal (DN) to identified principals
[maven-release-plugin] prepare for next development iteration

Release 2.13.2

Changes affecting multiple services

In previous releases, dCache required a layout file be present, even if that file was empty. This has two negative impacts: the dcache stop (typically invoked automatically when updating a package) would not work, nodes where only scripts (e.g., info-provider) are used would require unecessary configuration. With this release, a missing file generates a warning but does not prevent the dcache stop command or scripts from working. This warning may be suppressed by setting dcache.layout.uri to an empty string.


The tape related queues (flush and restore) have no maximum limit, yet both the old web information and new webadmin show a dummy maximum value for these queues. This meaningless maximum value is no longer shown.


It is possible to run multiple SRM endpoints in dCache, provided certain restrictions are upheld. With this release, the info-provider publishes multiple SRM endpoints correctly.


Some shells, when attempt to overwrite a tag’s content using NFS, do so in a way that Chimera previously failed to support. This failure was reported back to the user as a remote I/O error. This release fixes this problem.

Log NFS clients that provide a stale client-ID.

When configured to support NFS v3, the nfs door will attempt to start the embedded portmap service if it cannot find the system portmap service. Previous releases of dCache would log a stack-trace if starting the embedded portmap service fails. With this release such failures are logged but no stack-trace is generated.


Reduce latency when a pool processes a request to start a read mover. This improves dCache responsiveness when a client opens a file for reading.

The NFS mover uses the file’s size when processing read and write requests. For read operations, the file size cannot change. This release takes advantage of this to reduce the load on the underlying filesystem.

Reduce memory churn on pool when processing NFS requests. With this release, fewer small objects are created, resulting in less pressure on Java’s memory garbage-collector and consequently reduced likelihood of latency spikes.


Poolmanager may attempt to create additional copies of a file, only to discover such attempts fail because of other constraints. This leads to the log file containing entries like P2P denied: already too many copies and P2P denied: No pool candidates available/configured/left for p2p or file already everywhere. With this release, such entries are logged at info level: they no longer appear in the log file, but are available via the poolmanager’s pinboard.


This release overhauls the srm service’s queuing behaviour. To reduce likelihood of bulk operations overwhelming dCache, the srm limits the number of requests it processes concurrently to some configurable maximum. It places any additional schedulable activity (LS, GET, PUT, BRING-ONLINE and RESERVE-SPACE) into queues; the next request from the queue is processed when a processing slot becomes available. Previously, the process of selecting which queued request to process next was both unfair and inefficent: as the queue size increased, the srm node consumed considerably more CPU effort and individuals experienced increased latency.

This release sees the introduction of a new queuing mechanism designed to overcome these problems. The queing strategy is both configurable and pluggable, allowing the admin to control the desired characteristics. Some of the queuing strategies shipped with dCache are designed to share the available processing slots fairly between users or between groups of users; this grouping of users is also both configurable and pluggable, with dCache shipping with many useful choices. See the srm default configuration properties file for further details.

Changelog 2.13.1..2.13.2

[maven-release-plugin] prepare release 2.13.2
systemtest: fix install command in credentials command
chimera: throw FileExistChimeraException if tag already exists
infoprovider: remove single SRM instance limitation
(2.13) webadmin: do not display numerical value for max restores or stores
boot: Don’t fail on missing layout file
srm: Refactor scheduler to avoid unused queues and per user counters
srm: Reimplement scheduling policy to resolve scalability issues
httpd: Do now show maximum for restore and flush queues
poolmanager: Reduce log level of p2p denial
libs: update to nfs4j–0.10.5
pool: simplify duplicate request handling
pool: do not create new stateid in NfsMover#getStateId()
[maven-release-plugin] prepare for next development iteration
pool: reduce load on back-end file system

Release 2.13.1

Changes affecting multiple services

A new security configuration option allows the dCache admin to ban all SSL/TLS ciphers that use the RC4 cipher. RFC–7465 states services MUST NOT accept an RC4-based cipher suite. Adding the DISABLE_RC4 option to the dcache.authn.ciphers makes dCache compliant with RFC–7465. This option is not enabled by default to avoid possible regression with clients that require the RC4 cipher. This property affects dcap (with GSI), ftp (with GSI), srm, webadmin, webdav (with SSL/TLS), xrootd (GSI plugin) services.


Fixed ACL inheritance when uploading data through SRM. In earlier versions of dCache, a file uploaded through SRM failed to inherit any inheritable ACEs from the parent directory.

This release brings some modest performance improvements when creating upload directories. This improvement is available automatically only to sites that have not yet upgraded to 2.10 (or later). Sites already running 2.10 or later can enjoy the same improvements by deleting the upload directory (/upload by default) to allow dCache to recreate it. Important: deleting the upload directory will fail any current SRM uploads; it is recommended to do this during down-time.


The pool’s migration module may be invoked with different pool selection modes: the -select option. The random selection option (-select=random) excludes pools that are full, but mistakenly considers replicas that could be deleted (i.e., non-sticky cached replicas) as part of the used space; this treats a pool as full even when the pool has removable files. With this release, pools that are full but contain some cached files are potential targets for random pool selection.

In earlier releases of dCache, the save command failed to record the stage, flush and remove timeouts for nearline storage (rh set timeout, st set timeout, rm set timeout respectively). This is now fixed.

The pool’s NFS mover will remember the previous TCP port on which it listened and will attempt to reuse it after restarting.


Fix JAR selection when a short-lived java process is started; in particular, this fixes a problem with the chimera utility when operating on ACLs. In earlier versions, such operations fail with a java.lang.NoClassDefFoundError: org/dcache/acl/parser/ACEParser message.


Fix writing into a reservation when using a protocol that does not provide a username or FQAN; for example, when writing into dCache using NFS and with the WriteToken directory tag set. Previously writing would fail with a Message processing failed: null group message.


The srm service can generate RemoteException stack traces when dCache is behaving correctly. These are now logged at debug level and without a stack trace.

Changelog 2.13.0..2.13.1

[maven-release-plugin] prepare release 2.13.1
pool: introduce unique port number for nfs mover
pool: Store nearline storage timeouts to pool setup file
pnfsmanager: Create base upload directories without tags and acls
pnfsmanager: Inherit ACLs on upload with SRM
chimera: Add ACL insert triggers for HSQLDB
Fix limited class path generation
pool: Let random pool selection select pools with removable files
crypto: allow banning of RC4 cipher suites
spacemanager: Allow unowned files in reservations
srm: Don’t log erroneous stack trace
[maven-release-plugin] prepare for next development iteration

Release 2.13.0

Admin shell got major face lift

The admin shell has been reworked entirely. We have taken several design cues from the PostgreSQL shell,l psql, that most dCache admins are familiar with.

Most notably, the command set is syntactically divided into built-in commands affecting the shell itself and commands sent to connected dCache cells. The former are all prefixed with a backslash while the latter are not. This syntactic separation means that the shell commands are available at any time, even when connected to a cell. E.g. the cd command got replaced by \c, allowing one to connect to a different cell without first having to disconnect from the current cell. Thus there is no need for a .. command.

The shell provides built-in help for the shell commands using \?. This help is separate from the regular help output of the connected cell. The latter is available using the new \h command (the classic help command still works, but will not provide color highlighting).

All built-in shell commands provide full tab completion, including for the arguments. E.g. \c provides tab completion on the cell name; it will complete on all well-known cells, all local cells of the domain of the connected cell, and on domain names of fully qualified addresses.

The new \l command lists cells. By default it lists well known cells and cells of the domain of the connected cell. Wildcards for fully qualified addresses however match all cells, e.g. \l p*@* lists all cells starting with the letter p (\l p*@ is a shorthand for the same); and \l *@fooBar lists all cells of domain fooBar (with the shorthand \l @fooBar).

As part of the face lift, both the shell prompt and the welcome message got updated. The prompt is partially configurable using the new admin.prompt property.

The old shell provided several utility commands at the “root” level. These commands are no longer supported, but most of them can be mimicked using some of the new commands introduced.

We provide a brief summary of the new commands in the tables below, as well as a comparison of the old and new commands.

Cell address wildcards
Pattern Meaning
cell@domain Fully qualified cell address.
cell Well known cell.
GLOB@domain All cells matching GLOB in domain.
cell@GLOB All cells called cell in any domain matching GLOB.
cell@ Short for cell@*, i.e. any cell called cell in any domain.
@domain Short for *@domain, i.e. any cell in the domain called domain.
@ Short for *@*, i.e. any cell in the entire system.
*@domain1:cell@domain2 Source routed cell path. The asterix is not a wildcard!
Admin shell commands illustrated
Command Meaning
\? Show a summary of shell commands.
\? CMD Show help of shell command CMD.
\h Show a summary of commands of connected cell.
\h CMD Show help of command CMD of connected cell.
\c CELL Connect to well-known cell.
\c CELL@DOMAIN Connect to fully qualified cell.
\c CELL USER Connect to cell as user.
\l List all well-known cells and cells local to the currently connected domain.
\l GLOB List all cells matching the cell wildcard.
\q Quit shell.
\s CELL CMD Send CMD to cell.
\s CELL1,CELL2 CMD Send CMD to cell1 and cell2.
\s GLOB CMD Send CMD to all cells matching the cell wildcard.
\sn CMD Send CMD to pnfs manager (name space).
\sp CMD Send CMD to pool manager.
\sl PATH CMD Send CMD to all pools containing the file described by PATH.
\sl PNFSID CMD Send CMD to all pools containing the file described by PATH.
Keyboard shortcuts
Key Meaning
^C Interrupt currently running command.
^D Quit shell.
^R Search history.
TAB Complete command or argument.
Command What it does
\s System@ kill System Restart all domains.
\sl /path/to/file rep ls $1 List all replicas of the file.
\sl /path/to/file rep rm $1 Remove all removable replicas of the file.
\sl /path/to/file rep set sticky -o=me -l=60000 $1 Add a 60s sticky bit owner by me to all replicas of the file.
\sn cacheinfoof /path/to/file Get cache locations of the file.
\sn cacheinfoof /path/to/file Get cache locations of the file.
Replacements for legacy commands
Old New Remark
flags ls file \sn flags ls file Output format is different.
flags remove file key \sn flags remove file -key
flags set file key value \sn flags set file -key=value
modify poolmode enable pool[,pool…] \s pool,[pool…] pool enable
modify poolmode disable pool[,pool…][code ] [options] \s pool,[pool…] pool disable [code [message]][options]
p2p pnfsid source target \s source migration cache -pnfsid=pnfsid target
p2p pnfsid \sp replicate pnfsid localhost The new form is non-blocking.
pnfs map path \sn pnfsidof path
quota query
repinfoof file \sl file rep ls $1 Output format is different.
set deletable pnfsid \sn flags set pnfsid -d=true
\sl pnfsid ret set cached $1
Note that neither form touches the sticky bit.
set sticky file \sl file rep set sticky $1 on
set sticky pnfsid -target=pool \s pool rep set sticky pnfsid on No equivalent command when using path.
set unsticky file \sl file rep set sticky $1 off
set unsticky pnfsid -target=pool \s pool rep set sticky pnfsid off No equivalent command when using path.
uncache file \sl file rep rm -force $1
uncache pnfsid -target=pool \s pool rep rm -force pnfsid No equivalent command when using path.

Admin shell provides better scripting support

The new admin shell detects whether it is connected to a pseudo terminal. If it isn’t, it typically means the input and output are redirected such as when connecting from a script. In this case the admin shell disables all styling: No welcome message, no prompt, no echo, no color highlighting, no command history. This makes it much easier to script the admin shell.

Admin shell automatically creates history file

Admin shell has had support for persistent command history for a long time. This feature was however only enabled if one manually created the file used to store the command history. This file is now created automatically if it doesn’t exist.

New legacy subsystem provides compatibility with old scripts

To support old scripts, the old shell is available as the legacy ssh subsystem. One can connect to this subsystem by adding the -s legacy option to the ssh command line.

We do however recommend that scripts are updated to use the new shell.

Admin no longer hard-codes cell addresses

Several new properties allow communication details to be configured:





Many admin shell commands now accept hex and octal values

Many admins shell commands now accept hexadecimal and octal numeric arguments. Hexdecimal arguments must be prefixed by 0x and octal arguments by 0.

Improved pcells compatibility

Several changes have been made to simplify maintaining compatibility with the pcells GUI. As part of these changes, the admin service now redirects pcells requests to the appropriate dCache cell, allowing pcells to be used even if pnfsmanager, poolmanager or spacemanager use non-default names.

Improved cell message communication

The internal cell communication has been heavily restructured. Most of these changes are internal and - except for maybe minor latency improvements - are invisible to the user. There are however also several bug fixes to corner cases, as well as improvements in logging and routing failure handling. One may observe more routing errors being logged; such errors happened in previous versions too, but were not always logged.

Several changes to the message routing logic were made. These changes mostly affect non-default topologies, enabling use cases not possible in previous versions. When matured, these use cases will be documented separately.

Route maintenance logic has been updated. The most immediately observable changes are the new output format of the route command in the System cell, the fact that route deletion requires the full route to be specified, and that duplicate routes are allowed (messages are routed through the first route that matches).

Admin ping command provides RTT

The ping command in the System cell is now blocking and measures the round trip time.

New defaults for database names and owners

The defaults for database names are now such that each logical database is stored separately. Except for Chimera, this means that each RDBMS enabled service uses its own database. The default name is that of the service, e.g. srm stores its data in a database called srm, and the spacemanager service stored its data in a database called spacemanager.

The default owner has been changed to dcache for all databases, including Chimera.

New common configuration properties control the defaults for all databases, but per service overrides are of course possible:

#  ---- Default host of RDBMS used by various services.
#   Various services need an RDBMS. Each service is recommended to use its
#   own logical database, but these may or may not be hosted in the same RDBMS
#   instance. This setting defines the host of the RDBMS used.
dcache.db.host = localhost

#  ---- Default RDBMS user account by various services.
dcache.db.user = dcache

#  ---- Default password of RDBMS used by various services.
dcache.db.password =

#  ---- Default password file for RDBMS used by various services.
#   Follows the format of the PostgreSQL pgpass file format. Avoids putting
#   the passwords in the dCache configuration files.
dcache.db.password.file =

Upon upgrade, existing sites should update the settings to match the previous setup:

srm.db.name = dcache
srm.db.user = srmdcache

spacemanager.db.name = dcache
spacemanager.db.user = srmdcache

pinmanager.db.name = dcache
pinmanager.db.user = srmdcache

transfermanagers.db.name = dcachet
transfermanagers.db.user = srmdcache

replica.db.name = replicas
replica.db.user = srmdcache

chimera.db.name = chimerac
chimera.db.user = chimera

billing.db.name = billing
billing.db.user = srmdcache

alarms.db.name = alarms
alarms.db.user = srmdcache

Broadcast service replaced by publish-subscribe messaging

The broadcast service is no longer supported and must be removed from the layout file on upgrade.

The functionality of the broadcast service have been replaced by an integrated multicast ability in the cell messaging system. Sending cells publish messages on a common topic while receiving cells subscribe to these topics. The topic is a regular cell address and is analogous to a multicast group in networking. This cell address is not bound to any particular cell. Instead the new TOPIC route directs messages published to a topic to all subscribers.

The system is transparent and does not require any configuration.

Login broker service replaced by publish-subscribe messaging

The loginbroker service is no longer supported. This service acted as a directory service for doors and was used by srm, info, and httpd to find doors. The functionality has been replaced by publish-subscribe messaging.

To control which doors are used by srm, httpd and the info provider, a new tag system has been introduced. Doors may be tagged by setting the *.loginbroker.tags property, and the consuming services may in turn filter doors by those tags. E.g. will only use doors that has one of the tags defined by srm.protocols.tags.

By default, the srm service only uses doors tagged as srm and the info-provider only publishes doors tagged as glue. By default, all doors are tagged as both srm and glue.

As part of this change, both the publishing and consuming services have been extended with several new lb commands. Doors can dynamically change the tags they publish, as well as stop publishing read or write capabilities (thus preventing SRM from using those doors). Similarly, consuming services like srm have been extended with commands to list collected information about doors:

lb disable [-read] [-write]  # suspend publishing capabilities
lb enable [-read] [-write]  # resume publishing capabilities
lb ls [-l] [-protocol=<string>]<...>  # list collected login broker information
lb set tags <tags><...>  # set published tags
lb set threshold <load>  # set threshold load for OOB updates
lb set update <seconds>  # set login broker update frequency
lb update # refresh login broker information

DCAP directory service is auto instantiated

The dir service used by DCAP to provide directory listing has been removed. The corresponding cell is now automatically instantiated whenever a DCAP door is created. Upon upgrade, the dir service must be removed from the layout file.

Support for JMS removed

Several years ago, an alternative messaging system based on the Java Messaging Services specification was introduced in dCache. This allowed external message brokers like ActiveMQ and OpenMQ to be used with dCache. This feature never caught on and we have removed all support for JMS.

Support for Terracotta removed

The srm service has supported a load-balancing system called Terracotta. This system supported running multiple SRM instances in a load-balancing setup. To our knowledge, this system has never been utilized by any site, and our internal evaluation showed that the overhead was relatively large. To avoid wasting developer resources on an unused feature, all support for Terracotta has been removed.

Support for multiple httpd instances

With the improved pcells decoupling from dCache, it is now possible to have several httpd services in the same dCache instance. One needs to give each a unique name, but that’s the only configuration tweak needed.

httpd uses JGlobus for certificate handling

When hosting the webadmin service, httpd supports HTTP over TLS. dCache now uses JGlobus for TLS, or more specifically, for the certificate handling required for TLS. The immediate consequence is that one no longer has to import host and CA certificates into a Java Keystore file. The httpd service can now read those directly from your /etc/grid-security directory.

dcache import command removed

Since certificates no longer need to be imported into Java Keystore files, the dcache import commands have been removed from the dcache script.

Robust delete notification for spacemanager, replica, and pinmanager

The spacemanager, replica, and pinmanager services rely on receiving notifications for when files are deleted. Previously, these were sent by both pnfsmanger and cleaner, but both used unreliable notifications. This in particular affected spacemanager: If the spacemanager was shut down while pnfsmanager or cleaner were running, the services could quickly get out of sync, resulting in leaked files in spacemanager.

This notification has now been replaced by a robust notification from cleaner. The deleted file is not removed from the trash table until the receiving services have been notified and have confirmed the notification. Whether the notification is send is controlled by the new cleaner.enable.space-reservation and cleaner.enable.replica settings. These settings must be in sync with whether space management or replica management is used in this dCache instance.

It is assumed that every dCache instance has a pinmanager. If you don’t have one, the easiest solution is to add this service upon upgrade.

Robust flush notification for spacemanager

Similar to the delete notification, the unreliable flush notification previously sent by pools was replaced by a reliable notification from pnfsmanager. The new pnfsmanager.enable.space-reservation controls whether these notifications are sent. One consequence is that if spacemanager is down, flush to tape will halt.

dCache expects spacemanager by default

The defaults have changed such that it is assumed that space reservations are supported unless explicitly disabled. In other words, the property dcache.enable.space-reservation now defaults to true.

This change has been made because it is a safer default. In a system without space management, forgetting to set the above property to false simply results in a non-functioning system. In a system with space management, forgetting to set this property to true results in lost notifications, causing silent database inconsistencies. Thus true is the safer default.

Sites without space manager will have to set dcache.enable.space-reservation to false on all doors and other head nodes.

As before, one has to have a spacemanager instance in the layout file to support space reservations. The change in defaults is merely whether the rest of dCache expects space manager to be running or not.

Info provider supports configurable service names

The names of the pinmanager and poolmanager services used by the info provider are now configurable.

Info provider generates timestamp attributes

Info provider now adds a GLUE2EntityCreationTime attribute to all the GLUE 2 entities it creates.

Pinmanager provides better error messages

Pin manager now distinguishes between several different causes for failing to pin a file.

Pool migration module maintains last access time

The new -atime option to the migration commands allow migrated files to keep the original access time. This allows the garbage collection order to be maintained.

Pool garbage collector implements strict LRU

Previous versions of the sweeper implemented an approximation of least-recently-used (LRU). Starting with version 2.13 it implements real LRU.

New pool safe-guards in case of repository errors

Additional safe guards to automatically disable a pool in case of fatal errors have been added. A pool will now also stop flushing files to tape if it has been marked dead.

Better HTTP error handling in pools

Previous versions would disconnect the client on every error. Starting with version 2.13, the pool will try to keep the connection alive.

Unified mover timeout handling in doors

Doors have several timeouts related to starting a mover on a pool, however the precise semantics were not unified. With this version, all doors use common timeout concepts for pool selection, mover creation and mover queuing.

Space manager has been renamed

The default space manager name has been changed to SpaceManager. In previous versions, the default was SrmSpaceManager, but since the space manager service is independent of the SRM service, this name was misleading. For compatibility, a temporary alias was added to allow the admin service to use both names.

Space manager supports less intrusive link group update command

The space manager update link groups command no longer blocks the space manager while the link groups are updated. The command returns once the updated information is being used.

Improved shutdown logic in space manager

If space manager discards requests during shutdown, the requesting service is now notified about the discarded messages. This allows for faster recovery after a space manager service restart.

Link group authorization by GID

The link group authorization file now supports authorization by GID. This allows space manager to be use with anonymous protocols like plain DCAP, plain xrootd and plain NFS.

Space manager provides better select failures

Space manager now provides better error messages when unable to find a suitable link group of write pool. It also provides better error code to distinguish permission and configuration errors from other errors. Doors like DCAP, NFS and FTP make use of these error codes to decide whether to retry requests or which error codes to send to clients.

Asynchronous pool selection

Pool selection requests in doors may now be asynchronous, meaning the door does not need to maintain a thread for the duration of pool selection. This is currently only utilized by the FTP door.

Pool HSM commands provide helpful error messages

Thanks to Onno Zweers from SARA for contributing a patch that allows the hsm set and hsm unset commands to provide more helpful error messages.

Pool Berkeley DB meta data format change

The Berkeley DB library used by pools for meta data has been upgraded. The update is forward compatible in that the new version can read the old meta data. However once upgraded, the pool cannot be downgraded to previous versions. If a downgrade is required, the meta data needs to first be converted to the file backend before the downgrade, and then back to the db backend after the downgrade.

Chimera cleans old leaked tag inodes upon upgrade

A bug in Chimera caused tag inodes to be leaked upong directory deletion. The bug was fixed in 2.10, however to reduce the impact of the fix, already leaked inodes were not deleted. When upgrading to 2.13, such inodes are automatically removed. Depending on the number of tag inodes, this procedure may take a while (from minutes to hours).

As always, if an nfs service has been placed ahead of the pnfsmanager service in a domain, the database schema update has to be triggered manually by running dcache database update before starting dCache.

Chimera relaxes permission checks on stat

In compliance with POSIX, Chimera no longer requires execute permissions for the containing directory to stat a file.

Timing gauges support asynchronous processing

The srm provides gauges for measuring the executing time of various request. Some of these requests are asynchronous and as a result appeared to be much faster than they really are. The gauges have now been extended to support asynchronous processing and the measured time now reflects the true processing time of such request.

Increase precision of timing gauges

The precision of timing gauges used by services like srm and pnfsmanager has been improved.

Name space services provides timing gauges for Chimera calls

The info command of the pnfsmanager service has been extended to provide timing information for Chimera calls.

New admin commands for NFS service

Previous versions showed information about all transfers, pools and clients as part of its info output. This tended to clutter the output and also caused a lot of unnecessary information to be collected by the info service.

With this release, NFS doors no longer show this information in the info output. Instead that information can be queried using several new admin commands:

show clients [<host>]  # show active NFSv4 clients
show pools [<pool>]  # show pools to pNFS device mapping
show proxyio # show proxy-io transfers
show transfers # show active transfers

New thread pool settings for NFS service

The NFS service provides the following new settings for controlling the message thread pool size:


srmGetSpaceTokens results are cached by SRM service

Clients such as FTS query the available space tokens prior to every upload. This used to cause a query message to be sent to the spacemanager service every time, with spacemanager querying its database. Since the list rarely changes, this release introduces a short-lived cache for this information.

Log FTS-specific information

FTS, since v3.2.34, will send the Job-ID, File-ID and retry-count to dCache. Here is an example of this information: job-id=bb62f96e-23da-48c1-bd6f-e0737588733b;file-id=996117;retry=0.

How FTS provides this information varies depending on the protocol. For SRM and WebDAV, a special HTTP header is used; for FTP the information is part of the CLIENTINFO command. In all cases, the information is available in the access log (<domain>.access file).

The following shows FTS sending an SRM prepareToPut command:

level=INFO ts=2015-06-15T09:13:18.035+0200
event=org.dcache.srm.request [...] request.method=srmPrepareToPut
[..] request.token=-2147481808 status.code=SRM_SUCCESS
user-agent="fts_url_copy/3.2.34 gfal2/2.10.0 srm-ifce/1.23.1

The following shows the same information in an FTP session:

level=INFO ts=2015-06-15T09:13:19.769+0200
session=door:GFTP-prometheus-AAUYiTEsOCg command="ENC{SITE
CLIENTINFO scheme=gsiftp;appname=\"fts_url_copy\";appver=\"3.2.34
reply="ENC{250 OK}"

The FTP session identifier (door:GFTP-prometheus-AAUYiTEsOCg in above example) allows discovery of all commands and corresponding responses for this attempt to upload a file.

The inclusion of this information allows correlation of dCache activity against FTS activity, which may prove useful when diagnosing problems.

Asynchronous open for xrootd

Pool selection in dCache is unbounded in that it may trigger staging from tape or internal replication of files. Yet many xrootd clients have very short timeouts. To avoid that clients time out during staging, dCache xrootd doors now use the asynchronous reply format of the xrootd protocol. In this format, the server immediately responds to an kXR_open request, telling the client that the actual response will be provided asynchronously at some point in the future.

Support for custom HTTP response headers

Support has been added to the webdav door and the pool so that custom HTTP response headers may be configured. To demonstrate this, the Server response header now has the value dCache/<version> where <version> is the installed dCache version.

Changelog from 2.12.0 to 2.13.0

[maven-release-plugin] prepare release 2.13.0
nfs: include read/write information to transfers
Revert “pool: reduce load on back-end file system”
nfs: add missing CR into getInfo()
libs: update to voms-api–3.0.5
pool: repository based unit test
pool: fix broken commit d1c977d
pool: reduce load on back-end file system
dcache bash_completion: add property completion
webdav: add support for custom headers
replica manager: demote warn to debug on truncation failure
libs: Update to voms-api-java
info: remove (almost) all hard-coded cell names
spacemanager: better handling of implicit reservation failures
srm: Add cache for srmGetSpaceTokens
nfs: show mover info when proxy io is displayed
nfs-proxy: update proxy-io adapter interface to expose open-stateid
srm: Fix cache invalidation of space meta data
chimera: Optimize deletion of directories without tags
libs: use bouncycastle–1.46
libs: update jglobus to
chimera: Fix single command invocation of chimera utility
pnfsmanager: Resolve upload directory leak caused by missing reply flag
nfs: door should have a thread pool for message processing
replica manager: fix table truncation
pool: report IO error if we cant find NFS mover
pool: dedicated port range for nfs
common: Sort counters and gauges
pnfsmanager: Inject wrapped FileSystemProvider into ExtendedInode
common: Increase precision of gauges
pnfsmanager: Wrap Chimera provider with counters and gauges
pnfsmanager: Minor refactoring of name space provider
common: Make gauge robust against arithemtic overflow
common: Extend execution time gauge proxy to asynchronous results
common: Fix division by zero regression in gauges
common: Fix rounding error in request gauge
Revert “common: Extend execution time gauge proxy to asynchronous results”
Revert “common: Fix rounding error in request gauge”
libs: Upgrade Hikari
pnfsmanager: Discard upload path creation request on TTL expiration
common: Extend execution time gauge proxy to asynchronous results
common: Fix rounding error in request gauge
libs: Role back maven resource plugin
nfs-proxy: introduce an exponential backoff when connecting to pools
nfs-proxy: close RPC client if we fail to connect
dir: Auto instantiate dir service with dcap doors
libs: Update third party libraries
libs: Final round of Maven plugin updates
pnfsmanager: Drop cache location provider
pnfsmanager: Use per-thread upload directory to reduce lock contention
nfs: add new commands to admin interface
replicamanager: update admin command help
srm: Fix erroneous message queue overflow issues
srm: Further optimize SRM scheduler
srm: Abort pinning when cancelling bring-online requests
system-test: Enable MVCC and logging for HSQLDB
Downgrade logback.
srm: Optimize scheduler performance
srm-client: Respect server estimates for bring-online
srm-client: Fix ArrayIndexOutOfBounds failure
srm: Fix sync to async mode timeout
pinmanager: Fix listing by id
pool: Add HSM options to hsm script remove callout
srm: Fix queue size reporting
pool: Fix timeout behavior of HSM requests
chimera: Add changeset to clean leaked tag inodes
xrootd: Use asynchronous replies for kXR_open
common-cli: understand hex/octal notation of numeric arguments
cells: update log message to describe why enqueing a message failed.
Fix database properties
spacemanager: Fix typo in db.host property
info-provider: add support for publishing only tagged doors
Unify database host and user settings
srm: log ClientInfo HTTP request header
doors: Avoid locking login broker publisher while resolving addresses
webdav,srm: Decouple credential service from login broker
spacemanager: Update help text of admin commands
spacemanager: Allow spaces to become unowned
dcache: Replace loginbroker service by publish-subscribe topic
cells: Various performance related refactoring
cells: Make hash code of CellPath consistent with equals
cells: Take additivity into account in logback cells filter
cells: Refactor logback turbo filter thresholds
cli: remove stray separator in predefined alarms printout
libs: update nfs4j to 0.10.4
srm: Drop Terracotta support
cells: Do not export and subscribe until started
cells: Add CellAddressCore constructor to CellMessage
dcache: Delete unused MessageEventTimer
cleaner: Add missing annotation
srm: Remove duplicate SURLs in bringonline and get requests
chimera: Provide SIZE attribute if a file got any locations
chimera: Add cause to exceptions
dcap: fix stack-trace when shutting down pool waiting for connection
spacemanager: allow reservation authorisation based on gid
system-test: add missing dCache disposible CA certificate
all: Exclude no route to cell logging for topics
all: Refactor ‘no-route-to-cell’ logging
system-test: add regenerated host and user credentials
ChecksumChannelTest: refactor and active ignored tests
acl: fix compatibility with linux ace
nfs: make use of chained exceptions
chimera: Delete unreferences tag inodes
libs: update to nfs4j–0.10.3
replicamanager: add an admin command to re-fetch resilient pool group
admin: Restore pcells compatibility with loginrbroker
all: Move more vehicles to dcache-vehicles
admin: Avoid endless exception loop upon client disconnect
replicamanager: do not fetch list of all pools
chimera-provider: allow to set acl even if ACL is not enabled.
acl: do not require parent dir attributes on can{GET|SET}Attributes
pool: update scrubber messages to be less ambigous
dcap: fileAttributesNotAvailable must set pass ENOENT to the client
ChecksumChannel: fix int overrun bug on filling up gaps > Integer.MAX_VALUE
doors: Make Transfer#selectPoolAndStartMover asynchronous
srm: Minor refactoring of job loading
replica: Fix regression in file deletion
all: Fix several NPEs when submitting billing messages
nfs-proxy: do not block forever on proxy requests
srmclient: consider copyjobfile when deciding whether to delegate
srm: Fix scheduler counter initialization on restart
Introduce CacheLocationTopic and drop broadcast service
replica,poolmanager,broadcast: Use topic to notify replica manager about pool status
pool,spacemanager,pnfsmanager: Move flush notification to pnfsmanager
doors: Log real path in billing
replica: Fix HSQLDB compatibility
srm: Allow the SRM to take action upon cleaned requests
srm: Fix loading of jobs during restart
srm: Force save jobs when adding information needed for cancellation
srm: Force save when job becomes RQUEUED
cells: Introduce publish-subscribe messaging
all: Update logback to 1.1.3
cells: Clean up no route to cell errors
cells: More protection against cyclic routing
cells: Drop routes and event listeners on cell shutdown
cells: Advertise and install routes to downstream domains
cells: Refactor cloning of CellMessage and CellPath
cells: Allow cyclic default routes
cleaner: Allow list of cells to notify on delete to be empty
pinmanager: Make use of new delete notification
chimera: update trigger for ACL population
pools: fix parsing error in HsmRunSystem
acl: accept AUDIT and ALARM ace types
httpd: Fix password based login
alarms: Refactor alarms cell’s send command
alarms: Rewrite submission client
javatunnel: use connected socket to discover local inet address
dcache: Remove dcache import commands
httpd: Use JGlobus for certificate handling
srm: Fix inverted use of certificate refresh periods
all: Minor upgrades of various third party libraries
cleaner: Java 8 and related refactoring
cleaner,pnfsmanager,replica,spacemanager: Rework delete notification
all: Downgrade maven resources plugin due to maven incompatibility
all: Upgrade maven plugins
spacemanager: Set default of dcache.enable.space-reservation to true
admin: Avoid line breaks when not connection from a TTY
admin: Avoid division by zero when the client reports a zero sized terminal
admin: Fix connection shutdown
spacemanager: Fix race condition leading to leaked files
spacemanager: Optimize space record deletion
cells: Clean up routing table printing
cells: Fix forwarding of GetAllDomainsRequest
cells: Reorder default route and tunnel connect operations
Get rid of more CVS/SVN revision references
doors: Clean up mover timeout interpretation
dcache: Make cell communication use the correct timeout
cells: make ping command blocking and measure elapsed time
cells: Allow route duplication by key
dcache: Rename and extends PnfsHandler request methods
httpd,admin: Fix NPE in transfer collectors
doors: Fix race condition that causes NPE in webadmin
info/info-provider: publish valid IPv6 addresses
info: rewrite StateMaintainer unit tests
loginbroker: strip off zone off published interface name
srm: log the broken TURL to help diagnose the problem
Restore compile time compatibility with pcells
nfs: share mover for the same client
nfs: use NFSv4MoverHandler instead of Map in embedded NFS server
httpd: Fix ever increasing source address path
admin: Various minor help related improvements
cells: Fix NPE when NoRouteToCellException bounces
Update HsmSet.java
webadmin: remove empty-string destinations in cell stub injection
cells: Drop digest implementations
cells: Drops cipher implementations
cells: Remove unused network classes
cells: Drop unused and unfinished code versioning support
cells: Drop unused utility classes
cells: Drop CollectionFactory
cells: Drop custom producer/consumer buffer pool
cells: Drop custom database implementations
cells: Drop ssh1 implementation
dcache: Drop old scripts and configuration files
cells: Remove more old GUI code
cells: Remove legacy GUI
acl: Move vehicles to acl-vehicles module
cells: Move message encoding/decoding to CellGlue
cells: Fix event queue counting bug
cells: Only use RoutedMessageEvents when sending to routers
cells: Move message encoding to CellNucleus
cells: Drop old tunnel implementations
cells: Refactor routing loop
spacemanager: Do not block space manager when manually updating link groups
cells: Avoid slash in cell names
pool-selection-unit: refactor commands to delegate to a provider
pinmanager: Don’t log stack trace when unable to fetch pool monitor
cells: Refactor stripping of local domain address
cells: Minor refactoring of CellPath
cells: Detect end of destination path
cells: Fix route loop detection
cells: Simplify routing code
cells: Add protection against bouncing delivery failures
all: Simplify handling of cell routing failures
cells: Automatic code reformatting of CellGlue
pinmanager: Split out different cases for why a file cannot be pinned
pool: Fix meta data reconstruction
nfs: remove redundant registration at rpcbind
admin: Fix command completion
cells: Restore CellExceptionMessage encoding
cells: Enable concurrent processing in routing table
cells: Automatic code formatting for CellRoutingTable
cells: Remove testing code from routing table
cells: Clean up CellRoute class
cells: Prevent removal of wrong route
info: rationalise logging
Get rid of CVS revisions
pool: Mark pool dead if repository state update fails
pool: Stop flushing when pool is dead
admin: Make pool manager and pnfs manager addresses configurable for pcells
admin: Do not hard code space manager and login broker cell addresses
httpd: Enable multiple instances of httpd service
admin: Isolate pcells from httpd
httpd: Refactor transfer collection
httpd: Fix pcells compatibility
pool: Add -atime option to migration module
info: rationalise braces in class and method declaration
Revert “Bugfix: Only free space if the removed file was the last link”
info: whitespace only changes
Bugfix: Only free space if the removed file was the last link
infoprovider: add GLUE2EntityCreationTime
access log: better fix for logging secondary gids
rpm: incude timestamp into snapshot builds
admin: Propagate NoRouteToCellException to pcells
srm: Remove easily avoidable singletons
pool: Fix spelling and punctuation errors
pool: Fix file deletion
srmclient: add support for userRequestDescription
srm: log more SRM bugs
srm: suppress the Unable to find required classes message on startup
admin: Restore pcells compatibility
Revert “pool: Make EntryState#DESTROYED deprecated”
admin: Restore timeout semantics for pcells compatibility
loginbroker: Restore compatibility with pcells
spacemanager: Move messages to dcache-vehicles
cleaner: Fix class cast exception
srm: Use more sensible default values
srm: Introduce max pool period property
srm: Fix ConcurrentModificationException in Axis
pool: Fix repository statistiscs collection
cells: remove obsolete code
core: use java.util.Base64
pool: Fix pool entry reconstruction
nfs-proxy: modify ProxyIOAdapter interface to provide forEach method
nfs: cleanup CDC related mess
pool: small java8 cleanup in IO scheduler
pool: Fix and align pool meta data recovery with current pnfs manager
Fix serialization of cache class in FileAttributes
pool: Use Netty buffer allocator for http and xrootd movers
admin: Reset completer when connecting to another cell
spacemanager: Rename to SpaceManager
pool: Refactor http mover to simplify error and keep-alive handling
pool: Follow Netty best practice and use context rather then channel
pool: Use Java 8 date API for sweeper
spacemanager: Add missing nullable annotation to shut up IntelliJ
spacemanager: Auto reformat code
spacemanager: Return discarded messages
dcache: Undecorate runnables in CDCExecutorServiceDecorator
access log: fix logging of secondary gids
chimera: do not maintain time-based cached value of FsStat
pool: ignore duplicated mover kill requests
pool: Make sweeper implement true LRU
spacemanager: Making logging and handling of transient errors more robust
pool: Fix read corruption in HTTP mover
nfs: Pop elements of the NDC when leaving it’s scope.
pool: Fix HTTP mover for multiple requests
libs: update to nfs4j–0.10.2
pool, xrootd: Upgrade to Netty 4.0.26
pool: Fix NPE in xrootd mover
LocationManager: Use fqdn instead of hostname
acl: fix test case introduced in f626125
acl: introduce parser for linux nfs4_acl tool formated strings
spacemanager: Controlled shutdown
spacemanager: Make request processing more robust
spacemanager: Reduce log level on various transient DB errors
admin: Create history file if it doesn’t exist
info-provider: remove hard-coded service names
libs: update to nfs4j–0.10.1
chimera: fix updating of directory tags
spacemanager: Minor simplification to link group updates
spacemanager: Don’t log stack-trace on AL/RP/Reservation conflict
spacemanager: Lower default for number of threads
admin: Automatic reformatting of code
admin: Drop legacy commands
admin: Fix help of the modify poolmode command
pnfsmanager: Extend flags command
admin: Introduce a dedicated ssh command for the non-terminal case
admin: Introduce \timeout command
admin: Introduce \exception command
admin: Add \sl to send command to pools containing a file
admin: Remove hard coded service names
admin: Add completion for \l command
common: Add space and dash back to escapeable args characters
admin: Add tab completion for \s command
admin: Refactor tab completion
admin: Don’t indent single destination replies for \s
admin: Let \s print partial result on interrupt
admin: Execute commands concurrently with \s
admin: Add tab completion for \h and \?
admin: Add local cells to for \c tab completion
admin: Add completion for \c command
admin: Add partial tab completion for shell commands
admin: Add glob support to \s command
admin: Resolve domain name when connecting to cell
admin: Add \l command
admin: Add \s command
admin: Make \? and \h use Ansi formatting if supported
admin: Update the welcome message
admin: Drop cd, su, logoff, help, ..
admin: Add \q command to quit
admin: Add \sn and \sp commands
admin: Add \? and \h commands
admin: Add \c command to connect to cell
admin: Fork legacy shell from regular shell
dcache-jms: Drop JMS support
pool: Update xrootd properties to reflect changes to Netty 4
pnfsmanager: Fix help of storageinfoof and metadataof
ssh2: do not create and extra list when search for public key
ssh2: close file stream when reading authorized_keys file
javatunnel: fix array size to decode
nfs4: log abandoned movers with WARN
admin: Fix compilation error
admin: Detect allocation of pseudo TTY
nfs-proxy: modify ProxyIOAdapter interface
releases: update dCache version to v2.13
align remaining default DB settings
change default config for a split DB setup