Highlights

  • Experimental CEPH support.
  • Automatic detection of PostgreSQL master.
  • Self describing billing files.
  • Pool manager setup is stored in ZooKeeper.
  • Pool manager read-only state is stored in setup file and ZooKeeper.
  • New performance cost calculation for improved stability of hot spot replication.
  • Allow batching of flush to tape to be “disabled”.
  • Allow polling HSM scripts.
  • Mover queues can be created at runtime.
  • Abort upload when SRM TURL is invalidated.
  • Allow xrootd clients to select mover queues.
  • Support the HAProxy proxy protocol.
  • Production ready support for high availability deployments.

Incompatibilities

  • Compatibility with pools older than 2.16 has been dropped.
  • Properties marked deprecated in 2.16 are now obsolete.
  • Several deprecated or obsolete admin commands have been removed.
  • The admin door no longer supports DSA keys.
  • The billing service no longer output records for which no format string was defined.
  • The pool manager and pool configuration files now only support the commands considered setup commands.
  • Support for the legacy UDP discovery service used in 2.15 and earlier has been dropped.
  • dCacheDomain no longer default are core domain.
  • DCAP doors no longer supportthe dcapLock feature to halt new requests.
  • Pool manager now automatically persists its setup in ZooKeeper uses it after a restart rather than poolmanager.conf.
  • The way pool manager calculates performance cost has changed and cost limits in pool manager may have to be retuned.
  • The pool to pool client queue in pools no longer has a configurable limit.
  • Return code 72 is now a special value for HSM scripts.
  • The failure semantics for empty uploads has changed.
  • The https-jglobus value has been removed for the webdav.authn.protocol property.

Acknowledgments

Thanks to Onno Zweers for several contributions to this release.

Differences from dCache v2.16

The notes for release 3.0.0 detail the differences from dCache 2.16. Please read this section very carefully when upgrading from this version.

Release 3.0.47

scripts

The instructions that are printed out once dcache pool convert completes successfully now correctly point to the property that needs to be updated, namely pool.plugins.meta.

Changelog 3.0.46..3.0.47

c36dfcc46c
[maven-release-plugin] prepare release 3.0.47
b6ba9af4eb
scripts: update reference to configuration property
97dfed76d1
pool: fix metadata migration tool to use Path
1660e69332
[maven-release-plugin] prepare for next development iteration

Release 3.0.46

dcache-resilience

There was a small regression in the way resilience computes the number of operations necessary to adjust copies when a storage unit definition changes.

The current rellease fixed computation of operation count when storage requirements change.

ftp

In order to aid diagnosing problems when FTP response being lost, now dcache logs failures to wrap/encrypt responses.

Changelog 3.0.45..3.0.46

131880c
[maven-release-plugin] prepare release 3.0.46
3e3163b
scripts: add support for parsing ZooKeeper transaction logs
a743552
ftp: log failures to wrap/encrypt responses
436399e
dcache-resilience: fix computation of operation count when storage requirements change
d699fad
[maven-release-plugin] prepare for next development iteration

Release 3.0.45

ftp

Error reporting in the FTP service has been improved: in some mixed IPv4 / IPv6 scenarios, only unclear error messages were reported.

Changelog 3.0.44..3.0.45

6bdfcbde5d
[maven-release-plugin] prepare release 3.0.45
d8a15dbab7
ftp: returned error is too vague for meaningful investigation
027f7397a2
[maven-release-plugin] prepare for next development iteration

Release 3.0.44

gplazma

gplazma now supports a Fermilab-specific authorization data source in JSON format.

pool

During active ftp transfers, connection problems would lead to the rather unhelpful error message “451 General problem”. This error reporting was refactored, so that diagnosis of the cause is now greatly facilitated.

poolmanager

A potential NullPointerException (that was not observed in real-world usage until now) was fixed in Pool Manager.

resilience

A correction to resilience’s error handling results in no more reports on non-resilient (but corrupted) files.

spacemanager

In order to facilitate debugging, Space Manager now logs link-group related content in greater detail.

Changelog 3.0.43..3.0.44

3f1f30c154
[maven-release-plugin] prepare release 3.0.44
2d0e74ebce
poolmanager: fix migration command if named pool is removed
475fca33f8
dcache-resilience: repair over-aggressive handling of broken file messages
925a261e81
pool: fix error message for failed active FTP transfers
2373487a40
fix the project version in pom.xml
781cc20730
gplazma-fermi: fix last modified check in junit test
a8885d9a72
spacemanager: add remote pool monitor debug logging
d006814c41
gplazma-fermi: add mapping plugin to support VO group and username from file
83d8204c9a
[maven-release-plugin] prepare for next development iteration

Release 3.0.43

resilience

Logging for cases where file replication was fatally aborted was improved. Previously, alarms messages pertained to the PNFSID of the affected files. In rare cases, like when facing network congestion, many hundreds of alarms could be created. With this change, alarms messages refer to the storage unit, and a suffix based on an hourly timestamp is added to the alarm message. The alarm will thus be incremented during the hour but a new alarm will be created (only) hourly; in this way, those receiving email alerts will receive them once an hour.

Changelog 3.0.42..3.0.43

b15b527d9e
[maven-release-plugin] prepare release 3.0.43
e8d7488925
alarms: fix broken path
7251f376ef
[maven-release-plugin] prepare for next development iteration
e9cdc4d2a2
substituted Calendar for Instance which was failing.
b284e91122
dcache-resilience: avoid spamming alarms with abort messages

Release 3.0.42

ftp

A bug (that was not observed in real-world settings yet) that might have caused NullPointerExceptions was fixed in the ftp service.

poolmanager

dCache 3.0 introduced a regression where a dCache domain does not start up if it hosts a poolmanager with poolmanager.conf containing either the “rc set sameHostCopy” or the “rc set sameHostRetry” command. This regression was fixed.

resilience

Error handling within the Resilience service was improved.

Changelog 3.0.41..3.0.42

d4a2df058a
[maven-release-plugin] prepare release 3.0.42
f72123400d
dcache-resilience: handle properly RuntimeExceptions from tasks
8cb98d73c2
ftp: ensure adapter is closed
f81c008965
ftp: remove rare NullPointerException when proxying data
40a1dcab5c
poolmanager: fix poolmanager startup with certain poolmanager.conf content
b31ade0690
[maven-release-plugin] prepare for next development iteration

Release 3.0.41

dcache-resilience

When a checksum or broken file message/error is generated, Resilience makes a best effort to (a) remove the broken copy and (b) make another replica. This, of course, is not always possible, particularly if the broken file is the only accessible copy. This resulted in faulty behavior particularly the thrashing noted in the case of a restaging operation which results in a checksum error. This is now fixed.

The current release improved error handling for resilience. It fixed unnecessary Migration Task exceptions resulting from source pools with no replica in the repository.

Now it should be possible for Resilience to use pools blocked only for writes from doors.

Changelog 3.0.40..3.0.41

2ed30f8
[maven-release-plugin] prepare release 3.0.41
1c8c56c
bad commit put DOWN twice
57c9ccd
dcache-resilience: define non-writable pool to mean p2p-client is disabled
71419a4
dcache: fix remote pool monitor wait bug
c49e444
dcache-resilience: repair handling of broken files*
0d58321
[maven-release-plugin] prepare for next development iteration
05a7853
dcache-resilience: fix bug in source handling with Clear Cache Location messages

Release 3.0.40

cells

The current release added explicit ZooKeeper/Curator monitoring. Events generated by ZooKeeper and Curator are now logged in a new, which may help diagnose problems that are suspected to come from bad ZooKeeper interaction.

frontend

The current release improved the error handling to work with Jackson exceptions.

Changelog 3.0.39..3.0.40

2fad831
[maven-release-plugin] prepare release 3.0.40
86ccd1c
dcache-resilience: fix wrong assumption about error type in Message
bb5973e
cells: add explicit ZooKeeper/Curator monitoring
e3140e3
frontend: Map requests with bad JSON to HTTP 400 Bad Request status code
74b5c02
[maven-release-plugin] prepare for next development iteration

Release 3.0.39

nfs

NFS door has been updated to return NFS4ERR_LAYOUTUNAVAILABLE for DOT files.

star

The current release improved documentation to help dCache admins to have a better understanding of how to generate StAR record.

The current release fixed fix printing exception error message for dcache-star script if there’s a problem when run with newer versions of Python.

Changelog 3.0.38..3.0.39

6b4180c
[maven-release-plugin] prepare release 3.0.39
2776992
nfs: return LAYOUTUNAVAILABLE for DOT files
73bdcf7
star: fix printing exception error message
d40890c
star: update documentation to provide better description of script
9b96b08
[maven-release-plugin] prepare for next development iteration

Release 3.0.38

info

The info service collects information about who is allowed to reserve space. Since some of this information, like VOs, usernames and gids, may be considered sensitive information, this update allows admins to control whether or not to publish them. The default behaviour is unchanged from the previous behaviour, i.e. info publishes everything. If a site admin wants to change this, the info.limits.show-only-vo-authz property can be set to true.

scripts

The dcache script and manpage still refered explicitely to Java 6. This patch changes the phrasing of the respective text.

Changelog 3.0.37..3.0.38

f4d6bc6511
[maven-release-plugin] prepare release 3.0.38
7b41e14c48
scripts: update reference to JDK to avoid mentioning specific java version
17df369055
info: allow admin to control whether non-VO / non-FQAN identities are shown
b7bfc8b314
[maven-release-plugin] prepare for next development iteration

Release 3.0.37

chimera

The current release fixed previously introduced issues for lost+found directory permissions. Now, the lost+found directory permissions is updated without causing problems if that directory has been removed or permissions have been modified.

Changelog 3.0.36..3.0.37

89c6a8b
[maven-release-plugin] prepare release 3.0.37
bdfb780
chimera: correct previous attempt to fix ‘lost+found’ directory permission
a74b73f
[maven-release-plugin] prepare for next development iteration

Release 3.0.36

pnfsmanager

The current release improves documentation for set log slow threshold admin command help.

spacemanager

When trying to upload into dCache using a space-token where there is no selectable link for this operation then the user was presented with a generic error message; for example,

No write links configured for [net=131.169.71.98,protocol=GFtp/2,store=dot:user@osm,cache=,linkgroup=].

This behavior is changed now and an improved error message is returned to the user if they attempt an upload data into dCache using a space-reservation in a way where poolmanager configuration prevents the upload.

webdav

The current release improved error handling when dCache is full.

Changelog 3.0.35..3.0.36

38de80c
[maven-release-plugin] prepare release 3.0.36
d6d321b
systemtest: work with new OpenSSL DN format
a2a4534
spacemanager: provide space-specific error message on bad upload
1928311
webdav: return 507 Insufficient Storage when dCache is full
6351c8a
pnfsmanager: update slow logging admin command help
2fd15ed
[maven-release-plugin] prepare for next development iteration

Release 3.0.35

cells

dCache no longer logs stack-traces when running multiple cells with the same name.

pool

Closing dcap mover connection no longer logs a stack trace.

For certain failures,the pool was logging transfer failures twice. This is now fixed.

rpm

dCache ensures now that user ‘dcache’ is a member of group ‘dcache’.

star

The current release Introduced new property star.db.*, which makes possible now to run PostgreSQL on non-standard ports can use STAR.

statistics

Timeout in contacting PoolManager no longer results in a stack-trace being logged.

Changelog 3.0.34..3.0.35

f7547d7
[maven-release-plugin] prepare release 3.0.35
6c2cb7d
[maven-release-plugin] prepare for next development iteration
a212275
pool: fix double logging on remote FTP transfer error
e5ff9ab
pool: Fix how certain bugs are logged
dfc024b
star: support PostgreSQL running on non-standard TCP ports
6c721e5
rpm: don’t assume existing dcache user is member of dcache group
fc563b9
cells: don’t log stack-trace on starting cell with same name as running cell
1c42791
statistics: avoid stack-trace on internal timeout
2304f35
pool: fix stack-trace when closing dcap mover connection

Release 3.0.34

admin

The admin interface reported an attempt to connect to an absent cell as a bug. The current release fixed the issue.

httpd

Requests to httpd targeting an unknown resource was returning 200 OK response code. Nevertheless the 404 NOT FOUND response would be closer fit. This is now fixed.

nfs

The current release corrects inaccurate documentation of nfs.enable.pnfsmanager-query-on-move.

Changelog 3.0.33..3.0.34

bcd8d31
[maven-release-plugin] prepare release 3.0.34
e8014a2
nfs: fix documentation of nfs.enable.pnfsmanager-query-on-move
233b6fd
admin: do not report attempts to connect to missing cell as a bug
9a0752d
httpd: return 404 status code on an unknown page
1cd37d0
[maven-release-plugin] prepare for next development iteration

Release 3.0.33

Changes affecting multiple services

dCache no longer logs stack-traces if a Java VirtualMachineError occurs. This is unnecessary as dCache was (presumably) working fine until Java discovered a problem.

chimera

Sites updating to dCache 2.15 or later might observe that a lost+found directory with incorrect permissions was created during the update. This patch ensures correct permissions. Since we cannot know if the current permissions in lost+found are intended, this patch does not modify any existing lost+found directory permissions.

pool

The sweeper freecommand no longer logs a stack trace if it is started with incorrect input information.

An irrelevant stack trace was logged by the pool. This release corrects that.

Changelog 3.0.32..3.0.33

52aa1504eb
[maven-release-plugin] prepare release 3.0.33
ce3a5fae78
chimera: update schema migration when creating ‘lost+found’ directory.
35db8236df
pool: fix stack-trace on bad command input
f6b22647da
pool: fix stacktrace on FaultEvent logging
da4ba36bbe
system: Don’t log stack-trace on fatal JVM error
74b2e62277
[maven-release-plugin] prepare for next development iteration

Release 3.0.32

alarms

Until now, the sorting order of alarms did not provide a correct ordering for all types of alarms. With this release, alarms are now implicitly ordered by at least their latest modification timestamp.

resilience

One of the features of resilience is the enforcement of file partioning on pools according to pool tags. The pool tag restrictions are observed whenever a file is copied. In addition, it is rechecked when a storage unit is updated, in order to make sure the files are distributed correctly according to the new requirements. This is done by removing the offending copies and recopying them in a new location.

Should files get redistributed, however, by rebalancing or a migration job, it is possible that the partitioning will be violated, since only resilience observes it.

The resilience service now verifies that files are distributed according to the requirements specified by pool tags while doing periodic scans (or scans initiated through the admin command).

statistics

A possible race condition was removed from the implementation of the create stat admin command.

Changelog 3.0.31..3.0.32

b65e0caea0
[maven-release-plugin] prepare release 3.0.32
ce83a48128
statistics: fix race in “create stat” admin command
a57ac478f7
srm: fix stacktrace on database failure
c47a65e81c
alarms: revert LogEntry.compareTo() to throw NPE on null object
049419c772
resilience: force tag partition checking on scans from admin command and periodic checks
aaad9d2599
alarms: fix natural order comparator to use timestamp first
ea6aed2009
[maven-release-plugin] prepare for next development iteration

Release 3.0.31

dcap

A pool that has gone offline and comes back up again may become very slow to respond due to a large amount of superfluous error messages to dcap clients that disconnected in the meantime. This patch ensures a more responsive reaction to these cases by introducing a time-to-live value for such messages.

pool

Error reporting was improved for cases of IO errors in pools.

Changelog 3.0.30..3.0.31

f7e46f453c
[maven-release-plugin] prepare release 3.0.31
d403eb76f7
pool: avoid ‘null’ and other nondescript error messages
7008ae46a8
[maven-release-plugin] prepare for next development iteration
7ae58e2bc8
dcap: add TTL information to dcap messages

Release 3.0.30

Changes affecting multiple services

Many dCache components use RemotePoolMonitor to provide fast access to the information that PoolManager has about pools. In order to facilitate system diagnosis, the ‘info’ admin command was augmented by information about the current status of the RemotePoolMonitor.

admin

The Apache sshd library used by the admin interface was updated. Although we believe that dCache is not affected, some security vulnerability scanners alert users to a potentially vulnerable library version. The update serves mostly to avoid those false alarms.

pool

A bug in gfal2 results in FTP transfers being aborted some 50 ms after being initiated. This results in the door killing the mover shortly after the pool received the PoolDeliverFile message. If the mover is not queued, but not yet fully started, this may lead to the pool disabling itself. This patch corrects that problem, ensuring that the pool continues to run despite any aborted transfers.

xrootd

In the 4.7 releases, the xrootd client started enforcing protocol requirements for kXR_login which, unfortunately, broke access to dCache. The xrootd client expects an answer with a 16-character session ID from the door and then the pool after the redirection. Without this ID, the client would retry (without success) repeatedly and appear to hang.

dCache’s xrootd implementation has been augmented with the session ID, enabling it to work with xrootd clients of version 4.7 and up.

Changelog 3.0.29..3.0.30

8aa487149e
[maven-release-plugin] prepare release 3.0.30
a2aa5fc13b
many: add diagnostic information about remote pool monitor
666b22a5bb
pool: dont disable pool if mover cancelled before open
cdc124dce6
update apache sshd version due to security vulnerability
b730eec759
[maven-release-plugin] prepare for next development iteration
1322fd2dcc
dcache: fix bug in PoolSelectionUnitV2 match()
eee56dee0a
dcache-xrootd: Fix login handshake to support xrootd clients (> 4.7.0)

Release 3.0.29

cells

The current release improved some problematic error messages has better error reporting to ensure bugs are understood.

httpd

The curren release fixed the issue of change of format in transfers.txt after upgrading from 2.13 to 2.16.

pool

The current release fixed log and alarms duplication when rebuilding broken entry.

webdav

Regression fixed in OPTIONS output.

Changelog 3.0.28..3.0.29

f265e50
[maven-release-plugin] prepare release 3.0.29
0eec693
httpd: restore millis to transfer time for transfers.txt
539d3ed
pool: fix log and alarms duplication when rebuilding broken entry
38f5b2d
cells: better error reporting to ensure bugs are understood
c506caf
webdav: fix regression in OPTIONS response
342e21b
[maven-release-plugin] prepare for next development iteration

Release 3.0.28

pool

The current release fixed regression in GridFTP OPTS CKSM command and GridFTP OPTS CKSM command is supported again.

The current release fixe regression with third-party pull transfers using GridFTP, with dCache acting as the GridFTP client that prevented data integrity checks.

resilience

When resilience tries to copy or remove a file, and it is no longer in the namespace, this should be a fatal error, differently from the discovery that a replica is no longer in cache. These two errors, however, were treated the same way. This is now fixed and the correct behavior is immediate abort of operation when file is not in namespace.

The current release improved error handling for file deletion during scan correctly it fixed bug in formatting and handling of cache exception types.

When doing a pool scan, the storage unit information must be recovered for each file. This is done from the chimera attributes. The code checks an internal map for an index number corresponding to the unit it knows about from the PoolMonitor.

However, if the pool selection unit configuration changes such that a storage unit is eliminated, that mapping will also be deleted from resilience. In the case that the attributes stored in Chimera still have the older storage class information, there will be a NoSuchElementException thrown.

This is fixed now and Pool scans that encounter this situation do not get stuck forever in the queue.

webdav

In RFC 7230, section 3.2, it states that HTTP header names should be case insensitive. Despite this, the standard milton mechanism for acquiring header information is case sensitive, which (in turn) means that several HTTP header values in dCache are similarly case sensitive. There were reports that this case sensitivity has caused problems with certain clients (e.g., go). The current release fixed this issue and headers that control third-party transfers are now case insensitive, so should work with more clients.

Changelog 3.0.27..3.0.28

70c3e94
[maven-release-plugin] prepare release 3.0.28
06fe64a
Update FileOperationHandler.java
398244a
pool: fix data integrity regression for 3rd-party GridFTP pull transfers
c212dd4
pool: fix regression in GridFTP OPTS CKSM command
f86778a
resilience: handle file deletion during scan correctly
1020c75
resilience: add pool operation logging
3927e50
resilience: handle storage unit NoSuchElement failure
b9868d6
webdav: adjust header parsing to be case insensitive
9512b10
resilience: handle all cases where no locations for file may be discovered
05fd04d
resilience: distinguish correctly between file not in repository and file not found
80175bf
resilience: fix bug in formatting and handling of cache exception types
73bd846
PoolManager : set return code to CacheException.PERMISSION_DENIED if staging is not allowed due to stage protection.
04bef34
ftp: update exception logging to include context
a5e8bd2
[maven-release-plugin] prepare for next development iteration

Release 3.0.27

cells

The current release improved handling of rogue domains with badly formatted dCache versions.

configuration

There are configuration options in zookeeper that may affect how well the zookeeper cluster will work with dCache. The lack of documentation of how dCache uses zookeeper prevents admins from tuning their zookeeper instance. This is now fixed and zookeeper configuration is updated with hints on how dCache uses zookeeper, along with the corresponding zookeeper configuration properties.

pool

The current release fixed loading setup that requires queues created by pool.queues.

webdav

The current release fixed the stack-traces on bad client input.

Changelog 3.0.26..3.0.27

2b591bf
[maven-release-plugin] prepare release 3.0.27
fa68a01
cells: better handling of rogue domains with badly formatted dCache versions
c944c47
configuration: update zookeeper configuration with hints
cb033cb
pool: fix loading ‘setup’ that requires queues created by ‘pool.queues’
545d072
webdav: avoid stack-trace on bad user requests
47d18d7
alarms: guard against NPEs on LogEntry getters
7eb6827
[maven-release-plugin] prepare for next development iteration

Release 3.0.26

admin

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 3.0.25..3.0.26

722f000
[maven-release-plugin] prepare release 3.0.26
43fcf92
resilience: restore extractor class value for extractor property
00a2da1
admin: Fix Inconsistent ACL enforcement, RT 9207
2c0cb3a
[maven-release-plugin] prepare for next development iteration

Release 3.0.25

configuration

For some services it was unclear what were the admin’s responsibilities in terms of consistent configuration. The current release updated the documentation describing what is needed to deploy redundant services.

resilience

The current relase improved configuration for namespace provider properties by making them immutable.

srm

The current release improved configuration for srmPing responses.

Changelog 3.0.24..3.0.25

ca0220a
[maven-release-plugin] prepare release 3.0.25
240fa42
configuration: update description for replicable
583eadb
resilience: remove reference to pnfsmanager property
c73bf8e
srm/srmmanager: fix srmPing confusion
da6bbf2
[maven-release-plugin] prepare for next development iteration
99c08d4
resilience: make namespace provider properties immutable

Release 3.0.24

billing

The current release added documentation that describes how a CellAddress and its fields expand.

config

The current release improves documentation for dCache admins by adding obsolete|forbidden annotation for dropped properties. This helps admins to discover changes that might affect their dCache instance. This is both through manual inspection and through the dcache check-config command.

ftp

It has been discovered that timestamp facts reported by dCache GFTP server are expressed in local (to server) time. This is now fixed. Timestamp facts are reported in GMT. Clients like globus-url-copty -sync work properly and ubefrtp -ls returns correct timestamp.

srm

The current release added new configuration properties to allow easy modification.

It upstated as well srm/manager.properties documentation to describe the relationship between srmmanager.root and srm.loginbroker.root properties.

Changelog 3.0.23..3.0.24

c92bfa3
[maven-release-plugin] prepare release 3.0.24
a775bcf
srm/srmmanager: update documentation about root path
8ce10c1
ftp: convert timestamps to GMT (to follow RFC 3659)
1521ad1
config: use consistent terminology
5f59a0f
billing: update documentation to describe CellAddress
216b127
srm,srmmanager: add configuration property to allow easy modification of srm root
7bbcbd3
logback: make socket appender construction depend on log level
db2048a
dcache: release dcache-view 1.1.5 for dcache 3.0
e14e316
config: add obsolete|forbidden annotation for dropped properties
24c8a5f
[maven-release-plugin] prepare for next development iteration
454bb6d
config: add obsolete|forbidden annotation for dropped properties
ea3c73d
pnfsmanager: remove obsolete comments from properties file

Release 3.0.23

Changes affecting multiple services

Christoph Anton Mitterer submitted several corrections to the comment string in properties files.

zookeeper

A race condition in zookeeper caused irrelevant stacktraces to be logged on shutdowns. Since this problem is not easily solvable with Zookeeper 3.4, we decided to change the log-level threshold for NIOServerCnxnFactory. Note that the suppressed class is only used by ZooKeeper server (i.e., not the client). Therefore, only the ‘zookeeper’ service is affected.

Changelog 3.0.22..3.0.23

2f93fd01a5
[maven-release-plugin] prepare release 3.0.23
9bd1cac672
use correct terminology
c3fe563c9e
fixed several typos in the documentation
d3dfad0fe5
added hint that pnfsmanagers must use the same DB
c19e087029
zookeeper: work-around race-condition in zookeeper server shutdown
f87dd852a8
[maven-release-plugin] prepare for next development iteration

Release 3.0.22

httpd

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 3.0.21..3.0.22

9f91b2f
[maven-release-plugin] prepare release 3.0.22
74c1bb2
system-test: add series of functional test for frontend service
1cef325
[maven-release-plugin] prepare for next development iteration
872a906
httpd: Fixed table headers in usageInfo

Release 3.0.21

frontend

Several improvements are added to frontend such as restriction usage is improved and easily configurable JSON is now available via frontend.

srm

The current release enforced restrictions on srmSetPermission operations.

zookeeper

The current release fixed race-condition when ZooKeeper server accepts requests before the server is fully initialised.

Changelog 3.0.20..3.0.21

6a0a31b
[maven-release-plugin] prepare release 3.0.21
d111193
frontend: refactor static (configuration) data
6a48e13
spacemanager: dont try to release expired spaces
52f2075
srmmanager: use path to support srmSetPermission operations
da19337
frontend: fix Restriction usage
29478e4
zookeeper: work-around SessionTracker racy initialisation on startup
d65d5b8
[maven-release-plugin] prepare for next development iteration

Release 3.0.20

Changes affecting multiple services

dCache previously shipped both log4j and log4j-over-slf4j libraries. This patch simplifies deployment and prevents possible problems due to non-deterministic library loading sequences by removing log4j dependencies.

frontend

If frontend was asked to create a directory listing while a file was being uploaded into the directory being listed, previously, an error would occur. This patch addresses that issue.

This release includes a new dCacheView version.

info

The info cell can occasionally send messages before it is properly registered. This can lead to Cannot send message with callback in state... messages that do not correspond to any valid error condition. This patch ensures that messages are only sent as soon as the cell is properly registered.

pool

If the communication between a pool and PnfsManager times out, the error message is not well suited to diagnosing the problem: Failed to instantiate mover due to unsupported checksum type: Request to [>PnfsManager@local] timed out. The checksum type is not playing an important role here. Hence, this patch updates the error message.

zookeeper

Embedded Zookeeper instances would occasionally log stack-traces on startup. This patch adds a work-around.

Zookeeper logs a stack-trace in cases where the client disconnects unexpectedly. This is unnecessary and potentially confusing, so this patch changes Zookeeper’s behaviour to just logging the incident.

Changelog 3.0.19..3.0.20

bb7d0aa838
[maven-release-plugin] prepare release 3.0.20
7af2a80aff
dcache: release dcache-view 1.1.4 for dcache 3.0
3002758a02
zookeeper: work-around racy startup
0ee8801ff5
zookeeper: silence ZK server errors
67fc64b642
dependencies: remove log4j jar
47e98838a4
frontend: fix “Attribute is not defined: SIZE” bug
9f75784527
pool: fix error message on timeout
6407eb9180
info: avoid sending messages too early.
9c518fbedf
frontend,webdav: add supress-wwwauthenticate to allow headers
e65c4bedec
[maven-release-plugin] prepare for next development iteration

Release 3.0.19

frontend

Clients can now send a Suppress-WWW-Authenticate header in order to avoid the native login dialog in browsers.

hsm

A potential space leak in staging requests has been mitigated.

pool

Since there are various reasons for why a mover may be terminated, the previous log message “Transfer was forcefully killed” is not detailed enough to deduce the reason behind the problem. This patch enables more detailed error messages both in the log files and in billing. Note, however, that the door’s report of the failed transfer may duplicate this information.

webdav

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.

In case of failing transfers, doors will log more accurate information.

Changelog 3.0.18..3.0.19

b5a645ede8
[maven-release-plugin] prepare release 3.0.19
32ee8c4542
authentication: suppress WWW-Authenticate if requested
4506319d50
webdav: improve logging on transfer failures
3758693ce4
pool: log why a transfer was forcefully aborted
3446c4b8da
webdav: make Milton work-around more robust
0f5c9f7b17
script-nearline-spi: fix space leak when polling script is used
4466f0d37c
[maven-release-plugin] prepare for next development iteration

Release 3.0.18

http

In an HA setup with multiple pool managers, the httpd (old) service failed to fetch the list of restore requests from all instances. Instead the service would query one of the instances, possibly alternating depending on the grouping of services in domains. This behaviour has been corrected, so that the http interface now shows all restored entries even in HA configurations.

webdav

File transfers through WebDAV doors could potentially bypass any Restrictions checks in PnfsManager. This patch ensures that Restrictions are always checked and observed, and improves PnfsManager’s logging to give information in case a Restrictions check is not posssible.

Changelog 3.0.17..3.0.18

04ac75e09d
[maven-release-plugin] prepare release 3.0.18
335b645fbf
webdav: Fix restriction check when downloading a file
5502db75af
[maven-release-plugin] prepare for next development iteration
79073fcda7
httpd: Fix incomplete restore list in HA setup

Release 3.0.17

frontend

OpenID connect can now be enabled from dCacheView. This change introduces three new properties in the frontend.properties file, frontend.dcache-view.oidc-provider-name-list, frontend.dcache-view.oidc-client-id-list and frontend.dcache-view.oidc-authz-endpoint-list, all of which are documented in the properties file.

pinmanager

Upgrades from dCache 2.13 could occasionally fail during the Liquibase update stage. The database table pinsv3 can not be dropped if it is still referenced by foreign keys of other tables. This modification adds a cascadeConstraints=true modifier to the dropTable command used during the conversion process. Thereby, updates are possible without errors and PinManager starts without issues after an upgrade.

rest-api

Requests to /api/v1/user now include the username of the requestor. This is intended to make working with OpenID Connect tokens easier.

Changelog 3.0.16..3.0.17

44f602a94e
[maven-release-plugin] prepare release 3.0.17
33fd02c298
httpd, admin: Fix some hard-coded cell names
fb5520975e
frontend: expose open-id connect to dcache-view
7fec3318d9
rest-api: include username to the user attributes
3c465934ee
Add cascadeConstraints=“true” to liquibase dropTable action on pinsv3 table
8083ea91bd
[maven-release-plugin] prepare for next development iteration

Release 3.0.16

nfs

Invalidation of VFS caches has been improved, so that there is no stale information left for dot files.

pool

Error handling in pools was improved for systems using CEPH backends.

Changelog 3.0.15..3.0.16

37e2ad1eac
[maven-release-plugin] prepare release 3.0.16
6d56e52d2d
nfs: bind vfs cache invalidation with file’s layout
89a192ae18
ceph: map RadosException to corresponding IOException
63d766b889
[maven-release-plugin] prepare for next development iteration

Release 3.0.15

nfs

Debugging of stuck transfers has been facilitated by adding the status of transfers to the output of the show transfers command.

The assignment of movers to NFS doors has been made more robust.

system-test

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 3.0.14..3.0.15

7c9d20a042
[maven-release-plugin] prepare release 3.0.15
a3005ede58
nfs: show transfer status when displayed
605db8097b
system-test: update disposable-CA generated credentials
a45eb26bb3
nfs: fix loosing movers due to short timeout
d17e6332f2
[maven-release-plugin] prepare for next development iteration

Release 3.0.14

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 .

chimera

In order to improve IO performance, the way dCache updates atime values was modified.

nfs

An internal change in the NFS door code helps reducing irrelevant exceptions being logged.

srm

SRM no longer times out file requests. This alleviates a rare race condition where timeouts for the file request and file access competed. Requests that time out now always return SRM_REQUEST_TIMED_OUT at request level and SRM_FAILURE for the SURLs in that request.

Changelog 3.0.13..3.0.14

7a614f2ceb
[maven-release-plugin] prepare release 3.0.14
ace6b59de1
ceph: log repository IO error
706795f5b6
update postgresql driver to version 9.4.1212 to address issue with liquibase changeset and postgresql 9.6 (see liquibase bug 2939)
f6b7af5112
srm: remove file-level timeout
95c465df9f
chimera: do not update inode generation on atime only update
08a3b4cb10
nfs: do not add Origin to read-only subject
a3df429db1
[maven-release-plugin] prepare for next development iteration
2434f8375a
parent/dcache: add mail jar to deployment

Release 3.0.13

pool

Current release improves handling of CEPH exceptions, so that pools can react appropriately when request for a missing file.

Fixes double close on p2p.

Changelog 3.0.12..3.0.13

484a88d
[maven-release-plugin] prepare release 3.0.13
6562643
[maven-release-plugin] prepare for next development iteration
194c54a
pool: handle CEPH exceptions
7f7d6e2
pool: fix double close on p2p

Release 3.0.12

chimera

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

nfs

The current release fixed interoperability with RHEL7-based clients and handling of invalid principals on SETATTR sent by OSX client.

Changelog 3.0.11..3.0.12

4770eea
[maven-release-plugin] prepare release 3.0.12
9acdb7e
libs: update to bug fix release nfs4j–0.13.1
bd98067
srmclient: fix handling of checksum options
be5101d
[maven-release-plugin] prepare for next development iteration
0be5408
chimera : handle empty paths elements path2inumber stored procedure

Release 3.0.11

chimera

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

ftp

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.

srmclient

Directory listing for CASTOR was resulting in a NullPointerException when the request size is too large, due to the fact that the CASTOR SRM interface limits the maximum number of responses to 1024. This is now fixed.

Changelog 3.0.10..3.0.11

57ebca3
[maven-release-plugin] prepare release 3.0.11
8e607b6
srmclient: fix compatibility with castor
3389013
ftp: prevent execution of most commands when unwrapped
c422b7a
chimera: fixed database query for storing multiple checksums for a file.
71a6ac9
ftp: do not fail proxy transfer if read returns zero bytes
c480738
[maven-release-plugin] prepare for next development iteration

Release 3.0.10

ftp

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.

lm

The current release fixed the issue with duplicate location manager connectors.

Changelog 3.0.9..3.0.10

2b4e595
[maven-release-plugin] prepare release 3.0.10
301142f
lm: Do not rely on thread interrupt for shutdown
6b93af9
ftp: implement the MLSC command
363149a
[maven-release-plugin] prepare for next development iteration

Release 3.0.9

ftp

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

resilience

When a file has no readable replicas, the default behavior of resilience is to raise an alarm. Files marked CUSTODIAL were excluded from this. The current release fixed this in a way that an alarm is raised for all files without readable disk copies, whether the file is CUSTODIAL or not.

restful

dCache has the concept of a home directory: each user may have a directory that is somehow “theirs”. This information was not available to clients accessing dCache via the REST interface. The current release fixed this and querying /api/v1/user provides the user’s home directory in addition to other user-centric information.

The RESTful interface exposed some namespace-targeted information through /api/v1/namespace, and QoS information through /api/v1/qos-management/namespace. This was undesirable as dCache exposes namespace-targeted operations in two places. This is now fixed and the client may obtain information by querying /api/v1/namespace.

The current release improves the error handling for RESTful interface. Currently the error JSON object contains potentially useful information in the message and the bugs are logged.

srm

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 3.0.8..3.0.9

b243cb0
[maven-release-plugin] prepare release 3.0.9
926bf7c
srm-client: use default GridFTP port if not specified
6b65522
ftp: Add support for SITE WHOAMI command
d3d12b9
resilience: remove check on CUSTODIAL for inaccessible files
8b4ab7c
ftp: update parsing of CLIENTINFO command
5911a18
srm: include remaining request lifetime in various responses
c3662f2
srm: update srm request.*.lifetime configuration properties documentation
0284bac
ftp: modify facts describing namespace ownership
4136c76
ftp: add support for SITE TASKID command
f8c16f5
ftp: add initial support for checksum performance markers
031862e
restful: support querying QoS through namespace
8d74684
[maven-release-plugin] prepare for next development iteration
393ba5d
rest: add home directory to user info
b5c8a70
restful: improve error handling
fccd7bf
ftp: add support in OPTS RETR for specifying performance marker frequency
19367b7
ftp: show SIZE facts for directories
bbf1c08
ftp: add support for paths relative to home directory

Release 3.0.8

frontend

This release of dCache ships with an updated dCache View version.

xrootd

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 3.0.7..3.0.8

b856742
[maven-release-plugin] prepare release 3.0.8
2056dd7
xrootd : use lower case for checksum algorithm names when replying to checksum queries.
a87a7c6
[maven-release-plugin] prepare for next development iteration
cb40a59
dcache: update dcache-view version to 1.0.5

Release 3.0.7

cleaner

The list of Delete Notification targets that the Cleaner will inform when a file’s content has been cleaned is admin-configurable. In order to facilitate this configuration, the ‘show info’ command has been modified to also show Delete Notification targets.

srm

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

systemtest

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

Changelog 3.0.6..3.0.7

a6c0932
[maven-release-plugin] prepare release 3.0.7
4e25147
cleaner: show delete notification targets
4d70728
systemtest: allow anonymous dcap activity
fa18be9
[maven-release-plugin] prepare for next development iteration
54038a3
srm: fix recovery procedure in internal copy if source is deleted

Release 3.0.6

cells

Fixed a race condition and logging bug affecting cells relying on zookeeper. This could affect location manager, space manager and pool manager.

gplazma-ldap

Wrong quoting of two gplazma property strings could occasionally cause IllegalArgumentExceptions to be thrown when using LDAP-based logins. This problem has now been fixed.

locationmanager

Fixed a problem in Location Manager in which it would fail to shut down and could leave two overlapping connectors running.

pool

The process of deleting files on pools has been made more robust against potential problems. This further decreased the likelyhood of repository corruption during file deletion.

This release improves transactional stability of the built-in Berkeley database in pools.

srmclient

SRM Client v1 received improved error handling. Most noticeably, expired credentials no longer cause a RuntimeException but an IOException.

Changelog 3.0.5..3.0.6

92c752d
[maven-release-plugin] prepare release 3.0.6
52becab
pool: Fix race and nested transaction problem during deletion
cc8eb74
pool: Fix transactional behaviour with Berkeley DB
042c8ef
lm: Fix lost thread interrupt that prevents shutdown
b3d670f
cells: Schedule watcher notifications on cell event thread
b0bab0c
gplazma-ldap: fix default properties for root and home
a21d861
[maven-release-plugin] prepare for next development iteration
ecdf153
srmclient: consolidate credential expiry, don’t use RuntimeException

Release 3.0.5

frontend

Included a new version of dCacheView with minor improvements.

nfs

The handling of NFS requests for offline files has been improved. Such requests will no longer attempt unneccessary retries.

Changelog 3.0.4..3.0.5

6b4ef4c
[maven-release-plugin] prepare release 3.0.5
0b6d777
dcache: update dcache-view version to 1.0.4
123b47c
resilience: fix fairness algorithm bugs in file operation map
3c04c2d
nfs: rework pool selection to get rid of too many retries
61e8ed1
minor typo corrections
44ad5c2
[maven-release-plugin] prepare for next development iteration

Release 3.0.4

dcache

The current release updated dcache-view version.

pool

In the current release changes hsm ls command so that it lists all configured HSMs if no argument is provided.

The current release fixed URISyntaxException in ceph backend.

poolmanager

Ability to restrict staging to specific protocol was missing in stage protection specification. Additionally it was not possible to specify DN, FQAN, storage group and protocol that are not allowed to stage.

This is now fixed and stage protection configuration can be used as a blacklist.

Changelog 3.0.3..3.0.4

21783c2
[maven-release-plugin] prepare release 3.0.4
5314301
stage protection : minor correction for test to pass
9882a8f
3.0 compatibility changes for stage protection
1f7e1c2
pool: fix URISyntaxException in ceph backend
df629f2
PoolManager : stage protection add protocol to the list of discriminators
26c0f5f
dcache: correct the output directory
efd258c
dcache: update dcache-view version
c850ff0
pool: ‘hsm ls’ must show all configured hsm if no argument is provided
03d3434
[maven-release-plugin] prepare for next development iteration

Release 3.0.3

cells

The current release fixed an issue causing doors to log a stack trace on startup.

nfs

Remote I/O error was generated on the client side accompanied by stack trace on server side when user fumbled .(get) command. The is fixed now and client side sees no such file or directory error and no stack trace in log file.

srmclient

The current release fixed out of memory issue for srmls -l showing particular directory.

srm-common

The current release improved user experience by ensuring that bugs and JVM-critical errors do not trigger a retry of the operation, but favour a fail-fast approach.

transfermanager

The output of info, queue, ls internal and ls external admin commands in RemoteTransferManager has been improved.

Changelog 3.0.2..3.0.3

e0c5ab9
[maven-release-plugin] prepare release 3.0.3
a832e71
srm-common: don’t retry when JVM runs out of memory
104d79a
transfermanager: tidy up output from ‘info’ ‘queue’ and the two ‘ls’ commands
c814f54
cells: fix ‘This stopwatch is already stopped’ error
3859a07
srmclient: use streaming deserialisation, allow more memory.
a1e2ffb
chimera-enstore: specify fields order on insert
90021dd
NFS: throw FileNotFoundHimeraFsException in case of fumbled “.(get)” command
8768838
[maven-release-plugin] prepare for next development iteration

Release 3.0.2

cleaner

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.

doors

Log when the list of auto-discovered NIC interfaces changes. Support logging the time taken to acquire NIC information. Update logged messages to indicate the context.

nfs

The NFS implementation was updated, improving spec compliance.

pool

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

When deleting files, the cleaner submits batches of files to delete to a pool, but this batch is then processed sequentially. In order to improve deletion performance, such deletion tasks are now run concurrently. The increase in concurrency can reduce the overhead of syncing the meta data to disk after every deletion, thus increasing the deletion rate.

srmclient

While srmfs’s ‘-debug’ option already provided lots of information, including the SOAP request sent to the server, it did not provide the server’s response until now. This has been added, making troubleshooting easier for some problem classes.

The SRM client has been updated to work correctly if it has been installed in a path containing spaces.

Glob expansion in SRM client has been overhauled, allowing much faster namespace operations on DPM when globbing is in use.

srmfs would not work with paths that require special characters to be percent-encoded. This included path names with spaces or hash symbols. After this update to srmfs, such path names are permissible and all namespace operations and file transfers on them will succeed.

srmfs now accepts single commands directly as command-line arguments, e.g. ‘srmfs srm://srm.example.org/path ls’

Exiting will block if there are ongoing transfers. Notifications are printed, which should provide feedback on activity.

The user can force an exit by using Ctrl+C, which will still result in a clean exit.

Changelog 3.0.1..3.0.2

6a23d46
[maven-release-plugin] prepare release 3.0.2
a2f59a5
nfs41: fix open-stateid leak introduced in 0702d73
affa1b4
srmclient: support srmfs with command on command-line
97f2f8d
srmclient: show SOAP response from server when debug enabled
842f8f0
srmclient: percent-encode paths that require it
20ffed0
srmclient: fix stat/ls caching for glob expansion for DPM
d2d4b4c
srmclient: fix deploying srm-client in path with spaces
192462c
srmclient: fix Java 7 compatibility for srmfs
ba8b836
doors: add diagnostic information for NIC auto-discovery
8a8b83d
pool: Delete files concurrently
8d77acc
cleaner: Send notification more often
7a542d2
pool: Fix csm check command in the pressence of broken files
1fdb643
[maven-release-plugin] prepare for next development iteration
a6f5d40
nfs: discover open-stateid during layout return

Release 3.0.1

cells

The current release improves reply handling in batch processing.

ftpclient

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

The dCache GridFTP client was not working with Globus FTP server. This is now fixed.

pool

The current release introduces a new pool.mover.nfs.thread-policy property, which add a spossibility to control
nfs request processing policies. dCache admins could choose one of the strategies for nfs request processing.
Please note, that by default the request processing policy is set to same-thtead strategy.

srmclient

srmfs was issuing SRM requests that DPM did not accept. srmfs also did not accept the responses from DPM. This was preventing any file transfers for succeeding. This is now fixed and srmPrepareToGet and srmStatusOfGetRequest operations work as expected with DPM.

The two ls commands (lls and ls) was not supporting multiple arguments or glob expansion. Both were taking an optional, single argument, which was limiting while discovering what content is available and was not matching the expectation of the users. The current releases fixes this limitation and Multiple arguments and glob expansion are now supported for the ls and lls commands.

Correct information displayed about directories from DPM.

This release of dCache improves the readability of the error returned to the client when server declines to add an explanation.

Changelog 3.0.0..3.0.1

0f643c0
[maven-release-plugin] prepare release 3.0.1
3e2e814
cells+dcache: fix Reply handling in batch processing
9f5745f
ftpclient: fix compatibility with Globus FTP server
1670622
pool: optimize checksum channel calculation
b6f591c
pool: simplify checksum channel logic
a2375f1
srmclient: ensure a reasonable error message
330e9f5
srmclient: fix DPM compatibility with SRM transfer requests
6d7b7e6
ftpclient: fix multiline ADAT reponses
9abf787
ftpclient: encrypt SITE CLIENTINFO command
7279b09
pool: add a possibility to control nfs movers threading policy
8db0380
srmclient: add glob support for lls and ls
8cb2378
srmclient: avoid NPE when stat directory with DPM
d12117a
[maven-release-plugin] prepare for next development iteration

Release 3.0.0

The most obvious change is the transition to a new versioning scheme that better reflects our existing release and compatibility policy.

Once a year, dCache.org releases a golden release. The golden release maintains compatibility with pools of the previous golden release and any intermediate version. The release after the golden release drops compatibility with pools older than the golden release it surpasses. The new versioning scheme reflects the incompatibility by incrementing the major version number in the release after a golden release. Thus the golden release marks the last release of a particular major version. Like before, patch level releases are identified by a third number in the version.

As always, this dCache release contains many internal changes, many performance improvements and many cosmetic changes that will not be explicitly described in the release notes. The changelog at the end contains the complete list.

As always in a release after a golden release (an .0 release in the new versioning scheme), configuration properties previously marked obsolete have been dropped. Configuration properties previously marked deprecated are now obsolete. You should run dcache check-config before upgrading and fix any warnings. Rerun dcache check-config after upgrading.

The following are noteworthy changes or changes that you as an admin should know about when upgrading. The changes are described in no particular order.

admin: no longer supports DSA keys

Upon upgrade, the post installation script will automatically generate RSA keys instead. Your ssh client may warn you about the changed server key. The admin.paths.dsa-host-key.private and admin.paths.dsa-host-key.public properties are obsolete.

Automatic detection of current PostgreSQL master

dcache.db.host and derived properties now accept a comma separated list of host names when used with PostgreSQL. This is intended for use with a cluster of PostgreSQL servers using streaming replication. The JDBC driver automatically detects and uses the current master server. In case a slave is promoted to master, the JDBC driver automatically discovers and reconnects to the new master without requiring a dCache restart.

caNl 2.1

Although this change should be transparent, the update of the Common Authentication Library, the Bouncy Castle cryptographic library, the ARGUS library, and the VOMS library is critical and you never know if this breaks something. Keep an eye out for CA and client problems.

On the positive side, this upgrade allowed us to update the Apache SSHD library which hopefully fixes a number of compatibility problems observed with some Python SSH libraries.

billing: empty format strings suppresses output

Previously, if a formatting string was undefined, billing records would be logged using a default format. This has been changed such that billing records with an undefined or empty formatting string are not added to the billing file. This allows specific record types to be suppressed.

billing: make billing files self-describing

Upon startup or when rolling over to a new billing file, the billing service now outputs formatting instructions to the billing file. These are lines starting with ## followed by the message type and the configured formatting string. Parsers may make use of the instructions to recognize the format. At the very least, third party parsers should be updated to ignore lines starting with a hash symbol.

The billing indexing utility has been updated to recognize these formatting instructions and thus can parse the billing files even when the output format is changed and billing files thus contain a mix of different formats.

Configuration properties with the common prefix billing.parser.format were added to define the default format for old billing files without formatting instructions. Thus the output format can be changed while still maintaining compatibility with old billing files.

billing: expose full address in billing record

Previously, some billing records were logged with a full cell address while others only included a cell name. The default format retains this behaviour, however the full cell address is now exposed in the formatting string. The cell name and domain name are also exposed separately, making it possible to output these as separate fields. Check the instructions in billing.properties for details.

billing: make service replicable

It is now possible to add multiple billing services if all components (including pools) have been updated to version 3.0. All instances of billing receive all billing records.

Introduced dcache.queue.billing and dcache.topic.billing properties and marked dcache.service.billing obsolete.

Setup files are now restricted to setup commands

The setup files of various services, in particular poolmanager.conf and setup on pools, are now restricted to setup commands. These are the commands the services themselves use when generating the setup files. Previously any cell command could be included, even though the command would be lost when the setup file was regenerated.

Setup file syntax is now checked before it is loaded

When reloading a setup file at runtime using the reload command, the file is now checked for syntactic errors before being applied to the running service. If an error is found, the file is not loaded and the service is unaffected. Previously, such errors would leave the service in an inoperable state.

Legacy cell topology support has been dropped

dCache 2.16 introduced the use of ZooKeeper for topology discovery as well as the use of core domains as message brokers and satellite domains connect to core domains. For backwards compatibility, 2.16 included the legacy UDP discovery service in dCacheDomain and dCacheDomain was a core domain by default. This UDP service is no longer included and compatibility with pools older than 2.16 has been dropped. dCacheDomain no longer defaults to being a core domain and it is in fact no longer a special name - you may call it whatever you like.

This however means that unless you define some domain as a core domain, none of your dCache domains will be connected and you will be left with an inoperative dCache. If you haven’t already done so in 2.16, upon upgrade designate one of your domains as a core domain by defining dcache.broker.scheme = core for it. Your former dCacheDomain would be an obvious candidate for such a domain.

Lots of improvements to service life-cycle management

We made lots of changes to the life cycle of dCache cells. These changes are mostly internal, but the short story is that we try to improve how dCache starts and in particular how it can cleanly shut down.

In the past, clean shutdown wasn’t all that important as the service would be inoperable anyway when shut down. With the addition of high availability deployments, this assumption is no longer true and we would like to be able to shut down cleanly. The goal has not been achieved yet in dCache 3.0, as there are still plenty of issues causing exceptions on shutdown, but the situation should be better than in previous releases.

As an admin, the obvious change you will observe is that errors in the log files have changed. In particular we log more stack traces when detecting errors and we log cells that shut down slowly; even though slow shutdown isn’t necessarily an error as many services now do more work while shutting down.

New wire protocol for cell communication

A new wire protocol for interdomain TCP connections for cell communication has been introduced. This protocol has lower overhead than the old protocol. Connections with 2.16 domains are detected automatically and the old protocol is used as a fallback.

dcap: fewer threads and faster

The DCAP door was refactored. Compared to the earlier version it got:

  • about half the number of threads than before,
  • reuse of threads to reduce the overhead,
  • detects client disconnects even if the door is busy,
  • the legacy feature to block a DCAP door by defining the dcapLock entry in the domain context has been removed.

spacemanager: improved latency on non-spacemanager transfers

Space manager is sort of a proxy for pool manager. When enabled, doors send requests they usually would send to pool manager to space manager instead. This had the effect of adding a little extra latency to all transfers, even reads and unmanaged transfers.

The interaction between pool manager, space manager and doors has been heavily refactored. One consequence is that the space manager can inject its own behaviour into the doors. This allows the requests to be sent directly to pool manager if it can be determined that space manager is not involved in processing it.

poolmanager: persist setup file in ZooKeeper

The pool manager setup is now preserved across restarts even without saving the setup to disk. This is achieved by persisting the setup in ZooKeeper whenever it changes. Upon restart, the setup is loaded back from ZooKeeper.

The consequence is that poolmanager.conf is only loaded when either no setup can be found in ZooKeeper, or when the admin explicitly uses the reload command. Restarting pool manager will not reload poolmanager.conf. As before, the save command is used to update poolmanager.conf and the file is not updated automatically.

This feature forms the basis of synchronizing the setup between multiple instances of the pool manager in a high availability deployment of dCache: Whenever the setup changes in one pool manager, the setup is stored in ZooKeeper and other instances discover the change and apply the update locally.

poolmanager: persist pool read-only status in pool manager setup

When using the psu set pool -rdonly command to mark a pool as read only, this restriction was not persisted in the pool manager configuration file. Consequently, the read only status would be reset by a pool manager restart.

The read only status is now stored in both poolmanager.conf and in ZooKeeper and thus the read only status of a pool survives restarts.

Note that the read-only status in pool manager is a separate concept from the pool disable state defined in pools.

poolmanager: make the service replicable

Pool manager is now a replicable service. This means one can create multiple redundant instances of pool manager and the load will be distributed over the available instances. The pool manager configuration is synchronized through ZooKeeper. For a given set of pool managers, a particular file is always processed by the same instance.

poolmanager: allow decentralized pool selection

Pool manager has traditionally been the central place in which all pool selection (assigning transfers to pools) has been performed. Pool manager allows great flexibility in how this selection is performed, including cost based replication, load and space triggered fallbacks, staging from tape or to export pools, etc.

To accurately enforce the different selection strategies and the various cost limits, it was essential that pool manager had a complete picture of the load of all pools. Cost updates from pools are only distributed every 30 seconds, so to obtain the necessary accuracy, pool manager would update its internal cost estimates whenever it selected a pool and it would also intercept messages between doors and pools indicating the beginning and end of a transfer.

This model falls apart if pool selection is distributed over several components as any adjustments to the internal cost state would be local to the component selecting the particular pool. Such distributed pool selection could be found in a high availability deployment of dCache in which multiple redundant pool managers each perform pool selection for a shard of the files. Another, not currently implemented, scenario is delegating pool selection to doors to reduce the latency of pool selection.

dCache 3 reimplements how the various cost limits of pool manager are enforced. Rather than assuming that a pool manager has perfect knowledge, pool selection is performed under the assumption of reasonably, but not perfectly, accurate data. Whenever the pool manager selects a pool it also encodes the assumptions under which this pool was selected (e.g. load is below a certain threshold, pool has enough free space, etc). This assumption is forwarded by the door to the pool and checked by the pool before enqueuing a mover. If the assumption fails, a cost update is prematurely submitted to pool manager and the mover creation request is rejected. The door will resubmit the pool selection request to pool manager, which now has more accurate cost information.

This change is mostly invisible, although it may certainly affect the dynamic behaviour of pool manager, replication and assignment of transfers to pools.

By the way, the cm info command of pool manager has been removed as there is nothing useful for it to report now. The commands cm set active, cm set update, cm set debug, cm set magic are obsolete. These should be removed from poolmanager.conf on upgrade.

poolmanager: improve stability of hot spot replication

Pool manager can be configured to trigger replication of files when the source pool exceeds a certain load threshold.

Unfortunately, the load was defined in terms of the average relative queue length of the various mover queues on the pool, including the queues of pool to pool transfers. Since pool to pool queues typically (and wisely) have low limits, the relative weight in the load calculation of pool to pool transfers is often high. The consequence is that triggering a replication may itself push the calculated load of the pool higher, triggering even more replications. This is bound to generate an unstable system.

dCache 3 changes how the load of a pool is calculated to exclude the two pool to pool queues as well as the HSM stage queue from the pool calculation. Existing cost cut limits may have to be retuned as the calculated performance cost has changed.

pool: drop the limit on pool to pool receive queues

A pool has two queues dedicated to pool to pool transfers; one for sending files and one for receiving files. The receiving end does not limit the number of concurrent transfers to avoid deadlocks in pool to pool transfers. For purposes of calculating a performance cost, the pool did however define a limit anyway (as the load was determined as the average queue length relative to the queue limit).

As described in the previous section, load no longer considers the pool to pool queues and thus the unenforced limit on the receive queue has been dropped. The pool pp set max active command has been deprecated. The queued and max columns of the pool to pool receive queue in webadmin and httpd are now empty.

pool: log why a mover is killed

The pool has been extended with support for injecting a message when killing a mover. Components and services that kill movers make use of this feature to document why the mover was killed. This information is included in billing and depending on the protocol it may also be propagated to the client.

pool: allow continuous flushing to tape

Traditionally, flush to tape on pools was batched by storage class. Once a batch of files began to flush, new files arriving on the pool would not begin flushing until the running batch would complete. For HSM subsystems that do their own batching, the batching in dCache is typically counterproductive as the driver or some external component may wait for more files even though such files would be held back by the pool to be included in the next batch.

To resolve this issue, dCache 3 adds an -open option to the queue define class command in the pool service. This option alters the logic such that newly created files are added to an existing batch immediately.

pool: support polling scripts with the HSM script driver

The classic script HSM driver invokes an external script to flush, stage or remove files from tape. Usually, this operation is blocking, meaning that many concurrent instances of this script will run at the same time.

Some clever admins have found a workaround for this scalability issue by letting the script poll for the completion of the operation. Rather than block, the script terminates with a failure. This relies on dCache pools retrying HSM operations. This works well, except that it fills the billing files and log files with error messages.

To support this type of script, dCache 3 extends the script driver to recognize 72 as a special return code. When the script exits with this return code, the driver places the request back into its queue and retries it without propagating the error to dCache. The result is that the operation is retried without spamming the log files and billing files. The retry period can be configured using the new -p:delay option.

Note that for flush, the retry triggered by exit code 72 is within the same batch. Thus new files will not be added to the queue until the batch completes, except if the flush queue is defined with continuous flushing (see the -open option in the previous section).

pool: alter failure semantics for empty files

When upload to a pool fails, the file is usually registered in the name space like any other upload - if a checksum or file size was predefined, the file may optionally be marked broken. In either case, the file would be considered “complete” in the sense that no further modifications to the file are allowed.

One common failure mode for uploads is when no data is uploaded at all. This could be because the mover was killed before it could be started, that is, while it is queuing; or because the client didn’t connect to the mover; or because the mover failed to connect to the client. Networking issues could be a common source of such failures. Due to the failure semantics, such movers could not be retried by the door.

In dCache 3 the failure semantics for such empty uploads has changed such that the replica on the pool is instead deleted and not registered in the name space. The name space entry is left in its “virgin state”. Protocols like NFS and DCAP can open such files for writing, allowing the upload to be retried.

Eventually, other doors will be updated to retry write mover creation, but the current release doesn’t do that yet.

pool: allow runtime management of mover queues

Pools allow movers to be placed on queues. Several queues may be created, e.g. to treat internal and external transfers differently, or to queue transfers by protocol.

Previously, custom queues were defined using the pool.queues configuration property, requiring a pool restart to change the defined queues.

In dCache 3, the admin shell commands mover queue create and mover queue delete have been added instead. The existing pool.queues property is deprecated. The queue definitions are persisted to the pool setup file when issuing the save command.

By the way, the unused mover remove command has been removed.

pool: deprecated commands for HSM limits have been removed

The deprecated rh set max active, st set max active and rm set max active are no longer support in pool setup files. Use the equivalent provider specific options instead. Upon upgrade we recommend running the pool save command before upgrading - at least if this has not been done since upgrading to 2.9.

pool: optimize Berkeley DB meta data updates

The part of the pool abstracting file and meta data operations - the repository - has been heavily refactored. One consequence is that Berkeley DB updates are now transactional, improving consistency and hopefully performance too as updates are batched together.

pool: allow CEPH to be used as a storage backend

One consequence of the heavily refactored repository component in pools is that it has become easy to plug in alternative backends. CEPH is a distributed block storage that has gained popularity in recent years. In dCache 3, CEPH can be used as a backend for pools, allowing the file data to be stored in CEPH. The meta data is kept in the traditional Berkeley DB format.

See the documentation of the pool.backend property for choosing an alternative backend. Several CEPH related properties starting with pool.backend.ceph have been added. Consult the documentation in pool.properties for details.

One consequence of the change is that HSM drivers can no longer expect replicas to be stored as files on the local file system. Instead replicas in a pool are now identified by a URI. When developing HSM drivers or HSM scripts, this should be taken into consideration. Backwards compatibility is however important to the dCache team and as long as a local file system is used, the HSM driver and HSM scripts are passed a regular path rather than a URI.

It has to be stressed that CEPH support is considered an experimental feature. The more encouraging news is maybe that this shows that it is fairly easy to hook alternate storage backends into dCache.

pool: sorted listing of movers

In the nice to have category, dCache 3 supports options in the mover ls admin shell command to sort the output by mover’s last access time and transferred data size.

ftp: port door to Netty

Netty is an non-blocking I/O framework used by xrootd doors and for xrootd and http movers in pools. In dCache 3.0 ftp doors make use of Netty too. This is pretty much transparent, but it allows the door to scale to more concurrent connections with lower resource usage.

By the way, we also upgraded to Netty 4.1 with buffer pooling enabled - this should reduce Java garbage collection overhead.

ftp: abort upload if SRM invalidates TURL

Previously, when the transfer URL generated by the SRM was invalidated, either because it expired, the request was aborted, or the SURL was deleted, the underlying FTP upload would be allowed to continue. The upload would eventually fail when the last byte had been transferred, wasting bandwidth and generating a misleading error.

This has been changed such that the SRM will kill an FTP upload when it invalidates a TURL.

srm: added extra fields to the srm access log

The srm access log contains a description of every client request. In dCache 3, several extra fields have been added. In particular for single file requests, the access log now contains the path of the file to which the request applies.

webdav: use relative links in generated HTML

The default templates for the HTML view of the webdav door now use relative links. This should make it easier to use the door behind a reverse proxy or load balancer.

webdav: allow template to be reloaded at runtime

The webdav service generates the HTML view from admin configurable template files. A reload template command was added to trigger the template to be reloaded at runtime. The new webdav.enable.auto-reload.templates configuration property may be used to enable automatic reloading whenever the template changes.

xrootd: select mover queue by application name

The xrootd door can now select a pool mover queue by client application name. See the documentation of the xrootd.app-ioqueue configuration prefix in xrootd.properties for details.

It should be stressed that the application name is submitted by the client and is easy to fake.

xrootd: recognize oss.asize parameter

Xrootd clients submit the file size upon upload as an oss.asize property. dCache now recognizes this property and uses it in space reservations, pool selection, and file verification. If the uploaded file does not match the specified size, the file is marked as broken.

nfs: autodiscovery of nfs4domain for idmapping

For correct user id mapping nfs4 requires that server and client use the same naming scope, called nfs4domain. This implies a consistent configuration on both sides. To lower deployment overhead a special auto-discovery mechanism was introduced by SUN Microsystems - a DNS TXT record. Staring from version 3.0 dcache supports this discovery mechanism. When nfs.domain property is set, it gets used. If it’s left unset, then DNS TXT record for _nfsv4idmapdomain is taken or the default localdomain is used when DNS record is absent.

See nfsmapid and DNS TXT Records for more information.

nfs: improved protocol compatibility and stability

Nfs door now can share a single mover between multiple transfers to a file by the same user coming from the same host. This should improve compatibility with existing clients as they expect such behavior which is allowed by nfs protocol specification.

nfs: added support for flexfile file layout

Flexfile layout type aims to be an extension to pNFS to allow the use of storage devices in a fashion such that they require only a quite limited degree of interaction with the metadata server. The RHEL 7.2 and it’s derivatives are providing experimental support for flexfile layout type. With this release, dcache starts to issue flexfile layouts if requested by a client.

Add support for the HAProxy proxy protocol

The ftp, xrootd, webdav, srm, httpd, and frontend services have been extended with support for the HAProxy proxy protocol. HAProxy or similar load balancers are essential components of a high availability deployment.

These load balancers act as frontends for redundant services in dCache. One problem of using such a proxy is that the real IP address of the client is hidden from dCache, thus obscuring dCache log files and hindering network based pool selection.

The HAProxy proxy protocol is an adhoc standard supported by many load balancers and proxy servers. It adds a small header to the connection between the proxy and the backend service revealing the IP address of the client to the backend. The new configuration properties .enable.proxy-protocol enable support for this protocol. Note: Once enabled, direct access from client to the respective door must be blocked as clients would otherwise be able to conceal their real address to the service.

Check the documentation in the relevant default .properties files for information of which versions of the proxy protocol are supported.

New mechanism for determining services to monitor

The httpd service - both the old style and the newer webadmin interfaces - monitor other services in dCache. The mechanism for determining which services to monitor has changed. In the past the list of services was configured in httpd; this has been replaced by a multi-cast topic. Any service subscribing to this topic will be monitored and shown in the web interface.

The name of the topic is defined by the property dcache.topic.watched, although there shouldn’t be a need to change this (maybe if one wants to partition the services to be monitored by multiple httpd instances, one could consider introducing multiple topics, but why one may want to do this eludes me). The important part is that this is the topic a service should subscribe to if it should be monitored. By default, gplazma, pnfsmanager, poolmanager, spacemanager, and srmmanager subscribe to this topic. Doors and pools are discovered through other means and are monitored despite not subscribing to the topic.

Production ready support for high availability deployments

As may have been obvious from several of the changes above, lots of work went into enabling high availability (HA) deployments with dCache. Some benefits of such a deployment are:

  • No single point of failures
  • Rolling updates
  • Horizontal scaling
  • Symmetric deployments

For most parts, there isn’t much to configure for an HA deployment as one can simply deploy several instances of the various services. There are however several pitfalls, e.g. which databases should be shared and which should not. Available documentation should be studied carefully and any deployment should be tested before it is rolled out on the production system.

Several external components are required for a true HA deployment to load balance between doors (e.g. HAProxy) and handle HA for PostgreSQL (repmgr).

Also, there are still a few components that do not handle redundant deployments well, eg. resilience and replica manager. It may be argued that redundancy of these components is not essential.

Controlled draining of services is currently not automated and requires some knowledge of the inner workings of dCache. Although support for HA may be production ready, it should currently be considered an expert feature.

Changelog from 2.16.0 to 3.0

45fed81
srmclient: by default show only CN of owner in ‘ls -l’ output
10aa51c
resilience: python script for making database changes necessary for migration from old replica manager setup
12a45fa
pool: Reduce lock contention in migration module
564442e
srmmanager: Adjust semantics of concurrent upload detection
90e8d7b
spacemanager: Fix shutdown bug causing a file to leak from a reservation
88ec2b3
spacemanager: Fixes a message bounce bug
bd00ac7
srmclient: add SRM call statistics
4f1d904
srmclient: update command names in srmfs
71192e5
srmclient: fix srmfs ‘get permission’ command
25c313e
srmclient: fix compatibility with Bestman
951fb06
srm: Sumbit token less releaseFiles requests to all backends
0d6e02f
srmmanager: Support upload detection in clustered environments
28f79b6
srm: Redefine the semantics of active upload checks
e320cee8c
srmmanager: Refactor how various operations handle active transfers
321a380
srmclient: probe for SRM endpoint parameters that the user doesn’t specify
2844429
Resilience: separate out the data structures for handling storage units from those for pool groups
ced4286
Resilience: Support matching the universal and class default storage unit expressions
87b5e57
dcap: don’t create stack-trace if tunnel fails due to bad client
ce0b9e3
PoolManager : stage protection, fix error in stage.fragment
26fa950
webdav: fix thrown NPE when CORS is set
c445044
dcap: expose dcap client version limit
d60ec26
dcap: Register DCAP interpreter as a command listener
8335057
dcap: fix Kerberos dcap if principal contains a ‘-’
fd7b21c
dcap: fix regression in handling old version
1d14d80
cells: Fix NPE in location manager
a1d7b4d
srmmanager: Add interface to query and abort transfers
cee5a6a
cells: Remove resubmission to event thread in location manager
5a08279
cells: Add safe guards to connector create and process update events
cc9b845
srmclient: fix ‘cd’ compatibility with StoRM
c35fc89
poolmanager: Log pool name rather than SelectPool object id
b6855d4
pool: Suppress two stack traces in nearline storage handling
802f2d8
srm: Log correct request token in access log
b75e224
httpd: Enable X-Forwarded-For processing in httpd
4d5eed5
httpd: Don’t insist on using http for unauthenticated webadmin pages
a671d74
nfs: allow dCache to start up without DNS
ad802f8
srmclient: add initial support for glob expansion
f7007f1
billing: fix stacktrace and slow shutdown if in refresh
1388162
common: fix alignment of abbreviated byte column in ColumnWriter
dc23d88
cleaner: Send notifications concurrently
bb4f08b
poolmanager,spacemanager: Do not reply to pool manager query replies
cb41330
doors: Allow setting an empty list of login broker tags
5abed59
dcache: Add column to dcache services for proxy-protocol
2072783
srmclient: add additional help text to srmfs
6b9b5db
common: update ColumnWriter to remove any trailing whitespace
b661232
spacemanger: Fix interception of PoolAcceptFileMessage
4031401
xrootd: Upgrade to xrootd4j 3.2.1
f631308
admin: Send requests to a fully qualified address once connected to a cell
46e4e17
webdav: Fix initialization of html template
39a2bac
common: do not markup ellipses as a user-value
a6ad18a
frontend: reinstate support for truly anonymous access
b567bc7
spacemanager: Propagate PoolManagerHandler errors as is
b07f800
dcache: Fix detection of message errors in doors and space manager
08d69d6
dcache: Fix detection of message errors in poolmanager and admin
54ba7fe
doors: Ensure that pool selection context survives between retries
5458eff
poolmanager: Propagate subscriber failures
61f6ea2
cells: Avoid an infinite loop when executing deferred tasks
494732c
cells: Do not add source name when resending a message
4be45bd
srmclient: fix checksum mismatch when uploading small files
7856802
libs: update to nfs4j–0.13.0
1f6e347
srmclient: fix srmfs to shutdown cleanly if user issues Ctrl-C
98fb6f6
srmclient: clean shutdown srmfs after transfer
d93af74
srmclient: avoid stack-trace if lcd with incorrect path
79db347
Active Transfers: substitute ? for <unknown> on html pages
881a582
dcache: Fix output of domain ports for ‘dcache ports’ command
bffb248
dcap,ftp: Allow root path and socket address to be overridden for loginbroker info
0a40230
cells: Minor optimization to routing manager when processing GetAllDomain requests
666ddf3
cells: Kill tunnel earlier in case of IO failures
f38f906
cells: Fix a couple of locking issues in the routing manager
a274ac8
cells: Less aggressive use of stack traces on slow cell shutdown
290517d
cells: Fix race between publishing and killing a cell
603bbce
srmclient: give meaningful error message if credential is missing
07db10c
common: add support for UserNamePrincipal as user:<name>
b063e96
srmclient: provide better error message if credential has expired
a49cc50
Added ‘explain login’ examples to help text in Gplazma2LoginStrategy.java
3e868c2
info, webadmin: Check for null version
3f56a0e
httpd,srm,statistics: Parameterize billing service name
2529275
billing: Strip format string from attribute name
90bc41c
transferObserverV1: replace Args with Joiner to construct transfers.txt lines
67dea34
billing: Make billing indexer work with custom format strings
2b262f6
cells: Fix NPE in unit tests
99babcd
dcache: update dcache-view version to 1.0.2
417887f
Revert “dcache: update dcache-view version”
4d8d122
dcache: update dcache-view version
e8d6d40
dcap: add support for clients presenting more version metadata
7c2fdda
srmclient: update checkPermissions to be more robust
5fb5f46
srmclient: print friendly message on SRMException
f74b140
srmclient: update ls to be more robust
0a50d58
commons: log bugs with stack-trace and instructions
46f986c
webdav: support template reloading
b3594f0
webdav: add support for ownCloud mtime header
8ade134
gplazma2-xacml: remove erroneous creation of placeholder extensions
91d1832
restful-api: add create, move and rename resources
a63ae6a
cells: add event logging on cell lifecycle events
8aff852
srm: remove trailing dot from reverse lookup result
00d782e
ftp: add support for SRM cancelling an active upload
9969b3b
webdav: add cors support for uploading files
c5aa25e
srmclient: fix async stat command
88a9fcf
srmclient: implement useful subset of local filesystem commands
03cca24
srmclient: fix error message for ls
7ce53ee
srmclient: refrain from adding default port to SURL in srmcp
9f084d5
namespace: fix permissions of auto-generated directories
032f833
cells: New wire and payload protocols for cell message
61d5753
cells: Minor paranoia refactoring in shutdown
f6cdc1f
cells: Deliver cell events from the cell event thread
3b2ca6f
poolmanager: Stop adjusting pool cost
4a70ec1
poolmanager: Define assumptions on pool selection
354aa1a
pool: Add infrastructure for pool assumptions
095f1f5
cells: Stop ZooKeeper recipies in stopping rather than stopped
6f89203
poolmanager: Delay zookeeper publication of pool manager
0d0ea8f
cells: Minor cleaning of location manager
c0ac545
srmclient: fix -debug mode
05d3b56
srmclient: support SIGKILL
03afafa
cells: Guarantee event order for cell even listeners
d5f1fdb
cells: Remove race in routing manager
2e9e81c
poolmanager: do not use string concatenation with logging
e3503f4
replicamanager: Fix race during shutdown
54b3a9c
cells: Fix lost interrupt exception
bd87c3d
cells: Ensure that newly created threads are non-daemon normal priority threads
ff53756
webdav: fix Unauthorized vs Forbidden response
70f6602
pom: Update third party dependencies
ef0aaa1
doors: Fix a minor race in LoginBrokerPublisher
6d43a76
dcache: Fix more cells that do not shut down cleanly
5809df2
cells: Add remote domain to NDC of location manager tunnel
e96c0b2
cells: Increase timeout on tunnel shutdown
ebfb1bc
cells: Propagate startup failures to caller
1509b2b
cells: Fix race when adding routes
e0b1195
cells: Remove delayed default route if tunnel shuts down
c6358e3
cells: Fix race in cell shutdown
bf563f9
srmclient: add support in srmfs for uploading and downloading files
799698c
poolmanager: Log errors in subscriber
9f9bcfa
spacemanager: Revert decision to only import link groups in leader
d0c3536
dcache: Generate proper exit code for check-config command
a474a77
spacemanager: Fix SpaceManagerHandler#toString
0806d87
doors: Prevent PoolMgrGetUpdateHandler storm on shutdown
077d1e5
pool: Drop pretend limit on p2p client queue
3348726
poolmanager: Improve stability of cost cuts
53d185b
cells: Refactor interaction between LocationManager and LoginManager
71796a5
cells: Fix potential deadlock in login manager shutdown
3a251fd
cells: Fix regression in shutdown timeout
a064ba9
srm: support configuring job expiry checking period
cc806ed
gplazma2-ldap: add embedded jdap server for unit testing
05f327a
nfs4: autodiscover nfsv4 domain used by idmapper
2fe6e94
commons: fix Args string parsing and toString method
355fc08
pool: ReplicaStoreCache updated to describe inner ReplicaStore
c08f8fe
vehicles: use FileAttributes when creating namespace entries
366182b
Change version to 3.0.0-SNAPSHOT
4fefd4d
chimera: update postgres driver to recognize alpha/beta/rc builds
9582a71
ceph: make configurable rados pool name
459ddce
dcap: use String.getBytes(UTF_8) to generate error reply
d509d77
ceph: use object’s xattrs to store files creation and atime/mtime
d56eee2
doors: Include IO queue in pool selection request
a29ba61
ceph: cleanly close rados connection on pool shutdown
5609c21
ceph: use RadosClusterInfo to provide total and available sizes
cc48200
ceph: use PoolInfo to check repository status
59a0995
pool: added CEPH back-ended FileStore implementation
5636347
nfs: addresses returned to client must match clients address ‘type’
8a8a2ab
nfs: add support for flexfile layout type
a48496b
srm-manager: explain cancellation of upload
e5068a1
ftp: Fix unit test regression
7bd0848
cells: Drop some dead code
c9d3b2c
cells: Add context information to connector cell
bede5c8
cells: Let tunnel shut down wait for its processing thread to terminate
182a655
cells: Add default methods to CellEventListener interface
78db8cf
pool: Make inner class of PoolCostInfo static
7727b28
pools: Drop legacy field in PoolCostInfo
9854e5d
ftp: Add support for the HAProxy Proxy Protocol
4a8bc29
ftp: Port FTP door to Netty
9f59b05
cells: Decouple StreamEngine from LoginManager
c8a1a38
xrootd: Add support for the HAProxy Proxy Protocol
6c76922
xrootd,pool: Upgrade to Netty 4.1
b0e85c6
webdav: optimise directory creation
f0918e2
vehicles: add fluent and single-item construction to FileAttributes
6612716
cells: Fix more shutdown bugs and reject send with callback on shutdown
2b0cbb4
cells: Use ConcurrentHashMap for callback objects
f509447
pool: Ensure that post transfer service shuts down before repository
135522e
pool: close dcap accepter thread and server socket after client connects
5679b20
pool: allow sort output of ‘mover ls’ by access time and size
26a2bd7
poolmanager,spacemanager: Do not log delivery failure of PoolMgrGetUpdatedHandler
04c5a8c
cells: Fix regression in message ID in replies
c5770fd
cells: Fix several shutdown related problems
e7323a0
dcache-webadmin: synchronize client-side filtering with server-side selection of rows on pages using picnet table filters
71034aa
dcache-webadmin: disable saving table filter settings to browser cookies
c8bc39d
dcache-webadmin: disable AJAX autorefresh on pages using picnet table filter library
dea1764
namespace: support querying information about deleted objects
7318a65
doors: include explanation when killing mover
249cb99
namespace: add nlink as an attribute
f4e5691
pool: explain why a mover was killed
ac50167
alarms: reset count history on reopened alarm
1eec7f5
pool: Resolved circular bean dependencies leading to bugs during shutdown
eb31c0e
cells: Lowered log level of failure to deliver delivery failure notifications
bb4ddd1
cells: Bind pre-removal notification to beforeStop lifecycle callback
d16926e
doors: Announce to login broker subscribers when a door is shutting down
83c62ca
cells: Log killer threads too when cell shutdown is slow
4a2f978
cells: Log when cells have to interrupt threads to shut them down
f2b6b24
doors: Abort transfer if file is deleted during pool selection
ef5ff6a
chimera: Fix IllegalStateException in inode cache
02c5b8b
poolmanager: Fix shutdown regression
9d7493d
cells: Add pre removal callback
9f7752a
cells: Ensure sequential execution of lifecycle callbacks
42d8ccf
cells: Guard shutdown of setup manager against partial initialization
9285483
poolmanager: Fix design flaw in PoolManagerHandler implementations
98f293f
cells: Expose SendFlag to suppress addition of a source path
759a897
cells: Fix problem with duplicate entries in source path
b43a705
Enable automatic detection of Postgresql master
2c8ee66
webdav,frontend: Drop support for https-jglobus
5593c87
webdav,frontend,httpd: Add proxy protocol support
e69b0fa
dcache: Extend CanlConnectorFactoryBean to also support plain connectors
285a673
nfs: Upgrade nfs4j
bbc5ea0
srm: make out-of-date historic data deletion more robust
dffe01a
srm: Add support for the proxy protocol
740f863
cells: Do not call shutdown from message thread
65a044f
xrootd: Remove serialization compatibility with pre 2.11 domains
6e240c2
dcache-vehicles: Remove serialization compatibility with pre 2.15 domains
16907b5
dcache-vehicles: Remove serialization compatibility with pre–2.12 domains
f8b06aa
cells: Remove serialization compatibility with pre–2.16 domains
c919c99
pnfsmanager: Remove support for legacy pools
2e255bb
cells: Drop support for legacy route updates
73d67b8
billing: Make service replicable
b5974a8
webadmin: Use topic to discover services to watch
92b22f7
httpd: Introduce topic for discovering services to monitor
2a3e401
zookeeper: avoid one race in shutdown
ac036b4
zookeeper: work-around slow shutdown of SessionTrackerImpl
d3f34ae
webadmin: silence warning about future change in wicket
1ee61f9
poolmanager: Reduce risk of pool manager handler update during shutdown
ee85984
billing: Optimize regular expressions of billing parser
b56ea8c
billing: Minor optimizations to path prefix computation
4f68ccb
billing: Extend billing parser to recognize formatting headers
d9f086b
billing: Let ParallelizingLineProcessor consider comments as barriers
aa74739
pool: Adjust JavaDoc of ReplicaStore
dd1f493
billing: Make billing text files self describing with format headers
1755681
billing: Do not log record if format string is empty or undefined
8601227
billing: Harmonize representation of cell name
86dd4fe
cells: Prepare to change representation of unqualified cell addresses
92788e9
cells: Fix IllegalArgumentException when reversing a terminal cell path
618c3b6
cells: Fix RejectedExecutionException during shutdown
2954441
billing: Removing erroneous stack trace output
a2fd0be
billing: Wrap cellName attribute to allow access to the cell and domain components
a81dec3
xrootd: add support for oss.asize on upload
e74520d
xrootd: add per-application io-queue
06a8baa
pool: update FileStore interface to handle all back-end specific operations
7d558ae
ftp: improve compatibility with Apache Commons FtpClient
7951b59
srm: refactor container status update and readying turls
ed44be4
dcache-restful-api/pinmanager: modify current QoS fom disk+tape to tape
bd52f0a
pool: Adjust failure semantics for empty client uploads
410c9d7
dcache-nearline-spi: Add @since tags for newly added features
07090fc
nfs: Fix pool manager subscriber startup
798b7b6
chimera,nfs: avoid byte -> string -> byte conversions
4e58e4c
alarms: convert log entry handling to use plugin extensions
f8fcd31
pom: Update 3rd party dependencies
27c8720
srm: Include session identifier in error message when srmRm aborts an upload
e2ff948
dcache: IntelliJ code inspection refactoring
e3d552b
chimera: IntelliJ refactoring
c27dcdf
common-security,dcache-vehicles: IntelliJ refactoring
4d132b0
common: Various automated refactoring
6b66b04
cells: More semi automatic refactoring
c7c5286
cells: Various automatic refactoring to clean up the code
aa0bcb9
cells: Reduce reliance on AbstractCellComponent
76cde04
billing: Expose property to subscribe to topics
bc33cdd
dcache-nearline-spi: Move AbstractBlockingNearlineStorage to dcache-nearline-spi
c1b2f5a
cells: IOException is not a bug in create command
4e1ce03
cells: update CellMessage to work with initially empty messages
f90ced0
transfermanager: fix querying of 3rd-party transfer
8e449b6
pool: fix hsm unset command
3f074dc
doors: enforce restriction in all PnfsManager operations
1390c0c
srm: remove ‘priority’ support
818b04b
common: include filename in error message
7f280f6
srmclient: do not rely on -f option of readlink
8f472c0
spacemanager: Refine errors sent on shutdown
2de19e3
poolmanager: Make pool manager replicable
0b94ca0
doors: Update doors to use PoolManagerHandler
c68b781
Upgrade to CANL 2.1 and BC 1.50
73969aa
scripts: update canonicalising function
3b355d1
webadmin: remove error and autorefresh options from alarms page
39306c2
alarms: force alarms-only-option
0d6e9ab
dcache: Add framework for dynamic pool manager handlers
7bcf592
poolmanager: Fix incorrect correction of pool cost
a4ab7ed
dcap: Factor out configuration option parsing
1a60fc0
dcap: Port DCAP door to the LineBasedDoor
d4fb646
cells: handle empty string pool value on staging in TransferObserver
ca19923
dcache: Move components of line based doors to dcache-core
a266f9f
cells: Refactor message forwarding logic
5919c92
cells: Retry RETRY_ON_NO_ROUTE_TO_CELL messages when a route is added
731cf8d
cells: Expose SendFlag in CellStub
a90151e
cells: Add SendFlag parameter to CellEndpoint#sendMessage
b482c56
dcache: Refactor message forward logic
3f8cca5
pool: include the original IOException info DiskErrorCacheException
e9bf69e
cells: Extend CellLifeCycleAware with setup change notification
43c757c
cells: Separate setup notifications from setup providers
73846b1
poolmanager: Persist pool manager setup in ZooKeeper
16e72bc
dcache: Allow UniversalSpringCell to persist setup in zookeeper
d76e7d9
poolmanager: Persist pool read only status in setup file
2e58fb2
cells: Drop support for the setup manager
adb5c04
cells: Check setup file syntax before applying it to the running cell
0254bf4
alarms: add ndc info to alarm info
25a125d
resilience: fix alarm log level
2baf078
packages/dcache-view: depolyment of dcache-view through nexus
f356de5
dcache-restful-api: change protocol to HTTP
e388703
dcache-restful-api: RestfulAPI for QoS(CDMI) CHANGE current QoS for the specified file
46d091d
dcache-restful-api: RestfulAPI for QoS(CDMI) CHANGE current QoS for the specified file
574cf49
dcache-nearline-plugin-archetype: Include correct service loader definition
5d0825d
dcap: bump max command size sent by client to 8MB
4a57c27
frontend/dcache-restful-api: remove www-authenticate header
874661c
gplazma2-argus: Update to Argus client 2.2.0 to fix dependency on VOMS library
9b23e68
util: expose timestamp when the instance of Transfer is created
09abff1
mespace/chimera: allow optionally disable move to directory having differnt storage class (and cache class)
2cd391f
pom: use project.version instead of derived dcache.version
767cf92
cells: Introduce annotation to flag setup affecting commands
d9316fd
cells: Preserve CommandThrowableException
f113664
cells: Add default methods to CellInfoProvider and CellLifecycleAware
11720e4
pool: Cancel permanent migration jobs when reload pool setup file
d12ce81
pool: Allow runtime mover queue management
2fdbaf3
dcache-restful-api: fix data type for cdmi_geographic_placement
5a5ed28
dcache-restful-api: RestfulAPI for QoS(CDMI) get current QoS for the specified file
e8f091b
dcache-restful-api: RestfulAPI for QoS(CDMI)
f433881
srm: add hint to escape IDs
f4ad20b
archetype: Add archetype for creating nearline storage plugins
e71d9af
poolmanager: Fix compilation regression
9f991f4
nfs: Fix race condition in transfer startup
ab358ba
poolmanager: Remove dead functionality from cost module
2dcc9cb
pool: Port hsm commands to annotated command structure
c434601
common-cli: Refactor allowAnyOption flag
94af2f9
pool: Remove deprecated nearline concurrency limit commands
b9f9c8c
common-cli: Fix compatibility with Java 7
a97221d
cells: Minor refactoring of command interpreters
87a0046
SrmShell.java: changed ‘rx-’ to ‘r-x’
83f0bff
SrmShell.java: changed ‘rw–’ to ‘rw-’ in case TPermissionMode._RW
5dcfbfb
info: fix broken unit-test
b20cc35
srm: Resolve message thead blocking issues with SRM third party copy
197009c
restful-api: make exception and error handling resful
5473084
pool: Fix compilation error
12ab3b1
spacemanager: Work around for doors resubmitting PoolAcceptFileMessage
5a9db09
pool: Rename repository and store related classes
d1fab17
pool: Eliminate thread in mover scheduler
923fbe5
pool: Refactor BerkeleyDB meta data store to enable reuse
dc45cb7
pool: Expose URI rather than File to NearlineStorage implementations
8ebdb0d
pool: Refactor MetaDataStore and FileStore to use Path rather than File
f91e92a
pool: Avoid direct file access in post processing
6282e3e
pool: Extend script driver for polling scripts
b8f961d
vehicles: remove unused constructors
30f36d0
cells: Propagate CommandExceptions as is on cell startup
c246de6
pool: Fix several race conditions in migration module
ca6c531
pool: Fix regression in mover set max active command
9b7b679
pool: Fix mover leak
c03c489
pool: Fix synchronization regression in jtm
856f126
pool: Decouple checksum module from checksum scanner
4deb002
poolmanager: Move selection unit commands back into the selection unit
d20dc63
poolmanager: Drop resilience decorator of pool selection unit
a6ed2e8
pool: Let CellSetupProviders use setter injection
94c738f
cell: Only implement CellSetupProvider if needed
f2f35f1
dcache: Isolate setup file processing from primary cells command interpreter
de9fbf6
pool: Make RepositoryChannel extend SeekableByteChannel
2f24b07
pool: Make checksum calculation independent of file system backend
79138be
pool: Refactor handling of replica size in the repository
4a7a21d
pool: Reduce number of stat calls in Bekeley DB backend
40a06c1
pool: avoid NPE when querying status of a 3rd-party HTTP transfer
c8cf229
resilience: finish the renaming of ‘pnfs(id) operation’ to ‘file operation’
077e8ec
resilience: eliminate unnecessary update calls and fix synchronization of file op registration
776c0f9
resilience: repair (subtle) bug in target selection
e2790b0
resilience: fix error in file operation updating
99d74a9
resilience: fix the way removal of a pool from a resilient group is handled
63bf4f7
resilience: fix several related bugs in transition checking when scheduling scans
3f88a0a
resilience: remove restriction on storage unit linkage
7114a15
resilience: remove pool from operation table when it has been removed from a resilient group
2e75f75
resilience: allow file consumer to propagate Exception
96abb3d
httpd: change condition from numeric inequality to non-null check on TransferInfo value
8c2b57f
poolmanager.properties: mentioned creation of .bak file
239ab6c
alarms: fix NPE in type setter
871e828
src: change literal package strings to org.dcache.util
eca97e9
chimera: update unit-test to log ChimeraFsExceptions
2ef6d44
src: consolidate org.dcache.commons.util, org.dcache.utils and org.dcache.util
ca60c87
admin: Deprecate DSA keys
c43acae
pool: Transactional bulk update meta data state in Berkeley DB
17575e4
pool: Eliminate MetaDataStore#copy method
13a1c7a
pool: Fix bug that disables pools on non-critical errors
1ab5e5c
webdav: avoid NPE if client fails to send a User-Agent header
472acb6
pool: use a single ByteBuffer when calculating the checksum of a hole
7650505
chimera: avoid extra byte array creation during inode2bytes conversion
e4f1b42
cells: Allow local delivery of messages through queue routes
d3d5fc2
zookeeper: avoid race in creating log directories
08ee55b
cells: Improve indentation of help text
b1a9edd
Make FsPath Serializable
3a943ef
pool: Port remaining rep commands to annotated command framework
5fc92a6
pool: Port list commands to new command structure
af43905
build: add code-coverage reports
9830f2d
pool: Eliminate MetaDataRecord#touch
7d600c5
pool: Refactor meta data store interface to allow bulk updates
39c05d1
pool: Refactor IllegalTranstionException hierarchy
259a34a
pool: Refactor callback executor for flush queues
9e9a2ab
cells: Fix local delivery to queues
7e0baec
pool: Report file in transient state as locked when setting sticky flag
92fbe53
admin: Fix compatibility with OpenSSH 7
219b970
pool: Fix documentation error for -storage option of rep ls command
5180b99
script: Do not claim success if meta data conversion failed
942cca1
frontend: add support for user ‘anonymous’
a8d9592
httpd: check for null Subject in Transfer info
dd15a13
resilience: fix incomplete behavior for pools intentionally marked “excluded”
291dbb1
admin: refactor login strategy
1dbfbe5
webdav: fix bean creation in webdav.xml for spnego handler
b21b4b4
frontend: always fail request if wrong credentials are presented
159c422
webdav: add Spnego based Kerberos authentication mechanism for SSO capabilities
7b770bc
common: add ByteUnit enum and ByteUnits utility class
e461d40
restful: add ability to discover information about current user
070a543
srm: enrich access log
c93dc6c
resilience: simplify code for handling resilience requests on pools
d154a5f
resilience: fix classification of file incomplete and other errors
73bb943
pool: Don’t use transient error for a broken file
78ee625
admin: Drop old ssh 1 keys
85811a2
pool: Add error codes to p2p failures
61ee15f
pool: Make final state update after upload atomic
586e62f
pool: Lower log level of certain failures to create mover
56fb782
chimera-nfs: fix broken commit 4682fd3
4682fd3
chimera: move byte <=> FsInode conversion into nfs specific part
e5a0042
pool: fix staging for CopyNearlineStorage
b34c3de
REST-api: fix permission denied.
8b1d1e1
frontend: remove prompt login onloading dCacheView
e717ffe
resilience: add checked location selection exception
8ddded0
resilience: fail when source retry is requested with only one possible source
6f3dfc7
pools: restore correct command names
12eeda4
pool: Add open flush mode
b40b8bd
gplazma: Make gplazma.x509.use-policy-principals obsolete
ddfdbd0
cells: Drop legacy cells communication
459680d
Mark deprecated properties obsolete
0d2f9c0
webdav: Fix error reporting when client is unauthorized
61d13ef
srm: Fix job expiration during service startup
a7860b3
pool: Minor refactoring of flush classes
887b4d3
Remove deprecated code
abdae03
system-test: Enable automatic schema management for replicamanager
b9792c7
billing: use in-memory buffer for hourly aggregate data
13a009b
webdav: make links relative in standard template
95b114e
billing : fix issue wih HSQLDB backend
d790aa8
gplazma: don’t generate a stack-trace if htaccess is malformed
ff48c27
pool: Fix race in pool initialization
62fd200
Revert “srmmanager: Enable multiple instances to share a database”
7deb9f0
system-test: Fix Linux compatibility for populate script
43e7ad0
system-test: Fix regression in populate script
86c8c32
pool: Close stores after use in meta data utilities
2900cf9
Revert “pool: Close stores after use in meta data utilities”
504e37f
pool: Close stores after use in meta data utilities
cc2eb79
pool: Fix regressions in meta data utilities
0d10b6d
system-test: Speed up liquibase update
74f0917
Disable OCSP by default
ec6df2f
srm: Fix listing of completed list requests
8e4253d
billing: re-implement population of aggregate tables
97290f6
dcache restful-api: adjust the response header
6cf3f95
billing: Fix NoClassDefFoundError when invoking dcache billing command
5b92ef4
httpd: Fail gracefully in case of missing options
870a5b7
httpd: Update cell info view for named queues and make srmmanager monitored
2072541
cells: Suppress RejectedExecutionException on shutdown
93c223e
cells: Fix NPE during shutdown
a09a461
gplazma: Add PrefixRestriction and use it to validate root and upload paths
1b7fb03
zookeeper: Document ports used by embedded zookeeper
f748eba
ftp: Fix regression in resolving path
a31c5cd
frontend: Expose dCacheView configuration in dCache configuration
89be067
zookeeper: Add automatic purging of old snapshots
6623081
Remove example.org values from configuration defaults
e63d821
dCacheView: new end-user web interface for dCache
f47224c
api: Rename service to frontend
1aa3afd
api: Move rest API to separate service
8cd3d3e
billing: fix issue with database change rollback
370fc72
src: remove unused class AbstractNameSpaceProvider
f7511cb
srmmanager: Make scheduler ID configurable and compatible with older versions
2f6abfd
pool: Upgrade to Berkeley DB Java Edition 6.4.25
b81732d
httpd: restore original fields and format to the TransferObserverV1 ascii output
d8ab725
[maven-release-plugin] prepare for next development iteration