You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2018/03/29 11:43:33 UTC

lucene-solr:branch_7x: SOLR-12145: ConcurrentModificationException in SimNodeStateProvider.getReplicaInfo.

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_7x 751adad5b -> eb314cd64


SOLR-12145: ConcurrentModificationException in SimNodeStateProvider.getReplicaInfo.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/eb314cd6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/eb314cd6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/eb314cd6

Branch: refs/heads/branch_7x
Commit: eb314cd640a59bb0a3f720a8e9c8746145a942a4
Parents: 751adad
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Thu Mar 29 13:42:19 2018 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Thu Mar 29 13:43:25 2018 +0200

----------------------------------------------------------------------
 .../solr/cloud/autoscaling/sim/SimClusterStateProvider.java    | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eb314cd6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
index 9a11a80..f6762fc 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
@@ -20,6 +20,7 @@ package org.apache.solr.cloud.autoscaling.sim;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -1155,14 +1156,15 @@ public class SimClusterStateProvider implements ClusterStateProvider {
   /**
    * Return all replica infos for a node.
    * @param node node id
-   * @return list of replicas on that node, or empty list if none
+   * @return copy of the list of replicas on that node, or empty list if none
    */
   public List<ReplicaInfo> simGetReplicaInfos(String node) {
     List<ReplicaInfo> replicas = nodeReplicaMap.get(node);
     if (replicas == null) {
       return Collections.emptyList();
     } else {
-      return replicas;
+      // make a defensive copy to avoid ConcurrentModificationException
+      return Arrays.asList(replicas.toArray(new ReplicaInfo[0]));
     }
   }