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 pools command 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.xml files
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