What's new in dCache 11.2
Release notes
Highlights
- NFS read performance improvement
- Kafka logging for billing
- Introduce hot file replication mechanism on pools, where the pool itself tiggers replication of hot (popular) files
Incompatibilities
- Xrootd PrepareRequest will return
Unsupported.
Release 11.2.0
Billing
Starting with version 11.2.0 dCache adds transferTag information to the generated JSON records. The transferTag is used by clients to label transfers with activity-specific information, such as experiment ID and workflow ID. This information is currently provided by XRootD and HTTP clients, and can be used by monitoring systems to identify data flows.
A Kafka producer operates asynchronously by default: when an application calls send(), the record is placed into an internal buffer and the call typically returns immediately, without waiting for broker acknowledgements.
However, asynchronous operation does not guarantee fully non-blocking behavior. Under certain conditions—such as broker unavailability, missing topic metadata, or exhausted producer buffers—the producer may block or fail synchronously. These edge cases are a common source of confusion and can lead to unexpected application failures.
In dCache, this behavior poses a risk when Kafka is unavailable, as transfer events may not be marked as successful if Kafka reporting fails, potentially causing service instability or crashes. To mitigate this risk, the Kafka logging has been relocated to the non-blocking Billing service and disabled in other dCache components that may block on Kafka availability. As a result, Kafka cluster outages no longer impact the stability of dCache processes.
To enable kafka for billing service the folowing property in billing.properties should be enabled
(one-of?true|false|${dcache.billing.enable.kafka})billing.enable.kafka.
NFS
The NFS door has been updated to use the original NFS request credentials when Proxy-IO is used.
Pool
The NFS mover has been updated to use zero-copy to reduce memory copies when data is sent to a client during READ.
This gives up to a 20% increase in data throughput for data-intensive applications.
Introduce hot file replication mechanism on pools, where the pool itself tiggers replication of
hot (popular) files. When the number of in-flight transfers for a file reaches certain configurable
threshold, the pool invokes the migration module to create a pre-defined configurable number of
replicas on other pools in the same pool group.
Added hot file replication feature to automatically detect and replicate heavily-requested files
to other available pools in the same group.
Added hotfile commands to the pool admin interface to enable customization of parameters affecting
hot file replication.
New boolean configuration file property pool.hotfile.monitoring.enable (set true to enable hot
file replication).
Xrootd
The Xrootd protocol provides a mechanism to trigger file stage via prepare request.
Up to version 11.2.0 dCache responded with OK to Xrootd prepare request which, depending
on the client application logic, may enable subsequent open calls on files that are not
availble in cache, potentially leading to blocking the client application due to large tape access latencies
and cause inefficient access to tape resource. This behavior is now changed, so that the prepare request will fail with
the error Unsupported. Users who need staging should use the TAPE-REST-API.
Changelog from 11.1.0 to 11.2.0
- f6e47327ab
- [maven-release-plugin] prepare branch @{releaseLabel}
- b21c65af3e
- bulk: catch another place generating verbose logging
- a9f5e776f1
- pool: implememt hot file replication
- 924ef9354d
- code coverage: bump JaCoCo version to 0.8.14
- 9a010bf35a
- Update JsonWebToken unit tests for ECDSA signatures
- 47bcf81c03
- packages: fix gplazma2-python plugin version
- 10396b94c0
- ci: enable kafka in billing
- ad03a7caaf
- Revert “fix broken test due to kafka move to billing”; fix the failing test
- 7e028b08d9
- libs: update maven-compiler-plugin version to 3.10.1
- fd98eb1850
- fix broken test due to kafka move to billing
- 4be74060f8
- billing: migrate Kafka logging to Billing service
- 01ace93a31
- frontend: validate JSON in migration request
- 766f7b36bd
- pom: bump jackson to 2.18.5
- 31eff98dfb
- pom: bump netty version to 4.2.9
- e8d25383b7
- ci: escape strings in frontend test environment
- 466b32883f
- bulk: avoid spamming log file when requests have already been cleared due to auto-clear flag
- 7a5b413ef4
- nfs: update
show poolscommand to display pure IPs - f77a00aea8
- Minor AI-suggested improvements to Maven config
- fb5f925357
- Revert “Minor AI-suggested improvements to Maven config”
- 07532e159e
- Minor AI-suggested improvements to Maven config
- 6256b08b95
- Prevent unwanted spinning on migration jobs
- 3d91759804
- billing: add transfer tag to moverInfo json
- 297a7ba0b6
- gplazma: update explain login to allow credentials
- a9871213ba
- common: increase robustness of access log file
- 9f0a67d72e
- build(deps): bump io.netty:netty-codec-http
- e800889414
- docs: replace dCache components diagram
- c7cbf8eede
- webdav: fix range header formatting in relay request
- 4ba5e32039
- pool: use zero-copy FileChunk to perform NFS reads
- 4191e1c0cc
- libs: update swagger-jersey2 version to 1.6.14
- 99ada5032a
- libs: update swagger version to 5.30.2
- a0c481b062
- frontend: Fix issue 7968
- 1719c0b59e
- Address PR #7785 review comments: fix DER encoding for ECDSA signatures and add unit tests
- fe7be7478c
- ci: add dcache db migration test
- 14a743ef4f
- srm,spacemanager: fix liquibase migration checksum mismatch
- 873ce0cc68
- fix the propert va;ue for frontend limits error max-allowed
- 8de5c6f185
- common-security: add workaround bouncycastle EC algorithm name mismatch
- ec0c009b32
- frontend: add code flow auth to dcache-view
- 912691890e
- gplazma: fix banfile plugin
- 426a95039d
- webdav: return 403 on unauthorized attempt to rename resource
- c483a3ce65
- pool: use SSLTrustManagerWithHostnameChecking to initialize CAnL
- 430b1cec17
- ci: stop using voms server
- defc79cd40
- libs: update jersey version to 2.47
- 76fbde2575
- nfs: use user credentials to perform proxy-I/O
- 549237caf6
- pool: add command line to check the correctness of online replica having sticky bit
- 6c1074f5c4
- transfermanagers: complete removal of DB support
- 88ac1d0cea
- Reapply “libs: update jackson to version 2.18.3”
- 48d3b549ff
- gplazma: ldap make search base DNs more flexible
- 48df33385f
- ci: use java21 build images
- 3560e86630
- qos: frontend tests for qos transition
- d5d76b4a2b
- pool: merge MoverFactory interface into TransferService
- 831145ae2c
- pool: fix mover’s local endpoint reported by a mover
- fc3faf12ef
- qos: frontend tests for qos transition
- 7819d3a980
- book: document ‘role’ configuration option of omnisession plugin
- e7d2304abf
- src: use Java17 HexFormat instead of guava alternative
- a501b3da33
- xroot: don’t reply with OK on PrepareRequest
- 96a88e6efe
- ci: add qos policy endpoint tests to the gitlab pipeline
- 6ca0a2ed58
- common: remove unused constructor
- dcdf855975
- ci: fix path to custom helm config
- 6f3b040aa7
- ci: customize helm for CI
- e2f575e2af
- build(deps): bump org.bouncycastle:bcpkix-jdk18on from 1.78.1 to 1.79
- c4139c7e7f
- ci: update assertion message for all frontend tests
- 635c15cbd5
- dcache: enforce rate limiting only for authentication errors
- 2c5e92cbc8
- docs: fix references to old ‘cleaner’ service
- f3aab0de2b
- pool: log at warn when files state in pool change
- dd5ae2d7d8
- utils: update ExceptionsTests to correctly handle java 19+
- 341c77e65f
- pnfsmanager: don’t use guava’s ListenableFuture to notify flush listeners
- 7b348be0df
- pom: update test dependencies
- cb8cb0924e
- ci: rewriting qos-policy endpoint tests
- c49820e441
- gplazma: enforce RolePrincipal if Role attribute is set
- fe4d1896ed
- nfs: lower nfs-client workaround message
- 2e630594af
- ci: use chainguard-dev version of kaniko
- d68c5cfd40
- test: drop snicked system.out.print
- cd23f595bd
- poolmanager: fix wrandom partition
- a25afab99e
- build: fix missing resources caused by specification of resources
- eef720e567
- dcache: fix use of vulnerable deserialization methods in test
- 8e7c5b63eb
- frontend: introduce request rate limter to frontend
- fbeba80b26
- build: remove vestigial SMC configuration from
pom.xmlfiles - 5d54e52624
- build: Update SMC library and corresponding maven plugin
- 39c7320a0b
- build : fix hysteresis with system-test
- c74e8e4d39
- build: Update surefire and configure to redirect test output
- b2344ec153
- pool: extract comparator creation to function in IoQueueManager
- 8a75cc1749
- Revert “Minor typo in comment”
- 1bd3809d12
- Revert “IDE-suggested drive-by: extract comparator creation”
- c25a037df2
- IDE-suggested drive-by: extract comparator creation
- 4b6410b438
- Minor typo in comment
- 3f6d72a1f4
- jetty: introduce request rate limiter
- f8ff33abbf
- omnisessio: accept tabs in config file
- c08a1bdfa7
- BUILDING.md: update how start the container
- 4030e00e8d
- [maven-release-plugin] prepare for next development iteration
- 4b771ef3f9
- Update JsonWebToken.java
- 5155d12c7d
- Update JsonWebToken.java
- 6e5c91b36e
- Update JsonWebToken.java
- 02e99fc200
- Update JsonWebToken.java
- 2d22189329
- Update JsonWebToken.java
- 0992f8bda5
- add support for EC Public Keys