SOLR-6801: Use static random initialized with random.seed and use it in Collections.shuffle to make forbidden-api checks pass

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1649877 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Shalin Shekhar Mangar 2015-01-06 17:17:15 +00:00
parent 037b72a00c
commit 76fa1005db
1 changed files with 14 additions and 1 deletions

View File

@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.zip.ZipEntry;
@ -50,6 +51,18 @@ import org.slf4j.LoggerFactory;
*/
public class JarRepository {
public static Logger log = LoggerFactory.getLogger(JarRepository.class);
static final Random RANDOM;
static {
// We try to make things reproducible in the context of our tests by initializing the random instance
// based on the current seed
String seed = System.getProperty("tests.seed");
if (seed == null) {
RANDOM = new Random();
} else {
RANDOM = new Random(seed.hashCode());
}
}
private final CoreContainer coreContainer;
@ -75,7 +88,7 @@ public class JarRepository {
if (coll == null) throw new SolrException(SERVICE_UNAVAILABLE, ".system collection not available");
ArrayList<Slice> slices = new ArrayList<>(coll.getActiveSlices());
if (slices.isEmpty()) throw new SolrException(SERVICE_UNAVAILABLE, ".no active slices for .system collection");
Collections.shuffle(slices); //do load balancing
Collections.shuffle(slices, RANDOM); //do load balancing
Slice slice = slices.get(0) ;
Replica replica = slice.getReplicas().iterator().next();
if (replica == null) throw new SolrException(SERVICE_UNAVAILABLE, ".no active replica available for .system collection");