From: Duarte Meneses Date: Wed, 9 Sep 2015 14:48:49 +0000 (+0200) Subject: improve batch logging and performance X-Git-Tag: 5.2-RC1~403 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=069f75fe8558dbea2c7194465f84c5b025bdd672;p=sonarqube.git improve batch logging and performance --- diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/FileIndexer.java b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/FileIndexer.java index 6b06a999a32..90bada354ec 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/FileIndexer.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/FileIndexer.java @@ -19,6 +19,8 @@ */ package org.sonar.batch.scan.filesystem; +import com.google.common.util.concurrent.ThreadFactoryBuilder; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.filefilter.HiddenFileFilter; @@ -89,7 +91,8 @@ public class FileIndexer { Progress progress = new Progress(); InputFileBuilder inputFileBuilder = inputFileBuilderFactory.create(fileSystem); - executorService = Executors.newFixedThreadPool(Math.max(1, Runtime.getRuntime().availableProcessors() - 1)); + int threads = Math.max(1, Runtime.getRuntime().availableProcessors() - 1); + executorService = Executors.newFixedThreadPool(threads, new ThreadFactoryBuilder().setNameFormat("FileIndexer-%d").build()); tasks = new ArrayList<>(); indexFiles(fileSystem, progress, inputFileBuilder, fileSystem.sources(), InputFile.Type.MAIN); indexFiles(fileSystem, progress, inputFileBuilder, fileSystem.tests(), InputFile.Type.TEST); diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/measure/DefaultMetricFinder.java b/sonar-batch/src/main/java/org/sonar/batch/scan/measure/DefaultMetricFinder.java index 5d2176b6b18..daff30e8982 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/measure/DefaultMetricFinder.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/measure/DefaultMetricFinder.java @@ -20,19 +20,19 @@ package org.sonar.batch.scan.measure; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import org.sonar.api.batch.measure.Metric; import org.sonar.api.batch.measure.MetricFinder; import org.sonar.api.measures.Metric.ValueType; import org.sonar.batch.protocol.input.GlobalRepositories; import java.util.Collection; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class DefaultMetricFinder implements MetricFinder { - private Map metricsByKey = Maps.newLinkedHashMap(); + private Map metricsByKey = new LinkedHashMap<>(); public DefaultMetricFinder(GlobalRepositories globalReferentials) { for (org.sonar.batch.protocol.input.Metric metric : globalReferentials.metrics()) { diff --git a/sonar-home/src/main/java/org/sonar/home/cache/PersistentCache.java b/sonar-home/src/main/java/org/sonar/home/cache/PersistentCache.java index 2b32c65b7f9..3122d9a6fd0 100644 --- a/sonar-home/src/main/java/org/sonar/home/cache/PersistentCache.java +++ b/sonar-home/src/main/java/org/sonar/home/cache/PersistentCache.java @@ -44,7 +44,7 @@ import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; import static java.nio.file.StandardOpenOption.WRITE; public class PersistentCache { - + private static final char[] hexArray = "0123456789ABCDEF".toCharArray(); private static final Charset ENCODING = StandardCharsets.UTF_8; private static final String DIGEST_ALGO = "MD5"; private static final String LOCK_FNAME = ".lock"; @@ -133,7 +133,7 @@ public class PersistentCache { return null; } - + public synchronized void put(@Nonnull String obj, @Nonnull InputStream stream) throws IOException { String key = getKey(obj); try { @@ -293,10 +293,10 @@ public class PersistentCache { Path cachePath = getCacheEntryPath(key); Files.write(cachePath, value, CREATE, WRITE, TRUNCATE_EXISTING); } - + private void putCache(String key, InputStream stream) throws IOException { Path cachePath = getCacheEntryPath(key); - Files.copy(stream, cachePath, StandardCopyOption.REPLACE_EXISTING); + Files.copy(stream, cachePath, StandardCopyOption.REPLACE_EXISTING); } private byte[] getCache(String key) throws IOException { @@ -377,11 +377,13 @@ public class PersistentCache { return baseDir.resolve(key); } - private static String byteArrayToHex(byte[] a) { - StringBuilder sb = new StringBuilder(a.length * 2); - for (byte b : a) { - sb.append(String.format("%02x", b & 0xff)); + public static String byteArrayToHex(byte[] bytes) { + char[] hexChars = new char[bytes.length * 2]; + for (int j = 0; j < bytes.length; j++) { + int v = bytes[j] & 0xFF; + hexChars[j * 2] = hexArray[v >>> 4]; + hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } - return sb.toString(); + return new String(hexChars); } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/ProjectClasspath.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/ProjectClasspath.java index e9f71cc17d1..8b6af71cf3c 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/ProjectClasspath.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/ProjectClasspath.java @@ -78,13 +78,13 @@ public class ProjectClasspath implements BatchComponent { } protected List createElements() { - List elements = Lists.newArrayList(); + List e = Lists.newArrayList(); for (String path : def.getBinaries()) { - elements.add(projectFileSystem.resolvePath(path)); + e.add(projectFileSystem.resolvePath(path)); } for (String path : def.getLibraries()) { - elements.add(projectFileSystem.resolvePath(path)); + e.add(projectFileSystem.resolvePath(path)); } - return elements; + return e; } }