Skip to content

Bug: WebDav 3rd-party-copy request fail with fatal error in TransferManager #8191

Description

@nManger

Hi,

when testing 3rd-party-copy requests on our (semi-)productive dCache instance running v12.0.1 we ran into the problem that the transfers do not initiate because of an error in the RemoteTransferManager. We have reliably reproduced the error several times.

Copy request:

gfal-copy davs://bwlts-dcache-door.scc.kit.edu:2880/ka/scc_sdm/test_arturgo/test_3GB_1.file davs://bwlts-dcache-door.scc.kit.edu:2880/ka/scc_sdm/test_arturgo/test_3GB_2.file --checksum-mode both --force

Error in pool logs:

31 Aug 2026 11:28:03 (lsdf-02-106-e-wT) [door:WebDAV-bwlts-dcache-door@webdav-Domain:AAZaVGtEMgA RemoteTransferManager PoolAcceptFile 0000197A328BADE641DBBE6FDACE36446D71] Uncaught exception in thread lsdf-02-106-e-wT-6
java.lang.NoClassDefFoundError: Could not initialize class org.dcache.pool.movers.RemoteHttpDataTransferProtocol
        at org.dcache.pool.classic.RemoteHttpTransferService.createMoverProtocol(RemoteHttpTransferService.java:177)
        at org.dcache.pool.classic.AbstractMoverProtocolTransferService.createMover(AbstractMoverProtocolTransferService.java:86)
        at org.dcache.pool.classic.RemoteHttpTransferService.createMover(RemoteHttpTransferService.java:140)
        at org.dcache.pool.classic.PoolV4.createMover(PoolV4.java:727)
        at org.dcache.pool.classic.PoolV4.lambda$queueIoRequest$5(PoolV4.java:743)
        at org.dcache.pool.classic.MoverRequestScheduler.createRequest(MoverRequestScheduler.java:247)
        at org.dcache.pool.classic.MoverRequestScheduler.lambda$getOrCreateMover$2(MoverRequestScheduler.java:217)
        at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
        at org.dcache.pool.classic.MoverRequestScheduler.getOrCreateMover(MoverRequestScheduler.java:214)
        at org.dcache.pool.classic.IoQueueManager.getOrCreateMover(IoQueueManager.java:151)
        at org.dcache.pool.classic.PoolV4.queueIoRequest(PoolV4.java:742)
        at org.dcache.pool.classic.PoolV4.ioFile(PoolV4.java:755)
        at org.dcache.pool.classic.PoolV4.messageArrived(PoolV4.java:971)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.dcache.cells.CellMessageDispatcher$LongReceiver.deliver(CellMessageDispatcher.java:286)
        at org.dcache.cells.CellMessageDispatcher.call(CellMessageDispatcher.java:188)
        at org.dcache.cells.AbstractCell.messageArrived(AbstractCell.java:302)
        at dmg.cells.nucleus.CellAdapter.messageArrived(CellAdapter.java:856)
        at dmg.cells.nucleus.CellNucleus$DeliverMessageTask.run(CellNucleus.java:1318)
        at org.dcache.util.BoundedExecutor$Worker.run(BoundedExecutor.java:247)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at dmg.cells.nucleus.CellNucleus.lambda$wrapLoggingContext$2(CellNucleus.java:764)
        at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.ExceptionInInitializerError: Exception com.google.common.collect.Ordering$IncomparableValueException: Cannot compare value: MD5 [in thread "lsdf-02-106-e-wT-3"]
        at com.google.common.collect.ExplicitOrdering.rank(ExplicitOrdering.java:46)
        at com.google.common.collect.ExplicitOrdering.compare(ExplicitOrdering.java:40)
        at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
        at java.base/java.util.TimSort.sort(TimSort.java:220)
        at java.base/java.util.Arrays.sort(Arrays.java:1308)
        at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:353)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at org.dcache.util.Checksums.buildGenericWantDigest(Checksums.java:190)
        at org.dcache.pool.movers.RemoteHttpDataTransferProtocol.<clinit>(RemoteHttpDataTransferProtocol.java:201)
        ... 25 common frames omitted

Looking at the blame for org.dcache.util.Checksums.buildGenericWantDigest the most recent change was b20368c (Introducing RFC 9530 support).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions