From b4f9a048dbd573e9c9aad1cbf6553dc51719edfa Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 16 Mar 2018 09:53:14 +0100 Subject: [PATCH] SONAR-10502 Fix concurrency error during initial indexing --- .../org/sonar/server/es/IndexingListener.java | 2 +- .../org/sonar/server/es/IndexingResult.java | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/es/IndexingListener.java b/server/sonar-server/src/main/java/org/sonar/server/es/IndexingListener.java index aa5cd895b2b..6d21ab38ade 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/es/IndexingListener.java +++ b/server/sonar-server/src/main/java/org/sonar/server/es/IndexingListener.java @@ -36,7 +36,7 @@ public interface IndexingListener { @Override public void onFinish(IndexingResult result) { if (result.getFailures() > 0) { - throw new IllegalStateException("Unrecoverable indexation failures"); + throw new IllegalStateException(String.format("Unrecoverable indexation failures: %d errors among %d requests", result.getFailures(), result.getTotal())); } } }; diff --git a/server/sonar-server/src/main/java/org/sonar/server/es/IndexingResult.java b/server/sonar-server/src/main/java/org/sonar/server/es/IndexingResult.java index b178ddc5077..3c318f49aca 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/es/IndexingResult.java +++ b/server/sonar-server/src/main/java/org/sonar/server/es/IndexingResult.java @@ -25,12 +25,12 @@ import java.util.concurrent.atomic.AtomicLong; public class IndexingResult { // FIXME should be private - AtomicLong total = new AtomicLong(0L); - private long successes = 0L; + final AtomicLong total = new AtomicLong(0L); + private final AtomicLong successes = new AtomicLong(0L); IndexingResult clear() { total.set(0L); - successes = 0L; + successes.set(0L); return this; } @@ -39,17 +39,17 @@ public class IndexingResult { } public IndexingResult incrementSuccess() { - successes += 1; + successes.incrementAndGet(); return this; } public void add(IndexingResult other) { total.addAndGet(other.total.get()); - successes += other.successes; + successes.addAndGet(other.successes.get()); } public long getFailures() { - return total.get() - successes; + return total.get() - successes.get(); } public long getTotal() { @@ -57,14 +57,14 @@ public class IndexingResult { } public long getSuccess() { - return successes; + return successes.get(); } public double getSuccessRatio() { - return total.get() == 0 ? 1.0 : ((1.0 * successes) / total.get()); + return total.get() == 0 ? 1.0 : ((1.0 * successes.get()) / total.get()); } public boolean isSuccess() { - return total.get() == successes; + return total.get() == successes.get(); } } -- 2.39.5