Collection<Slice> slices = clusterState.getActiveSlices(this.collection); long time = System.currentTimeMillis(); List<Replica> shuffler = new ArrayList();
protected void constructStreams() throws IOException { try { ZkStateReader zkStateReader = cloudSolrClient.getZkStateReader(); ClusterState clusterState = zkStateReader.getClusterState(); //System.out.println("Connected to zk an got cluster state."); Collection<Slice> slices = clusterState.getActiveSlices(this.collection); long time = System.currentTimeMillis(); params.put("distrib","false"); // We are the aggregator. for(Slice slice : slices) { Collection<Replica> replicas = slice.getReplicas(); List<Replica> shuffler = new ArrayList(); for(Replica replica : replicas) { shuffler.add(replica); } Collections.shuffle(shuffler, new Random(time)); Replica rep = shuffler.get(0); ZkCoreNodeProps zkProps = new ZkCoreNodeProps(rep); String url = zkProps.getCoreUrl(); SolrStream solrStream = new SolrStream(url, params); if(streamContext != null) { solrStream.setStreamContext(streamContext); } solrStream.setFieldMappings(this.fieldMappings); solrStreams.add(solrStream); } } catch (Exception e) { throw new IOException(e); } }
ClusterState clusterState = zkStateReader.getClusterState(); Map<String,String> leaders = new HashMap<String,String>(); for (Slice slice : clusterState.getActiveSlices(collection)) { Replica leader = slice.getLeader(); if (leader != null) {
public static int getLiveAndActiveReplicaCount(ZkStateReader zkStateReader, String collection) { Collection<Slice> slices; slices = zkStateReader.getClusterState().getActiveSlices(collection); int liveAndActive = 0; for (Slice slice : slices) { for (Replica replica : slice.getReplicas()) { boolean live = zkStateReader.getClusterState().liveNodesContain(replica.getNodeName()); boolean active = replica.getState() == Replica.State.ACTIVE; if (live && active) { liveAndActive++; } } } return liveAndActive; }