tools-deps 2026-07-21

Occasionally, I've been seeing this error:

[org.eclipse.aether.internal.impl.DefaultTrackingFileManager] [] {} Failed to read tracking file '/home/sean/.m2/repository/org/apache/maven/maven/3.8.8/_remote.repositories'
java.nio.channels.ClosedChannelException
which leads to
Expected HashMap$TreeNode, but was given HashMap$Node, at java.util.HashMap$TreeNode/moveRootToFront (HashMap.java:2020) - runtime error (unexpected type).
And the only solution seems to be to blow away part of the ~/.m2/repository and use -Sforce to recompute/redownload. Any idea what might cause this sort of error? (Windows/WSL2, Ubuntu 20.04, all the very latest CLI/Clojure etc)

More of that stacktrace:

at java.base/sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:169)
        at java.base/sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1676)
        at org.eclipse.aether.internal.impl.DefaultTrackingFileManager.fileLock(DefaultTrackingFileManager.java:171)
        at org.eclipse.aether.internal.impl.DefaultTrackingFileManager.read(DefaultTrackingFileManager.java:65)
        at org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManager.readRepos(EnhancedLocalRepositoryManager.java:220)
        at org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManager.checkFind(EnhancedLocalRepositoryManager.java:151)
        at org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManager.find(EnhancedLocalRepositoryManager.java:128)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:360)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:261)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:243)
        at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:158)
        at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:204)
        at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:1035)
        at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:827)
        at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:336)
        at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:248)
        at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:293)
        at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:183)
        at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:269)
        at clojure.tools.deps.extensions.maven$read_descriptor.invokeStatic(maven.clj:117)
        at clojure.tools.deps.extensions.maven$read_descriptor.invoke(maven.clj:108)
        at clojure.tools.deps.extensions.maven$eval61086$fn__61087.invoke(maven.clj:148)

It's pretty much always the maven 3.8.8 _remote.repositories file that trips this error, I think. And it only seems to happen maybe once a month at most, and only locally on my dev machine.

I think it is a concurrency a bug, a hashmap being mutated from multiple threads

if you search the slack for "HashMap$TreeNode" the last time it came up in #C6QH853H8 was almost 2 years ago

Ah, thanks. So, that was supposedly fixed in the older Aether/Maven-powered tools.deps but perhaps has reappeared in a different guise now that @alexmiller updated all the Aether/Maven libs?

I think tools.deps is now abstracting via https://github.com/maveniverse/mima? Maybe related to that change?

Alex Miller (Clojure team) 2026-07-21T18:01:03.769829Z

Mima is just an environment provider for all the maven resolver libs, so I don't think it's really relevant here. More relevant probably are all the changes in the newer resolver libs. tools.deps itself had some changes way back to avoid downloads of the same lib concurrently but it would not shock me if there was some kind of concurrency issue in these libs

Alex Miller (Clojure team) 2026-07-21T18:03:47.261829Z

Agree that seeing the map node stuff makes that a likely suspect. This file locking stuff was all redone in the 3.9 libs I think.

Alex Miller (Clojure team) 2026-07-21T18:04:24.183249Z

Happy to have an ask for it to collect reports.

Alex Miller (Clojure team) 2026-07-24T20:20:44.320129Z

@seancorfield I just released a CLI dev version 1.12.5.1661 with a change to how I cache/reuse maven resources - if it's possible for you to put that into where you're seeing issues, I'd love to know if it stops causing you problems (if using -Sthread=1, will need to stop doing that of course)

Thanks. Will update the work setup. We don't use -Sthread, and the problem is rare so it may be hard to tell if it fixes things. Just setting expectations.

Alex Miller (Clojure team) 2026-07-24T20:30:38.098619Z

yep, I'll take even a weak signal if I can get it, very difficult to track these