From 0fa7ddfb9d0c1bc83558d5542e929fd69705697f Mon Sep 17 00:00:00 2001 From: Matt Harbison Date: Fri, 31 Jan 2025 15:30:29 -0500 Subject: [PATCH] Stop modifying and reusing the global JavaHg RepositoryConfiguration singleton I can't point to a specific error, but modifying a singleton and reusing it is a good way to get unexpected state. The extension adding won't collect additional state (it's add-if-not-present), but the underlying `java.util.HashMap` isn't threadsafe. Any differences in the environment map when this is called would alter that state of anything else that still held a configuration (and it also uses `HashMap`), and the pending changeset, encoding, and HgBin settings would be overwritten for everybody outright. There's only a default constructor for this class, so nothing to pass along in the constructor. I don't *think* this was the cause of the random auth failures mentioned in the previous commit, but it's easy to avoid these potential problems. --- .../src/main/java/sonia/scm/repository/HgRepositoryFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryFactory.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryFactory.java index ef7eaa0267..abffc690fa 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryFactory.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryFactory.java @@ -59,7 +59,7 @@ public class HgRepositoryFactory { HgConfig config = configResolver.resolve(repository); File directory = config.getDirectory(); - RepositoryConfiguration repoConfiguration = RepositoryConfiguration.DEFAULT; + RepositoryConfiguration repoConfiguration = new RepositoryConfiguration(); repoConfiguration.setHgrcPath(null); repoConfiguration.getEnvironment().putAll(environment); repoConfiguration.addExtension(HgFileviewExtension.class);