Map<String, Replica> shards = entry.getValue().getReplicasMap(); for (Map.Entry<String, Replica> shard : shards.entrySet()) { String state = shard.getValue().getStr(ZkStateReader.STATE_PROP); if ((state.equals(Replica.State.RECOVERING) || state.equals(Replica.State.DOWN)) && clusterState.liveNodesContain(shard.getValue().getStr( ZkStateReader.NODE_NAME_PROP))) { sawLiveRecovering = true;
/** SolrCore name. */ public String getCoreName() { return getStr(ZkStateReader.CORE_NAME_PROP); }
public String getBaseUrl(){ return getStr(ZkStateReader.BASE_URL_PROP); }
public String getProperty(String propertyName) { final String propertyKey; if (!propertyName.startsWith(ZkStateReader.PROPERTY_PROP_PREFIX)) { propertyKey = ZkStateReader.PROPERTY_PROP_PREFIX+propertyName; } else { propertyKey = propertyName; } final String propertyValue = getStr(propertyKey); return propertyValue; }
private Replica findLeader() { for (Replica replica : replicas.values()) { if (replica.getStr(LEADER) != null) return replica; } return null; }
protected SocketProxy getProxyForReplica(Replica replica) throws Exception { String replicaBaseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP); assertNotNull(replicaBaseUrl); URL baseUrl = new URL(replicaBaseUrl); SocketProxy proxy = proxies.get(baseUrl.toURI()); if (proxy == null && !baseUrl.toExternalForm().endsWith("/")) { baseUrl = new URL(baseUrl.toExternalForm() + "/"); proxy = proxies.get(baseUrl.toURI()); } assertNotNull("No proxy found for " + baseUrl + "!", proxy); return proxy; }
private Replica findLeader() { for (Replica replica : replicas.values()) { if (replica.getStr(LEADER) != null) { assert replica.getType() == Type.TLOG || replica.getType() == Type.NRT: "Pull replica should not become leader!"; return replica; } } return null; }
private void addNodeNameReplica(Replica replica) { List<Replica> replicas = nodeNameReplicas.get(replica.getNodeName()); if (replicas == null) { replicas = new ArrayList<>(); nodeNameReplicas.put(replica.getNodeName(), replicas); } replicas.add(replica); if (replica.getStr(Slice.LEADER) != null) { List<Replica> leaderReplicas = nodeNameLeaderReplicas.get(replica.getNodeName()); if (leaderReplicas == null) { leaderReplicas = new ArrayList<>(); nodeNameLeaderReplicas.put(replica.getNodeName(), leaderReplicas); } leaderReplicas.add(replica); } }
public String getShardId(String collectionName, String nodeName, String coreName) { Collection<CollectionRef> states = collectionStates.values(); if (collectionName != null) { CollectionRef c = collectionStates.get(collectionName); if (c != null) states = Collections.singletonList( c ); } for (CollectionRef ref : states) { DocCollection coll = ref.get(); if(coll == null) continue;// this collection go tremoved in between, skip for (Slice slice : coll.getSlices()) { for (Replica replica : slice.getReplicas()) { // TODO: for really large clusters, we could 'index' on this String rnodeName = replica.getStr(ZkStateReader.NODE_NAME_PROP); String rcore = replica.getStr(ZkStateReader.CORE_NAME_PROP); if (nodeName.equals(rnodeName) && coreName.equals(rcore)) { return slice.getName(); } } } } return null; }
public String getShardId(String collectionName, String nodeName, String coreName) { Collection<CollectionRef> states = collectionStates.values(); if (collectionName != null) { CollectionRef c = collectionStates.get(collectionName); if (c != null) states = Collections.singletonList( c ); } for (CollectionRef ref : states) { DocCollection coll = ref.get(); if(coll == null) continue;// this collection go tremoved in between, skip for (Slice slice : coll.getSlices()) { for (Replica replica : slice.getReplicas()) { // TODO: for really large clusters, we could 'index' on this String rnodeName = replica.getStr(ZkStateReader.NODE_NAME_PROP); String rcore = replica.getStr(ZkStateReader.CORE_NAME_PROP); if (nodeName.equals(rnodeName) && coreName.equals(rcore)) { return slice.getName(); } } } } return null; }
protected Replica getShardLeader(String testCollectionName, String shardId, int timeoutSecs) throws Exception { Replica leader = null; long timeout = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeoutSecs, TimeUnit.SECONDS); while (System.nanoTime() < timeout) { Replica tmp = null; try { tmp = cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, shardId); } catch (Exception exc) {} if (tmp != null && "active".equals(tmp.getStr(ZkStateReader.STATE_PROP))) { leader = tmp; break; } Thread.sleep(1000); } assertNotNull("Could not find active leader for " + shardId + " of " + testCollectionName + " after "+timeoutSecs+" secs; clusterState: " + printClusterStateInfo(testCollectionName), leader); return leader; }
Map<String, Replica> shards = entry.getValue().getReplicasMap(); for (Map.Entry<String, Replica> shard : shards.entrySet()) { String state = shard.getValue().getStr(ZkStateReader.STATE_PROP); if ((state.equals(Replica.State.RECOVERING) || state.equals(Replica.State.DOWN)) && clusterState.liveNodesContain(shard.getValue().getStr( ZkStateReader.NODE_NAME_PROP))) { sawLiveRecovering = true;
Map<String, Replica> shards = entry.getValue().getReplicasMap(); for (Map.Entry<String, Replica> shard : shards.entrySet()) { String state = shard.getValue().getStr(ZkStateReader.STATE_PROP); if ((state.equals(Replica.State.RECOVERING.toString()) || state.equals(Replica.State.DOWN.toString())) && clusterState.liveNodesContain(shard.getValue().getStr( ZkStateReader.NODE_NAME_PROP))) { sawLiveRecovering = true;
final Map<String, Replica> shards = entry.getValue().getReplicasMap(); for (final Map.Entry<String, Replica> shard : shards.entrySet()) { final String state = shard.getValue().getStr(ZkStateReader.STATE_PROP).toUpperCase(); if ((Replica.State.RECOVERING.name().equals(state) || Replica.State.DOWN.name().equals(state)) && clusterState.liveNodesContain(shard.getValue().getStr( ZkStateReader.NODE_NAME_PROP))) { sawLiveRecovering = true;
public List<List<String>> extractShardUrls(String zkHost, String collection) { DocCollection docCollection = extractDocCollection(zkHost, collection); List<Slice> slices = getSortedSlices(docCollection.getSlices()); List<List<String>> solrUrls = new ArrayList<List<String>>(slices.size()); for (Slice slice : slices) { if (slice.getLeader() == null) { throw new IllegalArgumentException("Cannot find SolrCloud slice leader. " + "It looks like not all of your shards are registered in ZooKeeper yet"); } Collection<Replica> replicas = slice.getReplicas(); List<String> urls = new ArrayList<String>(replicas.size()); for (Replica replica : replicas) { ZkCoreNodeProps props = new ZkCoreNodeProps(replica); if (replica.getStr(Slice.LEADER) == null) { urls.add(props.getCoreUrl()); // add followers at tail } else { urls.add(0, props.getCoreUrl()); // insert leader at head } } solrUrls.add(urls); } return solrUrls; }
for (String sliceName : slices.keySet()) { for (Replica replica : slices.get(sliceName).getReplicas()) { if (nodesAllowedToRunShards != null && !nodesAllowedToRunShards.contains(replica.getStr(ZkStateReader.NODE_NAME_PROP))) { return "Shard " + replica.getName() + " created on node " + replica.getNodeName() + " not allowed to run shards for the created collection " + collectionName;
String rbaseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP); if (live && coreNodeName.equals(rcoreNodeName) && baseUrl.equals(rbaseUrl)) {