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


Java ShardResponse.getShardRequest方法代码示例

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


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

示例1: requestUpdates

import org.apache.solr.handler.component.ShardResponse; //导入方法依赖的package包/类
private boolean requestUpdates(ShardResponse srsp, List<Long> toRequest) {
  String replica = srsp.getShardRequest().shards[0];

  log.info(msg() + "Requesting updates from " + replica + "n=" + toRequest.size() + " versions=" + toRequest);

  // reuse our original request object
  ShardRequest sreq = srsp.getShardRequest();

  sreq.purpose = 0;
  sreq.params = new ModifiableSolrParams();
  sreq.params.set("qt", "/get");
  sreq.params.set("distrib", false);
  sreq.params.set("getUpdates", StrUtils.join(toRequest, ','));
  sreq.params.set("onlyIfActive", onlyIfActive);
  sreq.responses.clear();  // needs to be zeroed for correct correlation to occur

  shardHandler.submit(sreq, sreq.shards[0], sreq.params);

  return true;
}
 
开发者ID:europeana,项目名称:search,代码行数:21,代码来源:PeerSync.java

示例2: requestUpdates

import org.apache.solr.handler.component.ShardResponse; //导入方法依赖的package包/类
private boolean requestUpdates(ShardResponse srsp, List<Long> toRequest) {
  String replica = srsp.getShardRequest().shards[0];

  log.info(msg() + "Requesting updates from " + replica + "n=" + toRequest.size() + " versions=" + toRequest);

  // reuse our original request object
  ShardRequest sreq = srsp.getShardRequest();

  sreq.purpose = 0;
  sreq.params = new ModifiableSolrParams();
  sreq.params.set("qt","/get");
  sreq.params.set("distrib",false);
  sreq.params.set("getUpdates", StrUtils.join(toRequest, ','));
  sreq.responses.clear();  // needs to be zeroed for correct correlation to occur

  shardHandler.submit(sreq, sreq.shards[0], sreq.params);

  return true;
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:20,代码来源:PeerSync.java

示例3: handleResponse

import org.apache.solr.handler.component.ShardResponse; //导入方法依赖的package包/类
private boolean handleResponse(ShardResponse srsp) {
  ShardRequest sreq = srsp.getShardRequest();

  if (srsp.getException() != null) {

    // TODO: look at this more thoroughly - we don't want
    // to fail on connection exceptions, but it may make sense
    // to determine this based on the number of fails
    //
    // If the replica went down between asking for versions and asking for specific updates, that
    // shouldn't be treated as success since we counted on getting those updates back (and avoided
    // redundantly asking other replicas for them).
    if (cantReachIsSuccess && sreq.purpose == 1 && srsp.getException() instanceof SolrServerException) {
      Throwable solrException = ((SolrServerException) srsp.getException())
          .getRootCause();
      boolean connectTimeoutExceptionInChain = connectTimeoutExceptionInChain(srsp.getException());
      if (connectTimeoutExceptionInChain || solrException instanceof ConnectException || solrException instanceof ConnectTimeoutException
          || solrException instanceof NoHttpResponseException || solrException instanceof SocketException) {
        log.warn(msg() + " couldn't connect to " + srsp.getShardAddress() + ", counting as success");

        return true;
      }
    }
    
    if (cantReachIsSuccess && sreq.purpose == 1 && srsp.getException() instanceof SolrException && ((SolrException) srsp.getException()).code() == 503) {
      log.warn(msg() + " got a 503 from " + srsp.getShardAddress() + ", counting as success");
      return true;
    }
    
    if (cantReachIsSuccess && sreq.purpose == 1 && srsp.getException() instanceof SolrException && ((SolrException) srsp.getException()).code() == 404) {
      log.warn(msg() + " got a 404 from " + srsp.getShardAddress() + ", counting as success. " +
          "Perhaps /get is not registered?");
      return true;
    }
    
    // TODO: we should return the above information so that when we can request a recovery through zookeeper, we do
    // that for these nodes
    
    // TODO: at least log???
    // srsp.getException().printStackTrace(System.out);
   
    log.warn(msg() + " exception talking to " + srsp.getShardAddress() + ", failed", srsp.getException());
    
    return false;
  }

  if (sreq.purpose == 1) {
    return handleVersions(srsp);
  } else {
    return handleUpdates(srsp);
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:53,代码来源:PeerSync.java

示例4: handleVersions

import org.apache.solr.handler.component.ShardResponse; //导入方法依赖的package包/类
private boolean handleVersions(ShardResponse srsp) {
  // we retrieved the last N updates from the replica
  List<Long> otherVersions = (List<Long>)srsp.getSolrResponse().getResponse().get("versions");
  // TODO: how to handle short lists?

  SyncShardRequest sreq = (SyncShardRequest) srsp.getShardRequest();
  sreq.reportedVersions =  otherVersions;

  log.info(msg() + " Received " + otherVersions.size() + " versions from " + sreq.shards[0] );

  if (otherVersions.size() == 0) {
    return getNoVersionsIsSuccess; 
  }
  
  boolean completeList = otherVersions.size() < nUpdates;  // do we have their complete list of updates?

  Collections.sort(otherVersions, absComparator);

  if (debug) {
    log.debug(msg() + " sorted versions from " + sreq.shards[0] + " = " + otherVersions);
  }
  
  long otherHigh = percentile(otherVersions, .2f);
  long otherLow = percentile(otherVersions, .8f);

  if (ourHighThreshold < otherLow) {
    // Small overlap between version windows and ours is older
    // This means that we might miss updates if we attempted to use this method.
    // Since there exists just one replica that is so much newer, we must
    // fail the sync.
    log.info(msg() + " Our versions are too old. ourHighThreshold="+ourHighThreshold + " otherLowThreshold="+otherLow);
    return false;
  }

  if (ourLowThreshold > otherHigh) {
    // Small overlap between windows and ours is newer.
    // Using this list to sync would result in requesting/replaying results we don't need
    // and possibly bringing deleted docs back to life.
    log.info(msg() + " Our versions are newer. ourLowThreshold="+ourLowThreshold + " otherHigh="+otherHigh);
    return true;
  }
  
  List<Long> toRequest = new ArrayList<>();
  for (Long otherVersion : otherVersions) {
    // stop when the entries get old enough that reorders may lead us to see updates we don't need
    if (!completeList && Math.abs(otherVersion) < ourLowThreshold) break;

    if (ourUpdateSet.contains(otherVersion) || requestedUpdateSet.contains(otherVersion)) {
      // we either have this update, or already requested it
      // TODO: what if the shard we previously requested this from returns failure (because it goes
      // down)
      continue;
    }

    toRequest.add(otherVersion);
    requestedUpdateSet.add(otherVersion);
  }

  sreq.requestedUpdates = toRequest;
  
  if (toRequest.isEmpty()) {
    log.info(msg() + " Our versions are newer. ourLowThreshold="+ourLowThreshold + " otherHigh="+otherHigh);

    // we had (or already requested) all the updates referenced by the replica
    return true;
  }
  
  if (toRequest.size() > maxUpdates) {
    log.info(msg() + " Failing due to needing too many updates:" + maxUpdates);
    return false;
  }

  return requestUpdates(srsp, toRequest);
}
 
开发者ID:europeana,项目名称:search,代码行数:75,代码来源:PeerSync.java

示例5: handleResponse

import org.apache.solr.handler.component.ShardResponse; //导入方法依赖的package包/类
private boolean handleResponse(ShardResponse srsp) {
  ShardRequest sreq = srsp.getShardRequest();

  if (srsp.getException() != null) {

    // TODO: look at this more thoroughly - we don't want
    // to fail on connection exceptions, but it may make sense
    // to determine this based on the number of fails
    //
    // If the replica went down between asking for versions and asking for specific updates, that
    // shouldn't be treated as success since we counted on getting those updates back (and avoided
    // redundantly asking other replicas for them).
    if (cantReachIsSuccess && sreq.purpose == 1 && srsp.getException() instanceof SolrServerException) {
      Throwable solrException = ((SolrServerException) srsp.getException())
          .getRootCause();
      if (solrException instanceof ConnectException || solrException instanceof ConnectTimeoutException
          || solrException instanceof NoHttpResponseException || solrException instanceof SocketException) {
        log.warn(msg() + " couldn't connect to " + srsp.getShardAddress() + ", counting as success");

        return true;
      }
    }
    
    if (cantReachIsSuccess && sreq.purpose == 1 && srsp.getException() instanceof SolrException && ((SolrException) srsp.getException()).code() == 503) {
      log.warn(msg() + " got a 503 from " + srsp.getShardAddress() + ", counting as success");
      return true;
    }
    
    if (cantReachIsSuccess && sreq.purpose == 1 && srsp.getException() instanceof SolrException && ((SolrException) srsp.getException()).code() == 404) {
      log.warn(msg() + " got a 404 from " + srsp.getShardAddress() + ", counting as success");
      return true;
    }
    // TODO: at least log???
    // srsp.getException().printStackTrace(System.out);
   
    log.warn(msg() + " exception talking to " + srsp.getShardAddress() + ", failed", srsp.getException());
    
    return false;
  }

  if (sreq.purpose == 1) {
    return handleVersions(srsp);
  } else {
    return handleUpdates(srsp);
  }
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:47,代码来源:PeerSync.java

示例6: handleVersions

import org.apache.solr.handler.component.ShardResponse; //导入方法依赖的package包/类
private boolean handleVersions(ShardResponse srsp) {
  // we retrieved the last N updates from the replica
  List<Long> otherVersions = (List<Long>)srsp.getSolrResponse().getResponse().get("versions");
  // TODO: how to handle short lists?

  SyncShardRequest sreq = (SyncShardRequest) srsp.getShardRequest();
  sreq.reportedVersions =  otherVersions;

  log.info(msg() + " Received " + otherVersions.size() + " versions from " + sreq.shards[0] );

  if (otherVersions.size() == 0) {
    return getNoVersionsIsSuccess; 
  }
  
  boolean completeList = otherVersions.size() < nUpdates;  // do we have their complete list of updates?

  Collections.sort(otherVersions, absComparator);

  if (debug) {
    log.debug(msg() + " sorted versions from " + sreq.shards[0] + " = " + otherVersions);
  }
  
  long otherHigh = percentile(otherVersions, .2f);
  long otherLow = percentile(otherVersions, .8f);

  if (ourHighThreshold < otherLow) {
    // Small overlap between version windows and ours is older
    // This means that we might miss updates if we attempted to use this method.
    // Since there exists just one replica that is so much newer, we must
    // fail the sync.
    log.info(msg() + " Our versions are too old. ourHighThreshold="+ourHighThreshold + " otherLowThreshold="+otherLow);
    return false;
  }

  if (ourLowThreshold > otherHigh) {
    // Small overlap between windows and ours is newer.
    // Using this list to sync would result in requesting/replaying results we don't need
    // and possibly bringing deleted docs back to life.
    log.info(msg() + " Our versions are newer. ourLowThreshold="+ourLowThreshold + " otherHigh="+otherHigh);
    return true;
  }
  
  List<Long> toRequest = new ArrayList<Long>();
  for (Long otherVersion : otherVersions) {
    // stop when the entries get old enough that reorders may lead us to see updates we don't need
    if (!completeList && Math.abs(otherVersion) < ourLowThreshold) break;

    if (ourUpdateSet.contains(otherVersion) || requestedUpdateSet.contains(otherVersion)) {
      // we either have this update, or already requested it
      // TODO: what if the shard we previously requested this from returns failure (because it goes
      // down)
      continue;
    }

    toRequest.add(otherVersion);
    requestedUpdateSet.add(otherVersion);
  }

  sreq.requestedUpdates = toRequest;
  
  if (toRequest.isEmpty()) {
    log.info(msg() + " Our versions are newer. ourLowThreshold="+ourLowThreshold + " otherHigh="+otherHigh);

    // we had (or already requested) all the updates referenced by the replica
    return true;
  }
  
  if (toRequest.size() > maxUpdates) {
    log.info(msg() + " Failing due to needing too many updates:" + maxUpdates);
    return false;
  }

  return requestUpdates(srsp, toRequest);
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:75,代码来源:PeerSync.java


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