当前位置: 首页>>代码示例>>Java>>正文


Java DocCollection.getSlice方法代码示例

本文整理汇总了Java中org.apache.solr.common.cloud.DocCollection.getSlice方法的典型用法代码示例。如果您正苦于以下问题:Java DocCollection.getSlice方法的具体用法?Java DocCollection.getSlice怎么用?Java DocCollection.getSlice使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.solr.common.cloud.DocCollection的用法示例。


在下文中一共展示了DocCollection.getSlice方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: amISubShardLeader

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private boolean amISubShardLeader(DocCollection coll, Slice parentSlice, String id, SolrInputDocument doc) throws InterruptedException {
  // Am I the leader of a shard in "construction/recovery" state?
  String myShardId = req.getCore().getCoreDescriptor().getCloudDescriptor().getShardId();
  Slice mySlice = coll.getSlice(myShardId);
  String state = mySlice.getState();
  if (Slice.CONSTRUCTION.equals(state) || Slice.RECOVERY.equals(state)) {
    Replica myLeader = zkController.getZkStateReader().getLeaderRetry(collection, myShardId);
    boolean amILeader = myLeader.getName().equals(
        req.getCore().getCoreDescriptor().getCloudDescriptor()
            .getCoreNodeName());
    if (amILeader) {
      // Does the document belong to my hash range as well?
      DocRouter.Range myRange = mySlice.getRange();
      if (myRange == null) myRange = new DocRouter.Range(Integer.MIN_VALUE, Integer.MAX_VALUE);
      if (parentSlice != null)  {
        boolean isSubset = parentSlice.getRange() != null && myRange.isSubsetOf(parentSlice.getRange());
        return isSubset && coll.getRouter().isTargetSlice(id, doc, req.getParams(), myShardId, coll);
      } else  {
        // delete by query case -- as long as I am a sub shard leader we're fine
        return true;
      }
    }
  }
  return false;
}
 
开发者ID:europeana,项目名称:search,代码行数:26,代码来源:DistributedUpdateProcessor.java

示例2: waitForCoreNodeGone

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private boolean waitForCoreNodeGone(String collectionName, String shard, String replicaName, int timeoutms) throws InterruptedException {
  long waitUntil = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeoutms, TimeUnit.MILLISECONDS);
  boolean deleted = false;
  while (System.nanoTime() < waitUntil) {
    Thread.sleep(100);
    DocCollection docCollection = zkStateReader.getClusterState().getCollection(collectionName);
    if(docCollection != null) {
      Slice slice = docCollection.getSlice(shard);
      if(slice == null || slice.getReplica(replicaName) == null) {
        deleted =  true;
      }
    }
    // Return true if either someone already deleted the collection/slice/replica.
    if (docCollection == null || deleted) break;
  }
  return deleted;
}
 
开发者ID:europeana,项目名称:search,代码行数:18,代码来源:OverseerCollectionProcessor.java

示例3: waitForNewShard

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private void waitForNewShard(String collectionName, String sliceName) throws KeeperException, InterruptedException {
  log.info("Waiting for slice {} of collection {} to be available", sliceName, collectionName);
  long startTime = System.currentTimeMillis();
  int retryCount = 320;
  while (retryCount-- > 0) {
    DocCollection collection = zkStateReader.getClusterState().getCollection(collectionName);
    if (collection == null) {
      throw new SolrException(ErrorCode.SERVER_ERROR,
          "Unable to find collection: " + collectionName + " in clusterstate");
    }
    Slice slice = collection.getSlice(sliceName);
    if (slice != null) {
      log.info("Waited for {} seconds for slice {} of collection {} to be available",
          (System.currentTimeMillis() - startTime) / 1000, sliceName, collectionName);
      return;
    }
    Thread.sleep(1000);
    zkStateReader.updateClusterState(true);
  }
  throw new SolrException(ErrorCode.SERVER_ERROR,
      "Could not find new slice " + sliceName + " in collection " + collectionName
          + " even after waiting for " + (System.currentTimeMillis() - startTime) / 1000 + " seconds"
  );
}
 
开发者ID:europeana,项目名称:search,代码行数:25,代码来源:OverseerCollectionProcessor.java

示例4: waitTillRecovered

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private void waitTillRecovered() throws Exception {
  for (int i = 0; i < 30; i++) {
    Thread.sleep(3000);
    ZkStateReader zkStateReader = cloudClient.getZkStateReader();
    zkStateReader.updateClusterState(true);
    ClusterState clusterState = zkStateReader.getClusterState();
    DocCollection collection1 = clusterState.getCollection("collection1");
    Slice slice = collection1.getSlice("shard1");
    Collection<Replica> replicas = slice.getReplicas();
    boolean allActive = true;
    for (Replica replica : replicas) {
      if (!clusterState.liveNodesContain(replica.getNodeName())
          || !replica.get(ZkStateReader.STATE_PROP).equals(
          ZkStateReader.ACTIVE)) {
        allActive = false;
        break;
      }
    }
    if (allActive) {
      return;
    }
  }
  printLayout();
  fail("timeout waiting to see recovered node");
}
 
开发者ID:europeana,项目名称:search,代码行数:26,代码来源:ChaosMonkeyShardSplitTest.java

示例5: waitTillAllNodesActive

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private void waitTillAllNodesActive() throws Exception {
  for (int i = 0; i < 60; i++) { 
    Thread.sleep(3000);
    ZkStateReader zkStateReader = cloudClient.getZkStateReader();
    zkStateReader.updateClusterState(true);
    ClusterState clusterState = zkStateReader.getClusterState();
    DocCollection collection1 = clusterState.getCollection("collection1");
    Slice slice = collection1.getSlice("shard1");
    Collection<Replica> replicas = slice.getReplicas();
    boolean allActive = true;
    for (Replica replica : replicas) {
      if (!clusterState.liveNodesContain(replica.getNodeName())
          || !replica.get(ZkStateReader.STATE_PROP).equals(
              ZkStateReader.ACTIVE)) {
        allActive = false;
        break;
      }
    }
    if (allActive) {
      return;
    }
  }
  printLayout();
  fail("timeout waiting to see all nodes active");
}
 
开发者ID:europeana,项目名称:search,代码行数:26,代码来源:SyncSliceTest.java

示例6: waitTillRecovered

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private void waitTillRecovered() throws Exception {
  for (int i = 0; i < 30; i++) { 
    Thread.sleep(3000);
    ZkStateReader zkStateReader = cloudClient.getZkStateReader();
    zkStateReader.updateClusterState(true);
    ClusterState clusterState = zkStateReader.getClusterState();
    DocCollection collection1 = clusterState.getCollection("collection1");
    Slice slice = collection1.getSlice("shard1");
    Collection<Replica> replicas = slice.getReplicas();
    boolean allActive = true;
    for (Replica replica : replicas) {
      if (!clusterState.liveNodesContain(replica.getNodeName())
          || !replica.get(ZkStateReader.STATE_PROP).equals(
              ZkStateReader.ACTIVE)) {
        allActive = false;
        break;
      }
    }
    if (allActive) {
      return;
    }
  }
  printLayout();
  fail("timeout waiting to see recovered node");
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:26,代码来源:SyncSliceTest.java

示例7: couldIbeSubShardLeader

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private boolean couldIbeSubShardLeader(DocCollection coll) {
  // Could I be the leader of a shard in "construction/recovery" state?
  String myShardId = req.getCore().getCoreDescriptor().getCloudDescriptor()
      .getShardId();
  Slice mySlice = coll.getSlice(myShardId);
  String state = mySlice.getState();
  return (Slice.CONSTRUCTION.equals(state) || Slice.RECOVERY.equals(state));
}
 
开发者ID:europeana,项目名称:search,代码行数:9,代码来源:DistributedUpdateProcessor.java

示例8: removeAndWaitForLastReplicaGone

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
protected void removeAndWaitForLastReplicaGone(String COLL_NAME, Replica replica, String shard)
    throws SolrServerException, IOException, InterruptedException {
  Map m = makeMap("collection", COLL_NAME, "action", DELETEREPLICA, "shard",
      shard, "replica", replica.getName());
  SolrParams params = new MapSolrParams(m);
  SolrRequest request = new QueryRequest(params);
  request.setPath("/admin/collections");
  this.client.request(request);
  long endAt = System.currentTimeMillis() + 3000;
  boolean success = false;
  DocCollection testcoll = null;
  while (System.currentTimeMillis() < endAt) {
    testcoll = getCommonCloudSolrServer().getZkStateReader()
        .getClusterState().getCollection(COLL_NAME);
    // In case of a custom sharded collection, the last replica deletion would also lead to
    // the deletion of the slice.
    success = testcoll.getSlice(shard) == null;
    if (success) {
      log.info("replica cleaned up {}/{} core {}",
          shard + "/" + replica.getName(), replica.getStr("core"));
      log.info("current state {}", testcoll);
      break;
    }
    Thread.sleep(100);
  }
  assertTrue("Replica not cleaned up", success);
}
 
开发者ID:europeana,项目名称:search,代码行数:28,代码来源:DeleteLastCustomShardedReplicaTest.java

示例9: deleteReplica

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private void deleteReplica(ClusterState clusterState, ZkNodeProps message, NamedList results) throws KeeperException, InterruptedException {
  checkRequired(message, COLLECTION_PROP, SHARD_ID_PROP,REPLICA_PROP);
  String collectionName = message.getStr(COLLECTION_PROP);
  String shard = message.getStr(SHARD_ID_PROP);
  String replicaName = message.getStr(REPLICA_PROP);
  DocCollection coll = clusterState.getCollection(collectionName);
  Slice slice = coll.getSlice(shard);
  ShardHandler shardHandler = shardHandlerFactory.getShardHandler();
  if(slice==null){
    throw new SolrException(ErrorCode.BAD_REQUEST, "Invalid shard name : "+shard+" in collection : "+ collectionName);
  }
  Replica replica = slice.getReplica(replicaName);
  if(replica == null){
    ArrayList<String> l = new ArrayList<>();
    for (Replica r : slice.getReplicas()) l.add(r.getName());
    throw new SolrException(ErrorCode.BAD_REQUEST, "Invalid replica : " + replicaName + " in shard/collection : "
        + shard + "/"+ collectionName + " available replicas are "+ StrUtils.join(l,','));
  }

  String baseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP);
  String core = replica.getStr(ZkStateReader.CORE_NAME_PROP);
  
  // assume the core exists and try to unload it
  Map m = ZkNodeProps.makeMap("qt", adminPath, CoreAdminParams.ACTION,
      CoreAdminAction.UNLOAD.toString(), CoreAdminParams.CORE, core,
      CoreAdminParams.DELETE_INSTANCE_DIR, "true",
      CoreAdminParams.DELETE_DATA_DIR, "true");
  
  ShardRequest sreq = new ShardRequest();
  sreq.purpose = 1;
  sreq.shards = new String[] {baseUrl};
  sreq.actualShards = sreq.shards;
  sreq.params = new ModifiableSolrParams(new MapSolrParams(m));
  try {
    shardHandler.submit(sreq, baseUrl, sreq.params);
  } catch (Exception e) {
    log.warn("Exception trying to unload core " + sreq, e);
  }
  
  collectShardResponses(!Slice.ACTIVE.equals(replica.getStr(Slice.STATE)) ? new NamedList() : results,
      false, null, shardHandler);
  
  if (waitForCoreNodeGone(collectionName, shard, replicaName, 5000)) return;//check if the core unload removed the corenode zk enry
  deleteCoreNode(collectionName, replicaName, replica, core); // try and ensure core info is removed from clusterstate
  if(waitForCoreNodeGone(collectionName, shard, replicaName, 30000)) return;

  throw new SolrException(ErrorCode.SERVER_ERROR, "Could not  remove replica : " + collectionName + "/" + shard+"/" + replicaName);
}
 
开发者ID:europeana,项目名称:search,代码行数:49,代码来源:OverseerCollectionProcessor.java

示例10: deleteReplica

import org.apache.solr.common.cloud.DocCollection; //导入方法依赖的package包/类
private void deleteReplica(ClusterState clusterState, ZkNodeProps message, NamedList results) throws KeeperException, InterruptedException {
  checkRequired(message, COLLECTION_PROP, SHARD_ID_PROP,REPLICA_PROP);
  String collectionName = message.getStr(COLLECTION_PROP);
  String shard = message.getStr(SHARD_ID_PROP);
  String replicaName = message.getStr(REPLICA_PROP);
  DocCollection coll = clusterState.getCollection(collectionName);
  Slice slice = coll.getSlice(shard);
  if(slice==null){
    throw new SolrException(ErrorCode.BAD_REQUEST, "Invalid shard name : "+shard+" in collection : "+ collectionName);
  }
  Replica replica = slice.getReplica(replicaName);
  if(replica == null){
    ArrayList<String> l = new ArrayList<String>();
    for (Replica r : slice.getReplicas()) l.add(r.getName());
    throw new SolrException(ErrorCode.BAD_REQUEST, "Invalid replica : " + replicaName + " in shard/collection : "
        + shard + "/"+ collectionName + " available replicas are "+ StrUtils.join(l,','));
  }

  String baseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP);
  String core = replica.getStr(ZkStateReader.CORE_NAME_PROP);
  
  // assume the core exists and try to unload it
  Map m = ZkNodeProps.makeMap("qt", adminPath, CoreAdminParams.ACTION,
      CoreAdminAction.UNLOAD.toString(), CoreAdminParams.CORE, core);
  
  ShardRequest sreq = new ShardRequest();
  sreq.purpose = 1;
  sreq.shards = new String[] {baseUrl};
  sreq.actualShards = sreq.shards;
  sreq.params = new ModifiableSolrParams(new MapSolrParams(m));
  try {
    shardHandler.submit(sreq, baseUrl, sreq.params);
  } catch (Exception e) {
    log.warn("Exception trying to unload core " + sreq, e);
  }
  
  collectShardResponses(!Slice.ACTIVE.equals(replica.getStr(Slice.STATE)) ? new NamedList() : results, false, null);
  
  if (waitForCoreNodeGone(collectionName, shard, replicaName, 5000)) return;//check if the core unload removed the corenode zk enry
  deleteCoreNode(collectionName, replicaName, replica, core); // try and ensure core info is removed from clusterstate
  if(waitForCoreNodeGone(collectionName, shard, replicaName, 30000)) return;

  throw new SolrException(ErrorCode.SERVER_ERROR, "Could not  remove replica : " + collectionName + "/" + shard+"/" + replicaName);
}
 
开发者ID:yintaoxue,项目名称:read-open-source-code,代码行数:45,代码来源:OverseerCollectionProcessor.java


注:本文中的org.apache.solr.common.cloud.DocCollection.getSlice方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。