Merge "Replace color: black with variable"
diff --git a/java/com/google/gerrit/acceptance/AccountCreator.java b/java/com/google/gerrit/acceptance/AccountCreator.java
index c6e03a8..08375b0 100644
--- a/java/com/google/gerrit/acceptance/AccountCreator.java
+++ b/java/com/google/gerrit/acceptance/AccountCreator.java
@@ -176,7 +176,7 @@
 
   public static KeyPair genSshKey() throws JSchException {
     JSch jsch = new JSch();
-    return KeyPair.genKeyPair(jsch, KeyPair.RSA);
+    return KeyPair.genKeyPair(jsch, KeyPair.ECDSA, 256);
   }
 
   public static String publicKey(KeyPair sshKey, String comment)
diff --git a/java/com/google/gerrit/server/change/ChangeJson.java b/java/com/google/gerrit/server/change/ChangeJson.java
index 300a32d..3d350b0 100644
--- a/java/com/google/gerrit/server/change/ChangeJson.java
+++ b/java/com/google/gerrit/server/change/ChangeJson.java
@@ -160,6 +160,12 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Produces {@link ChangeInfo} (which is serialized to JSON afterwards) from {@link ChangeData}.
+ *
+ * <p>This is intended to be used on request scope, but may be used for converting multiple {@link
+ * ChangeData} objects from different sources.
+ */
 public class ChangeJson {
   private static final Logger log = LoggerFactory.getLogger(ChangeJson.class);
 
diff --git a/java/com/google/gerrit/server/project/ProjectCacheWarmer.java b/java/com/google/gerrit/server/project/ProjectCacheWarmer.java
index 66bbcca..10ab746 100644
--- a/java/com/google/gerrit/server/project/ProjectCacheWarmer.java
+++ b/java/com/google/gerrit/server/project/ProjectCacheWarmer.java
@@ -20,8 +20,6 @@
 import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
@@ -50,25 +48,25 @@
           new ScheduledThreadPoolExecutor(
               config.getInt("cache", "projects", "loadThreads", cpus),
               new ThreadFactoryBuilder().setNameFormat("ProjectCacheLoader-%d").build());
-      ExecutorService scheduler = Executors.newFixedThreadPool(1);
+      Thread scheduler =
+          new Thread(
+              () -> {
+                for (Project.NameKey name : cache.all()) {
+                  pool.execute(() -> cache.get(name));
+                }
+                pool.shutdown();
+                try {
+                  pool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
+                  log.info("Finished loading project cache");
+                } catch (InterruptedException e) {
+                  log.warn("Interrupted while waiting for project cache to load");
+                }
+              });
+      scheduler.setName("ProjectCacheWarmer");
+      scheduler.setDaemon(true);
 
       log.info("Loading project cache");
-      scheduler.execute(
-          () -> {
-            for (Project.NameKey name : cache.all()) {
-              pool.execute(
-                  () -> {
-                    cache.get(name);
-                  });
-            }
-            pool.shutdown();
-            try {
-              pool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
-              log.info("Finished loading project cache");
-            } catch (InterruptedException e) {
-              log.warn("Interrupted while waiting for project cache to load");
-            }
-          });
+      scheduler.start();
     }
   }
 
diff --git a/java/com/google/gerrit/server/project/ProjectState.java b/java/com/google/gerrit/server/project/ProjectState.java
index 11327cd..e064265 100644
--- a/java/com/google/gerrit/server/project/ProjectState.java
+++ b/java/com/google/gerrit/server/project/ProjectState.java
@@ -261,7 +261,7 @@
 
     ProjectLevelConfig cfg = new ProjectLevelConfig(fileName, this);
     try (Repository git = gitMgr.openRepository(getNameKey())) {
-      cfg.load(git);
+      cfg.load(git, config.getRevision());
     } catch (IOException | ConfigInvalidException e) {
       log.warn("Failed to load " + fileName + " for " + getName(), e);
     }