You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2014/12/01 19:31:06 UTC
svn commit: r1642729 - in /lucene/dev/branches/lucene_solr_4_10: ./ solr/
solr/CHANGES.txt solr/core/
solr/core/src/java/org/apache/solr/cloud/Overseer.java
Author: shalin
Date: Mon Dec 1 18:31:06 2014
New Revision: 1642729
URL: http://svn.apache.org/r1642729
Log:
SOLR-6685: ConcurrentModificationException in Overseer Status API
Modified:
lucene/dev/branches/lucene_solr_4_10/ (props changed)
lucene/dev/branches/lucene_solr_4_10/solr/ (props changed)
lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_10/solr/core/ (props changed)
lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/cloud/Overseer.java
Modified: lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt?rev=1642729&r1=1642728&r2=1642729&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt Mon Dec 1 18:31:06 2014
@@ -58,6 +58,8 @@ Bug Fixes
* SOLR-2927: Solr does not unregister all mbeans upon exception in constructor
causing memory leaks. (tom liu, Sharath Babu, Cyrille Roy, shalin)
+* SOLR-6685: ConcurrentModificationException in Overseer Status API. (shalin)
+
Other Changes
----------------------
Modified: lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/cloud/Overseer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/cloud/Overseer.java?rev=1642729&r1=1642728&r2=1642729&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/cloud/Overseer.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/cloud/Overseer.java Mon Dec 1 18:31:06 2014
@@ -35,6 +35,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
@@ -1359,7 +1360,7 @@ public class Overseer implements Closeab
public static class Stats {
static final int MAX_STORED_FAILURES = 10;
- final Map<String, Stat> stats = Collections.synchronizedMap(new HashMap<String, Stat>());
+ final Map<String, Stat> stats = new ConcurrentHashMap<>();
public Map<String, Stat> getStats() {
return stats;
@@ -1377,19 +1378,16 @@ public class Overseer implements Closeab
public void success(String operation) {
String op = operation.toLowerCase(Locale.ROOT);
- synchronized (stats) {
- Stat stat = stats.get(op);
- if (stat == null) {
- stat = new Stat();
- stats.put(op, stat);
- }
- stat.success.incrementAndGet();
+ Stat stat = stats.get(op);
+ if (stat == null) {
+ stat = new Stat();
+ stats.put(op, stat);
}
+ stat.success.incrementAndGet();
}
public void error(String operation) {
String op = operation.toLowerCase(Locale.ROOT);
- synchronized (stats) {
Stat stat = stats.get(op);
if (stat == null) {
stat = new Stat();
@@ -1397,26 +1395,20 @@ public class Overseer implements Closeab
}
stat.errors.incrementAndGet();
}
- }
public TimerContext time(String operation) {
String op = operation.toLowerCase(Locale.ROOT);
- Stat stat;
- synchronized (stats) {
- stat = stats.get(op);
+ Stat stat = stats.get(op);
if (stat == null) {
stat = new Stat();
stats.put(op, stat);
}
- }
return stat.requestTime.time();
}
public void storeFailureDetails(String operation, ZkNodeProps request, SolrResponse resp) {
String op = operation.toLowerCase(Locale.ROOT);
- Stat stat ;
- synchronized (stats) {
- stat = stats.get(op);
+ Stat stat = stats.get(op);
if (stat == null) {
stat = new Stat();
stats.put(op, stat);
@@ -1429,7 +1421,6 @@ public class Overseer implements Closeab
failedOps.addLast(new FailedOp(request, resp));
}
}
- }
public List<FailedOp> getFailureDetails(String operation) {
Stat stat = stats.get(operation.toLowerCase(Locale.ROOT));