1.9.12 Release Notes
dCache 1.9.12 focuses on:
- Completing the transition to the new configuration system and
improving the script to migrate old configurations.
- Adding GLUE 2 support.
- Replacing the pin manager with a faster and more robust
implementation.
- Extending the dcache script.
- Adding HTTP support to third party srmCopy transfers.
- Adding proxy certificate and VOMS support to the HTTP/WebDAV door.
- Reducing file open latency.
- gPlazma 2 with ARGUS black listing (missing from initial release).
Table of contents
Upgrade Instructions
Incompatibilities
Please consider the following changes when upgrading from a version
before 1.9.12-1:
- The arguments and behaviour of /opt/d-cache/bin/dcache create
pool have changed.
- The output of the /opt/d-cache/bin/dcache create pool has
changed.
- The script /opt/d-cache/install/install.sh has been
removed.
- The SRM no longer submits PostgreSQL specific vacuum
commands to the database.
- The output format of the PNFS manager info command has
changed.
- The info provider configuration file
/opt/d-cache/etc/glue-1.3.xml was replaced by
/opt/d-cache/etc/info-provider.xml. The file formats of the
two files are different.
- The database schema of the pin manager has changed and will be
updated on first start.
- The command line interface of the pin manager has changed
slightly.
- Several DNS lookups and reverse lookups have been eliminated. This
may affect installations on multihomed hosts.
- The configuration parameters httpHost,
xsltProcessor, xylophoneConfigurationDir,
xylophoneConfigurationFile, xylophoneXSLTDir, and
saxonDir are deprecated.
- The configuartion parameters srmVacuum,
srmVacuumPeriod, webdav.images.logo,
webdav.images.directory, webdav.images.file,
webdav.style.css, webdavLogoPath,
webdavDirIconPath, webdavFileIconPath,
webdavCssPath, dirIconPath, fileIconPath,
and cssPath are obsolete.
- The values of the configuration property broker.scheme
have changed: jms and hybrid have been replaced by
amq and cells+amq-embedded, respectively.
Compatibility
It is safe to mix pools of releases 1.9.5, 1.9.6, 1.9.7, 1.9.8,
1.9.9, 1.9.10, 1.9.11 and 1.9.12. Head nodes and doors must be
upgraded to 1.9.12 together and cannot be mixed with head nodes or
doors of releases before 1.9.12. Components of different 1.9.12
releases can be mixed freely.
Compatibility Matrix
We distinguish between pool components and head nodes. Any
component which is not a pool is considered a head node, including
doors. The following table shows compatibility between different
releases.
| | 1.9.12-1 Head | 1.9.12-1 Pool |
| Head |
1.9.5 | no | no |
| 1.9.7 | no | no |
| 1.9.8 | no | no |
| 1.9.9 | no | no |
| 1.9.10 | no | no |
| 1.9.11 | no | no |
| 1.9.12 | yes | yes |
| Pool |
1.9.5 | yes | yes |
| 1.9.7 | yes | yes |
| 1.9.8 | yes | yes |
| 1.9.9 | yes | yes |
| 1.9.10 | yes | yes |
| 1.9.11 | yes | yes |
| 1.9.12 | yes | yes |
1.9.12-1
Pools
The /opt/d-cache/bin/dcache pool commands have been
updated to provide an ls subcommand to list configured
pools. The create subcommand has been extended to add the new
pool directly to the layout file. The command no longer creates the
pool setup file and instead adds the pool specific configuration to
the layout file. The command thus provides the functionallity of both
the create and add commands found in some earlier
releases.
The migration module was extended to reduce interference between
multiple migration jobs running on the same pool. The migration module
now respects the pool mode on the target pool.
SRM
The SRM used to have the ability to periodically submit
vacuum commands to the database. This command is PostgreSQL
specific and thus tied the SRM to PostgreSQL. PostgreSQL has for
quite a while supported auto vacuuming, and manually executing the
vacuum command is no longer necessary. We have therfore removed the
submission of vacuum commands from dCache. The configuration
parameters srmVacuum and srmVacuumPeriod are
obsolete. We recommend using at least PostgreSQL 8.3 and preferably
8.4, as earlier versions of PostgreSQL are known to have issues with
auto vacuuming.
Some SRM operations may be processed synchronously or
asynchronously, at the server's discretion. Since 1.9.10 dCache can
start to process such requests synchronously and, if this is taking
too long, reply asynchronously and continue to work on the operation
in the background. In dCache 1.9.12 this behaviour is enabled by
default for get, put, bring online, and list operations. The default
switch over time is 1 second. The old behaviour can be restored by
setting the srm*SwitchToAsynchronousModeDelay parameters.
The RemoteHttpTransferManager cell has
been removed. The functionality has been merged into the
RemoteGsiftpTransferManager cell, which has in turn been
renamed to RemoteTransferManager. The SRM was extended to
support third party srmCopy transfers from HTTP resources. Third party
upload to HTTP resources and support for HTTPS is not available yet in
the SRM.
DCAP
DCAP supports prestaging from tape. The DCAP door used to rely on a
stager service to perform the staging. In dCache 1.9.12 the DCAP door
instead uses the PinManager to trigger staging. The
dummy-prestager service is obsolete and can be deleted from
the layout.
PNFS manager
The PNFS manager has been restructured. One consquence is that the
output of the info command in the cell admin interface has
changed slightly: It is now grouped into sections in line with how it
is done in pool manager and pools. Third party scripts may need to be
adjusted.
WebDAV
WebDAV doors now submit remove entries to billing when files are
deleted.
The HTML rendering of a directory listing now includes a column
containing the file size. The HTML is customizable through a
template file. As a consequence the properties
webdav.images.logo, webdav.images.directory,
webdav.images.file, webdav.style.css,
webdavLogoPath, webdavDirIconPath,
webdavFileIconPath, webdavCssPath,
dirIconPath, fileIconPath, and cssPath are
obsolete. Please read the document embedded in the default template
file /opt/d-cache/share/webdav/templates/list.stg for details
on customizing the look and feel.
The property webdavAnonymousListing was introduced to
prevent unauthorized users from listing directories.
The property webdavProtocol was extended with a third
option, https-jglobus, to enable HTTPS support based on the
JGlobus library. The advantages compared to the https option
are that host and CA certificates are read and refreshed directly from
/etc/grid-security/ and that proxy certificates (including
VOMS certificates) can be used for client authentication.
Info Provider
The info provider is an XSLT script that transforms the output of
the info service into GLUE compliant LDIF. The XSLT script used to be
stored in /opt/d-cache/etc/glue-1.3.xml and used to contain
both the transformation logic and local configuration parameters.
In dCache 1.9.12 the info provider has been extended to support
GLUE 2.0 in addition to GLUE 1.3, and it has been restructured to
separate configuration parameters from the transformation logic.
The old info provider file, /opt/d-cache/etc/glue-1.3.xml,
is obsolete. All site specific configuration is done within the file
/opt/d-cache/etc/info-provider.xml. The configuration
parameters httpHost, xsltProcessor,
xylophoneConfigurationDir,
xylophoneConfigurationFile, xylophoneXSLTDir, and
saxonDir are deprecated and have been replaced by other
parameters. The configuration parameter httpPort is
obsolete. The parameter info-provider.publish specifies
whether to publish GLUE 1.3, 2.0, or both. See
/opt/d-cache/share/defaults/info-provider.properties for
details.
Pin Manager
The pin manager is responsible for staging and pinning files on
behalf of SRM and DCAP doors. In this release the pin manager has been
reimplemented from scratch. The design has been significantly
simplified to increase performance and robustness of this critical
component.
The database schema is separate from the old implementation's
schema. The new schema is created the first time the pin manager is
started. Existing pins are automatically imported if the same database
is used. We strongly recommend using the same database. The tables of
the old pin manager are not deleted, however downgrading is not
possible without loosing the pins that were created with the new pin
manager.
The command line interface of the pin manager has changed slightly
and third party scripts may have to be updated.
Pool Manager
Pool manager has seen a fair amount of cleaning in this release,
however user visible changes should be small. The most
significant change is that pool manager no longer verifies the
correctness of location information stored in the name space, that is,
on which pools a file is stored. Instead pool manager expects doors to
verify the information and deal with any stale locations. This change
eliminates a round trip to the pool and thus reduces the latency of
opening files.
Pool mode changes are now logged at warning level by pool
manager.
Doors and DNS lookups
Most doors and movers have been updated to avoid DNS lookups and
reverse lookups that slow down transfers. Instead IP addresses are
passed around. This may break existing deployments on multi-homed
hosts. When this happens doors may need to be bound explicitly to
particular network interfaces.
DCAP, FTP, SSH and admin doors now support the listen
property to bind the door to a particular IP address.
gPlazma
The get mapping cell command was added. The command was
present in earlier releases, but was dropped when the gPlazma cell was
reimplemented in 1.9.9.
Database Support
The /opt/d-cache/bin/dcache script has been updated with
several new commands related to databases used by various
services.
The subcommand database ls lists the databases used by
services on this host and is supported by all services that use an
external database.
Other database subcommands only apply to services using the
LiquiBase schema management library. Currently pin manager is the only
service that uses this library. Please consult the man page for
details about these commands.
Scripts
Besides changes to the pool and database commands,
/opt/d-cache/bin/dcache now supports the services
command. The command is similar to the services command found
in dCache 1.9.5: It lists all configured services and the domains they
belong to. The status command was extended to provide
additional information. The new check-config command provides
diagnostic information about obsolete and deprecated properties
used.
The migration script was moved and renamed to
/opt/d-cache/libexec/migrate-from-1.9.5.sh. It was updated to
follow best practice by using the host name as the name of the
layout. The new version does its best to remove lines copied verbatime
from the original template into dCacheSetup. Many deprecated
properties are automatically renamed to the new names. At the end of
the migration the script invokes the check-config command to
report about any deprecated or obsolete properties being used.
The /opt/d-cache/install/install.sh script is no longer
needed and has been removed. The remaining two scripts in
/opt/d-cache/install/ have been moved to
/opt/d-cache/libexec/.
Configuration Properties
Lots of minor issues have been fixed in the configuration
system. Many properties that were already deprecated or obsoleted in
earlier releases are now marked as such and generate errors or
warnings. Other properties that were removed during the transition to
the new configiration system in 1.9.7 have been reintroduced as
deprecated properties. Default declarations of most services have been
moved from batch files and into properties files in
/opt/d-cache/share/defaults/.
Changelog 1.9.11-1 to 1.9.12-1
- [r14944] web-admin: fix NPE on shutdown
- [r14945] properties: factor out cleaner default properties
- [r14970] nfsv41: door have to respect ioQueue name specified in layout file
- [r14971] login: Add 'get mapping' command (regression)
- [r14975] bootloader: Fix compatibility with IBM JDK
- [r14976] boot: Refactored configuration file parsing
- [r14977] boot: Include service specific parameters in getProperty shell function
- [r14978] scripts: Add 'pool ls' and 'services' commands
- [r14979] Fixed tests to match changes in previous patch
- [r14989] source: remove unused SysTime.java with corresponding JNI part
- [r14990] gPlazma2 plugin for the ARGUS Authorization System
- [r14991] scripts: add user process is running as in "dcache status" output
- [r14992] scripts: fix column layout in dcache command
- [r14993] scripts: show configured user if domain isn't running
- [r14995] boot: refactor shell oracle generation
- [r14996] poolManager: remove dead code branch
- [r14998] cleaner: Add required parameters
- [r15000] cells: Protect cell startup from option parsing failures
- [r15001] boot: add ability to print configuration as a list of XML entities
- [r15007] pool manager: user NavigableMap instead of SortedMap
- [r15008] PoolManager: Log at a higher log-level when pool changes state
- [r15009] chimera: add migrated chimera configuration to global context
- [r15010] PinManager: Fix failure handling in 1.9.11 and trunk
- [r15014] poolManager: change Pool selection unit interface
- [r15015] gPlazma: changing the order of plugins while mapping
- [r15017] unmark space as being used regardless of
- [r15019] utils: Complete generic type in ReflectionUtils
- [r15020] libs: Fix log4j reference
- [r15022] script: Fail if boot loader fails
- [r15023] cells: Make MessageReply generic and implement Future
- [r15024] PinManager: Replace messages with those from the new PinManager
- [r15025] scripts: Add database management commands
- [r15029] batch: Make services using Chimera show up in 'database ls' output
- [r15032] nfsv41: door have to respect ioQueue name specified in layout file
- [r15033] White-space only fix
- [r15034] cells: don't fail if password file isn't present
- [r15035] White-space only fix
- [r15036] exceptions: Drop DirNotExistsCacheException
- [r15038] srm: fix bug in altering 3rd-party copy requests (srmAbortFile, srmExtendFileLifeTime, srmReleaseFiles)
- [r15039] Solaris: Fixed Solaris compatibility issue with an awk script
- [r15041] info: fix thread unsafe usage of SimpleDateFormat
- [r15042] info: fix removeStateWatcher method
- [r15043] core: use InetSocketAddress in protocolInfo
- [r15044] gPlazma: Fixing authorization without any role
- [r15046] properties: add some missing unit-tests
- [r15047] poolmanager: remove dead code
- [r15048] FTP: Avoid reverse lookups
- [r15049] PinManager: Fix stageConfigurationFilePath check
- [r15051] space-manager: remove deadcode
- [r15052] configuration: add comment about how dcache.home is specified
- [r15053] pool: set request state QUEUED prior sending to execution
- [r15055] pool: fix compatibility with FTP doors
- [r15057] findbugs: suppress infinite-recursion-loop warning in parboil parser rules
- [r15058] build: don't package billing plotting config
- [r15059] build: fix RPM packaging warning message
- [r15070] Stripped white space
- [r15071] cells: add command for checking whether a file exists or a cell is running
- [r15072] batch: don't generate meaningless error messages
- [r15073] nfsv41: avoid unnecessary byte array copy
- [r15075] New PinManager
- [r15076] PoolManager: Replace state constants with enum
- [r15077] logging: Fix CDC setup in cells
- [r15078] PnfsManager: Use Spring for instantiation and wiring
- [r15079] FTP: Make performance markers work with recent pools
- [r15080] pool: Fix NPE in xrootd mover
- [r15081] PoolManager: Remove file check
- [r15082] dcap: Use FileAttributes
- [r15083] pool: Let migration module respect pool disable mode
- [r15084] classpath: autodetect liquibase-core jar file
- [r15085] batch: add support for gPlazma2
- [r15086] Whitespace-only fix
- [r15087] srm: remove periodic invocation of "VACUUM ANALYZE" on DB backend
- [r15088] cells: make CellEvent immutable and thread-safe
- [r15089] pool: tidy up PoolV4
- [r15090] cells: fix synchronisation when shutting down private executors
- [r15091] Security: protect against possible NPE
- [r15092] removed empty files
- [r15093] httpd: remove reference to deleted class
- [r15094] PoolManager: Let PoolMgrGetPoolMsg rely on FileAttributes
- [r15095] PoolManager: Let RequestContainer use PnfsHandler
- [r15096] xrootd: Downgrade protocol version to avoid kXR_locate
- [r15097] services: Clean up batch files of replica, spacemanager and billing services
- [r15098] cells: Avoid reply loop
- [r15099] PinManager: Fix moving of stale pins
- [r15100] pool: Fix termination in case of failed transfers
- [r15114] gPlazma2: fix warning message from white-space
- [r15116] info: move almost all startup into the init method
- [r15118] info: log NoRouteToCell at info level
- [r15120] cells: make CellMessage serialised payload final
- [r15123] libs: Upgrade to DataNucleus 2.2.1
- [r15125] build: remove batik from commons dependencies
- [r15127] space-manager: don't try to create tables if they already exist
- [r15128] configuration: add possibility to mark properties not-for-services
- [r15129] PnfsManager: fix rare index-out-of-bound error when processing messages without PnfsId
- [r15130] chimera: add missing CLI
- [r15131] White-space only fix
- [r15132] auth: create usnix-like subject based on uid and gid
- [r15133] srm : correct typos in names of a private class and logging
- [r15134] cells: fix typo in SshKeyManager shutdown
- [r15135] http: don't flooding log file on shutdown
- [r15136] httpd: fix shutdown
- [r15137] cells: add diagnostics for cells reluctant to shutdown
- [r15138] chimera-nfsv3: fix shutdown
- [r15139] pool: don't warn about pool repository path
- [r15140] info: log NoRouteToCell exceptions at info level
- [r15141] nfsv4: shutdown dataserver in pools
- [r15144] Whitespace-only fix
- [r15145] Whitespace-only fix
- [r15146] ssh: silent error message when clients connect
- [r15147] srm: add orderly shutdown methods
- [r15148] srm: make DbJobStorage less noisy on shutdown
- [r15149] build: add possibility to steer location of maven's local repository
- [r15151] configuration: tweak error messages
- [r15152] info: don't make http engine a cell
- [r15153] pool-manager: tidy up request container
- [r15157] pool: Add a lock for files processed by migration module
- [r15158] ftp: Fix NPE on login failure
- [r15159] xrootd: Add logging hooks in xrootd door
- [r15160] xrootd: Add kXR_prepare command
- [r15161] xrootd: Implement toString in a few requests and response messages
- [r15162] PoolManager: Fix compatibility with pools older than 1.9.10
- [r15163] pool: Make FairQueueAllocation interrupt safe
- [r15164] logging: Direct AspectjJ logging towards SLF4J
- [r15179] source: remove unused ACL classes
- [r15180] pool-manager: remove PoolOperator
- [r15181] ssh: fix NPE if subject is unknown
- [r15182] admin: fail with detail error msg if admin doesn't have keys
- [r15183] install: remove install.sh script
- [r15184] ssh: don't trigger IOException when user disconnects
- [r15185] pool-manager: tidy up PoolManagerv5
- [r15186] httpd: low-level tidy up of pool-manager HTML generation
- [r15187] pool-manager: add missing annotation
- [r15188] info provider: Downgrade xrootd protocol version
- [r15189] configuration: take the value of an obsolete property as error message
- [r15190] pool: partial revert of r.15139
- [r15191] pool-manager: add missing annotations
- [r15192] httpd: fix problem if http has different cellname
- [r15193] gPlazma: remove commented-out code
- [r15194] commons: fix gauge so it doesn't throw an exception if there's a
- [r15203] TransferObserver: log interruption at info level
- [r15204] build: add smc target
- [r15205] dcap: Fix space manager integration and add configurable cell names
- [r15206] dcap: Use pin manager rather than the stager
- [r15207] spacemanager: Remove SelectPoolCompanion (dead code)
- [r15208] transfermanagers: Clean up CopyManager
- [r15209] doors: Minor cleaning of Transfer class
- [r15210] ftp: Mark pool proxy property as obsolete
- [r15211] transfermanagers: Clean up TransferManager class
- [r15212] http: don't warn when shutting down restore monitoring thread
- [r15213] poolManager: fix leftovers from PoolOperator removal
- [r15214] pool: propagate error codes in post-execution step
- [r15216] properties: better warning message for deprecated properties
- [r15217] webdav: fail with meaningful error if KeyStore or TrustStore is missing
- [r15219] PoolManager: Avoid inheriting from AbstractCellComponent in some classes
- [r15220] PoolManager: Make several classes serializable
- [r15222] PoolManager: Clean up interface of PoolMonitorV5
- [r15223] config: Added various deprecated, obsolete and forbidden properties
- [r15224] The info-provider depends on an external package, xylophone
- [r15225] poolmanager: Fix message queue overflow handling in RequestContainerV5
- [r15226] webdav: Add remove notification
- [r15227] info-provider: publish GLUE2 information
- [r15228] gPlazma: fix extracting list of FQANs
- [r15229] poolmanager: fix percentile cost calculation
- [r15230] PoolManager: Reverted r15225
- [r15231] pool-manager: fix NPE on PoolUp message
- [r15232] webdav: Add size column to listing and use template engine for rendering
- [r15233] webdav: Move template for directory listing to share directory
- [r15234] poolmanager: Fix message queue overflow handling in RequestContainerV5
- [r15235] SRM: Move configuration defaults to properties file
- [r15236] doors: Improve Transfer.selectPoolAndStartMover and use it in doors
- [r15237] doors: Fix IllegalStateException in Transfer class
- [r15238] configuration: activate support for not-for-services annotation
- [r15239] gPlazma2: added VORoleMap Plugin
- [r15240] info-provider: add GLUE2 StorageService.Name and StorageManager.Name
- [r15241] gPlazma2: Refactoring of Argus Plugin
- [r15242] gPlazma2: Plugin Configuration
- [r15243] CopyManager: Update CopyManager to use the Transfer facade
- [r15244] webdav: Refactor redirect and finish message processing
- [r15245] webdav: Use Transfer.selectPoolAndStartMover
- [r15246] cells: Fix missing timeout on message queue overflow
- [r15247] libs: Upgrade to patched version of DataNucleus RDBMS
- [r15250] transfermanagers: Let PnfsManager perform permission checks
- [r15251] transfermanagers: Generalize RemoteGsiftpTransferManager
- [r15252] pinmanager: Refactor bulk pinning
- [r15253] config: add check-config command, fix line numbering
- [r15254] properties: add missing not-for-services and deprecated annotations
- [r15255] srm: Alter defaults for asynchronous/synchronous switch over times
- [r15256] webdav: Add flag to disallow anonymous listing
- [r15257] pinmanager: Activate new pinmanager, delete old pinmanager
- [r15258] PoolManager: Clean up various fields in RequestContainer
- [r15259] libs: Upgrade to Netty 3.2.4
- [r15260] libs: Upgrade to logback 0.9.28
- [r15261] An earlier patch deleted the persistence JAR from dCache (because the included JPA2 supersedes it)
- [r15262] all: Refactor MessageCallback
- [r15263] config: fix check-config for single files
- [r15264] gPlazma2: Configuration passing for VORoleMap and ARGUS plugins
- [r15265] config: remove unused method
- [r15266] configuration: fix discovery of synonyms
- [r15267] migration: run "dcache check-config" after migration
- [r15268] info-provider: refactor
- [r15269] configuration: tidy up output from check-config
- [r15270] migration script: Generate `hostname`.conf rather than imported.conf
- [r15271] gPlazma2: Fix parameter handling by VORoleMap Mapping Plugin
- [r15272] Whitespaces and Warnings
- [r15273] libs: Upgrade to DataNucleus 2.2.2
- [r15274] libs: Upgrade to LiquiBase 2.0.1
- [r15275] pinmanager: Refactor LiquiBase Spring integration
- [r15276] webdav: Add https-jglobus protocol option
- [r15277] scripts: Move scripts from install/ to libexec/
- [r15278] documentation: update dcache man page with check-config
- [r15279] scripts: Move scripts from install/ to libexec/
- [r15280] services: Move defaults from batch files to default files
- [r15281] migration: filter out dCacheSetup.template from dCacheSetup
- [r15282] 1.9.12 branch
- [r15291] PinManager: Fix Liquibase 1.9.5 -> 2.0.1 migration
- [r15292] pool: Remove singleton thread pools
- [r15294] info-provider: Mark info-provider.xml as a configuration file on Debian
- [r15295] PoolManager: Fix compatibility with migration module
- [r15300] pool: save and restore slf4j context for a request
- [r15303] build: add missing maven repositories for srmclient build
- [r15310] migration: fix use of tail
- [r15311] migration: handle RPM removing or renaming chimera-config.xml
- [r15312] pool: fix way too short timeout for http transfer
- [r15317] utils: preserve principals order by extracting fqans from a Subject
- [r15324] httpd: Introduce cleaned up version of HttpServiceCell
- [r15330] httpd: fix html generated by PoolManager
- [r15337] junit: fix incorrect test
- [r15338] jms: Rename tunnel options to explicitly refer to amq
- [r15342] jms: Rename tunnel options to explicitly refer to amq
- [r15345] pinmanager: Make pin manager more resilient against DB failure
- [r15346] doors: Use a session ID compatible with InfoMessage.getTransaction
- [r15354] httpd: Set default mime type to text/html
- [r15360] httpd: rectrict http reqquests paths
- [r15366] build: use absolute when building a solaris package
- [r15376] srm: do not print a stacktrace if authentication failed
- [r15377] doors: add listen option
- [r15378] jms: Add OpenMQ support
- [r15379] migration-from-1.9.5.sh: Convert legacy options
- [r15383] jms: Clean up the code before replacing cell name lookup
- [r15384] cells: Introduce central cell name service for JMS brokers