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


Java ErrorCode.SERVICE_UNAVAILABLE属性代码示例

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


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

示例1: openIndexWriter

@Override
public synchronized void openIndexWriter(SolrCore core) throws IOException {
  log.info("Creating new IndexWriter...");
  synchronized (writerPauseLock) {
    if (closed) {
      throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Already closed");
    }
    
    try {
      indexWriter = createMainIndexWriter(core, "DirectUpdateHandler2");
      log.info("New IndexWriter is ready to be used.");
      // we need to null this so it picks up the new writer next get call
      refCntWriter = null;
    } finally {
      pauseWriter = false;
      writerPauseLock.notifyAll();
    }
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:19,代码来源:DefaultSolrCoreState.java

示例2: getLeaderRetry

/**
 * Get shard leader properties, with retry if none exist.
 */
public Replica getLeaderRetry(String collection, String shard, int timeout) throws InterruptedException {
  long timeoutAt = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeout, TimeUnit.MILLISECONDS);
  while (System.nanoTime() < timeoutAt && !closed) {
    if (clusterState != null) {    
      Replica replica = clusterState.getLeader(collection, shard);
      if (replica != null && getClusterState().liveNodesContain(replica.getNodeName())) {
        return replica;
      }
    }
    Thread.sleep(50);
  }
  throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "No registered leader was found after waiting for "
      + timeout + "ms " + ", collection: " + collection + " slice: " + shard);
}
 
开发者ID:europeana,项目名称:search,代码行数:17,代码来源:ZkStateReader.java

示例3: getIndexWriter

@Override
public RefCounted<IndexWriter> getIndexWriter(SolrCore core)
    throws IOException {
  synchronized (writerPauseLock) {
    if (closed) {
      throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "SolrCoreState already closed");
    }
    
    while (pauseWriter) {
      try {
        writerPauseLock.wait(100);
      } catch (InterruptedException e) {}
      
      if (closed) {
        throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Already closed");
      }
    }
    
    if (core == null) {
      // core == null is a signal to just return the current writer, or null
      // if none.
      initRefCntWriter();
      if (refCntWriter == null) return null;
      writerFree = false;
      writerPauseLock.notifyAll();
      if (refCntWriter != null) refCntWriter.incref();
      
      return refCntWriter;
    }
    
    if (indexWriter == null) {
      indexWriter = createMainIndexWriter(core, "DirectUpdateHandler2");
    }
    initRefCntWriter();
    writerFree = false;
    writerPauseLock.notifyAll();
    refCntWriter.incref();
    return refCntWriter;
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:40,代码来源:DefaultSolrCoreState.java

示例4: closeIndexWriter

@Override
public synchronized void closeIndexWriter(SolrCore core, boolean rollback)
    throws IOException {
  log.info("Closing IndexWriter...");
  String coreName = core.getName();
  synchronized (writerPauseLock) {
    if (closed) {
      throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Already closed");
    }
    
    // we need to wait for the Writer to fall out of use
    // first lets stop it from being lent out
    pauseWriter = true;
    // then lets wait until its out of use
    log.info("Waiting until IndexWriter is unused... core=" + coreName);
    
    while (!writerFree) {
      try {
        writerPauseLock.wait(100);
      } catch (InterruptedException e) {}
      
      if (closed) {
        throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE,
            "SolrCoreState already closed");
      }
    }
    
    if (indexWriter != null) {
      if (!rollback) {
        closeIndexWriter(coreName);
      } else {
        rollbackIndexWriter(coreName);
      }
    }
    
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:37,代码来源:DefaultSolrCoreState.java

示例5: zkCheck

private void zkCheck() {
  if ((updateCommand.getFlags() & (UpdateCommand.REPLAY | UpdateCommand.PEER_SYNC)) != 0) {
    // for log reply or peer sync, we don't need to be connected to ZK
    return;
  }

  if (!zkController.getZkClient().getConnectionManager().isLikelyExpired()) {
    return;
  }
  
  throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Cannot talk to ZooKeeper - Updates are disabled.");
}
 
开发者ID:europeana,项目名称:search,代码行数:12,代码来源:DistributedUpdateProcessor.java

示例6: create

/**
 * Creates a new core based on a CoreDescriptor.
 *
 * @param dcore        a core descriptor
 * @param publishState publish core state to the cluster if true
 *
 * @return the newly created core
 */
public SolrCore create(CoreDescriptor dcore, boolean publishState) {

  if (isShutDown) {
    throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Solr has shutdown.");
  }

  try {

    if (zkSys.getZkController() != null) {
      zkSys.getZkController().preRegister(dcore);
    }

    ConfigSet coreConfig = coreConfigService.getConfig(dcore);
    log.info("Creating SolrCore '{}' using configuration from {}", dcore.getName(), coreConfig.getName());
    SolrCore core = new SolrCore(dcore, coreConfig);
    solrCores.addCreated(core);

    // always kick off recovery if we are in non-Cloud mode
    if (!isZooKeeperAware() && core.getUpdateHandler().getUpdateLog() != null) {
      core.getUpdateHandler().getUpdateLog().recoverFromLog();
    }

    registerCore(dcore.getName(), core, publishState);

    return core;

  }
  catch (Exception e) {
    coreInitFailures.put(dcore.getName(), new CoreLoadFailure(dcore, e));
    log.error("Error creating core [{}]: {}", dcore.getName(), e.getMessage(), e);
    throw new SolrException(ErrorCode.SERVER_ERROR, "Unable to create core [" + dcore.getName() + "]", e);
  }

}
 
开发者ID:europeana,项目名称:search,代码行数:42,代码来源:CoreContainer.java

示例7: incRef

@Override
public void incRef(Directory directory) {
  synchronized (this) {
    if (closed) {
      throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Already closed");
    }
    CacheValue cacheValue = byDirectoryCache.get(directory);
    if (cacheValue == null) {
      throw new IllegalArgumentException("Unknown directory: " + directory);
    }
    
    cacheValue.refCnt++;
    log.debug("incRef'ed: {}", cacheValue);
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:15,代码来源:CachingDirectoryFactory.java

示例8: newIndexWriter

@Override
public synchronized void newIndexWriter(SolrCore core, boolean rollback) throws IOException {
  log.info("Creating new IndexWriter...");
  String coreName = core.getName();
  synchronized (writerPauseLock) {
    if (closed) {
      throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Already closed");
    }
    
    // we need to wait for the Writer to fall out of use
    // first lets stop it from being lent out
    pauseWriter = true;
    // then lets wait until its out of use
    log.info("Waiting until IndexWriter is unused... core=" + coreName);
    
    while (!writerFree) {
      try {
        writerPauseLock.wait(100);
      } catch (InterruptedException e) {}
      
      if (closed) {
        throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "SolrCoreState already closed");
      }
    }

    try {
      if (indexWriter != null) {
        if (!rollback) {
          closeIndexWriter(coreName);
        } else {
          rollbackIndexWriter(coreName);
        }
      }
      indexWriter = createMainIndexWriter(core, "DirectUpdateHandler2");
      log.info("New IndexWriter is ready to be used.");
      // we need to null this so it picks up the new writer next get call
      refCntWriter = null;
    } finally {
      
      pauseWriter = false;
      writerPauseLock.notifyAll();
    }
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:44,代码来源:DefaultSolrCoreState.java

示例9: doDefensiveChecks

private void doDefensiveChecks(DistribPhase phase) {
  boolean isReplayOrPeersync = (updateCommand.getFlags() & (UpdateCommand.REPLAY | UpdateCommand.PEER_SYNC)) != 0;
  if (isReplayOrPeersync) return;

  String from = req.getParams().get(DISTRIB_FROM);
  ClusterState clusterState = zkController.getClusterState();
      
  CloudDescriptor cloudDescriptor = req.getCore().getCoreDescriptor().getCloudDescriptor();
  Slice mySlice = clusterState.getSlice(collection, cloudDescriptor.getShardId());
  boolean localIsLeader = cloudDescriptor.isLeader();
  if (DistribPhase.FROMLEADER == phase && localIsLeader && from != null) { // from will be null on log replay
    String fromShard = req.getParams().get(DISTRIB_FROM_PARENT);
    if (fromShard != null) {
      if (Slice.ACTIVE.equals(mySlice.getState()))  {
        throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE,
            "Request says it is coming from parent shard leader but we are in active state");
      }
      // shard splitting case -- check ranges to see if we are a sub-shard
      Slice fromSlice = zkController.getClusterState().getCollection(collection).getSlice(fromShard);
      DocRouter.Range parentRange = fromSlice.getRange();
      if (parentRange == null) parentRange = new DocRouter.Range(Integer.MIN_VALUE, Integer.MAX_VALUE);
      if (mySlice.getRange() != null && !mySlice.getRange().isSubsetOf(parentRange)) {
        throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE,
            "Request says it is coming from parent shard leader but parent hash range is not superset of my range");
      }
    } else {
      String fromCollection = req.getParams().get(DISTRIB_FROM_COLLECTION); // is it because of a routing rule?
      if (fromCollection == null)  {
        log.error("Request says it is coming from leader, but we are the leader: " + req.getParamString());
        SolrException solrExc = new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "Request says it is coming from leader, but we are the leader");
        solrExc.setMetadata("cause", "LeaderChanged");
        throw solrExc;
      }
    }
  }

  if ((isLeader && !localIsLeader) || (isSubShardLeader && !localIsLeader)) {
    log.error("ClusterState says we are the leader, but locally we don't think so");
    throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE,
        "ClusterState says we are the leader (" + zkController.getBaseUrl()
            + "/" + req.getCore().getName() + "), but locally we don't think so. Request came from " + from);
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:43,代码来源:DistributedUpdateProcessor.java

示例10: replicate

private void replicate(String nodeName, SolrCore core, ZkNodeProps leaderprops)
    throws SolrServerException, IOException {

  ZkCoreNodeProps leaderCNodeProps = new ZkCoreNodeProps(leaderprops);
  String leaderUrl = leaderCNodeProps.getCoreUrl();
  
  log.info("Attempting to replicate from " + leaderUrl + ". core=" + coreName);
  
  // send commit
  commitOnLeader(leaderUrl);
  
  // use rep handler directly, so we can do this sync rather than async
  SolrRequestHandler handler = core.getRequestHandler(REPLICATION_HANDLER);
  if (handler instanceof LazyRequestHandlerWrapper) {
    handler = ((LazyRequestHandlerWrapper) handler).getWrappedHandler();
  }
  ReplicationHandler replicationHandler = (ReplicationHandler) handler;
  
  if (replicationHandler == null) {
    throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE,
        "Skipping recovery, no " + REPLICATION_HANDLER + " handler found");
  }
  
  ModifiableSolrParams solrParams = new ModifiableSolrParams();
  solrParams.set(ReplicationHandler.MASTER_URL, leaderUrl);
  
  if (isClosed()) return; // we check closed on return
  boolean success = replicationHandler.doFetch(solrParams, false);
  
  if (!success) {
    throw new SolrException(ErrorCode.SERVER_ERROR,
        "Replication for recovery failed.");
  }
  
  // solrcloud_debug
  if (log.isDebugEnabled()) {
    try {
      RefCounted<SolrIndexSearcher> searchHolder = core
          .getNewestSearcher(false);
      SolrIndexSearcher searcher = searchHolder.get();
      Directory dir = core.getDirectoryFactory().get(core.getIndexDir(), DirContext.META_DATA, null);
      try {
        log.debug(core.getCoreDescriptor().getCoreContainer()
            .getZkController().getNodeName()
            + " replicated "
            + searcher.search(new MatchAllDocsQuery(), 1).totalHits
            + " from "
            + leaderUrl
            + " gen:"
            + core.getDeletionPolicy().getLatestCommit().getGeneration()
            + " data:" + core.getDataDir()
            + " index:" + core.getIndexDir()
            + " newIndex:" + core.getNewIndexDir()
            + " files:" + Arrays.asList(dir.listAll()));
      } finally {
        core.getDirectoryFactory().release(dir);
        searchHolder.decref();
      }
    } catch (Exception e) {
      throw new SolrException(ErrorCode.SERVER_ERROR, null, e);
    }
  }

}
 
开发者ID:europeana,项目名称:search,代码行数:64,代码来源:RecoveryStrategy.java


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