• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java ShardResponse类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



ShardResponse类属于org.apache.solr.handler.component包,在下文中一共展示了ShardResponse类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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: process

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
/**
 * {@inheritDoc}
 */
@Override
public void process(ResponseBuilder rb, ShardRequest shardRequest) {
  boolean returnScores = (rb.getFieldFlags() & SolrIndexSearcher.GET_SCORES) != 0;
  ShardResponse srsp = shardRequest.responses.get(0);
  SolrDocumentList docs = (SolrDocumentList)srsp.getSolrResponse().getResponse().get("response");
  String uniqueIdFieldName = rb.req.getSchema().getUniqueKeyField().getName();

  for (SolrDocument doc : docs) {
    Object id = doc.getFieldValue(uniqueIdFieldName).toString();
    ShardDoc shardDoc = rb.resultIds.get(id);
    FieldDoc fieldDoc = (FieldDoc) shardDoc;
    if (shardDoc != null) {
      if (returnScores && !Float.isNaN(fieldDoc.score)) {
          doc.setField("score", fieldDoc.score);
      }
      rb.retrievedDocuments.put(id, doc);
    }
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:23,代码来源:StoredFieldsShardResponseProcessor.java


示例3: collectShardResponses

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
private void collectShardResponses(NamedList results, boolean abortOnError,
                                   String msgOnError,
                                   ShardHandler shardHandler) {
  ShardResponse srsp;
  do {
    srsp = shardHandler.takeCompletedOrError();
    if (srsp != null) {
      processResponse(results, srsp);
      Throwable exception = srsp.getException();
      if (abortOnError && exception != null)  {
        // drain pending requests
        while (srsp != null)  {
          srsp = shardHandler.takeCompletedOrError();
        }
        throw new SolrException(ErrorCode.SERVER_ERROR, msgOnError, exception);
      }
    }
  } while (srsp != null);
}
 
开发者ID:europeana,项目名称:search,代码行数:20,代码来源:OverseerCollectionProcessor.java


示例4: mockShardHandlerForCreateJob

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
protected List<SubmitCapture> mockShardHandlerForCreateJob(
    Integer numberOfSlices, Integer numberOfReplica) {
  List<SubmitCapture> submitCaptures = new ArrayList<>();
  for (int i = 0; i < (numberOfSlices * numberOfReplica); i++) {
    SubmitCapture submitCapture = new SubmitCapture();
    shardHandlerMock.submit(capture(submitCapture.shardRequestCapture),
        capture(submitCapture.nodeUrlsWithoutProtocolPartCapture),
        capture(submitCapture.params));
    expectLastCall();
    submitCaptures.add(submitCapture);
    ShardResponse shardResponseWithoutException = new ShardResponse();
    shardResponseWithoutException.setSolrResponse(new QueryResponse());
    expect(shardHandlerMock.takeCompletedOrError()).andReturn(
        shardResponseWithoutException);
  }
  expect(shardHandlerMock.takeCompletedOrError()).andReturn(null);
  return submitCaptures;
}
 
开发者ID:europeana,项目名称:search,代码行数:19,代码来源:OverseerCollectionProcessorTest.java


示例5: 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


示例6: processResponse

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
private void processResponse(NamedList results, ShardResponse srsp) {
  Throwable e = srsp.getException();
  if (e != null) {
    log.error("Error from shard: " + srsp.getShard(), e);
    
    SimpleOrderedMap failure = (SimpleOrderedMap) results.get("failure");
    if (failure == null) {
      failure = new SimpleOrderedMap();
      results.add("failure", failure);
    }

    failure.add(srsp.getNodeName(), e.getClass().getName() + ":" + e.getMessage());
    
  } else {
    
    SimpleOrderedMap success = (SimpleOrderedMap) results.get("success");
    if (success == null) {
      success = new SimpleOrderedMap();
      results.add("success", success);
    }
    
    success.add(srsp.getNodeName(), srsp.getSolrResponse().getResponse());
  }
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:25,代码来源:OverseerCollectionProcessor.java


示例7: mockShardHandlerForCreateJob

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
protected List<SubmitCapture> mockShardHandlerForCreateJob(
    Integer numberOfSlices, Integer numberOfReplica) {
  List<SubmitCapture> submitCaptures = new ArrayList<SubmitCapture>();
  for (int i = 0; i < (numberOfSlices * numberOfReplica); i++) {
    SubmitCapture submitCapture = new SubmitCapture();
    shardHandlerMock.submit(capture(submitCapture.shardRequestCapture),
        capture(submitCapture.nodeUrlsWithoutProtocolPartCapture),
        capture(submitCapture.params));
    expectLastCall();
    submitCaptures.add(submitCapture);
    ShardResponse shardResponseWithoutException = new ShardResponse();
    shardResponseWithoutException.setSolrResponse(new QueryResponse());
    expect(shardHandlerMock.takeCompletedOrError()).andReturn(
        shardResponseWithoutException);
  }
  expect(shardHandlerMock.takeCompletedOrError()).andReturn(null);
  return submitCaptures;
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:19,代码来源:OverseerCollectionProcessorTest.java


示例8: handleResponses

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void handleResponses(ResponseBuilder rb, ShardRequest req) {
	System.out.println("===== HANDLE RESPONSES =====");
	System.out.println("purpose=" + req.purpose);
	System.out.println("Shards: " + (req.shards != null ? String.join(" ", req.shards) : "(null)"));
	if ((req.purpose & ShardRequest.PURPOSE_GET_FIELDS) > 0) {
		Map<String, Long> numFounds = (Map<String, Long>)rb.req.getContext().get(COMPONENT_NAME + "numFounds");
		Set<Object> joinIds = (Set<Object>)rb.req.getContext().get(COMPONENT_NAME + "joinIds");
		for (ShardResponse rsp : req.responses) {
			NamedList response = rsp.getSolrResponse().getResponse();
			SolrDocumentList results = (SolrDocumentList)response.get("response");
			numFounds.put(rsp.getShard(), results.getNumFound());
			NamedList counts = (NamedList)response.get("facet_counts");
			if (counts != null) {
				NamedList fields = (NamedList)counts.get("facet_fields");
				NamedList values = (NamedList)fields.get(joinField);
				for (int i = 0; i < values.size(); ++i) {
					joinIds.add(values.getName(i));
				}
			}
		}
	}
}
 
开发者ID:flaxsearch,项目名称:BioSolr,代码行数:25,代码来源:NumFoundSearchComponent.java


示例9: collectShardResponses

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
private void collectShardResponses(NamedList results, boolean abortOnError, String msgOnError) {
  ShardResponse srsp;
  do {
    srsp = shardHandler.takeCompletedOrError();
    if (srsp != null) {
      processResponse(results, srsp);
      Throwable exception = srsp.getException();
      if (abortOnError && exception != null)  {
        // drain pending requests
        while (srsp != null)  {
          srsp = shardHandler.takeCompletedOrError();
        }
        throw new SolrException(ErrorCode.SERVER_ERROR, msgOnError, exception);
      }
    }
  } while (srsp != null);
}
 
开发者ID:yintaoxue,项目名称:read-open-source-code,代码行数:18,代码来源:OverseerCollectionProcessor.java


示例10: collectionCmd

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
private void collectionCmd(ClusterState clusterState, ZkNodeProps message, ModifiableSolrParams params, NamedList results, String stateMatcher) {
  log.info("Executing Collection Cmd : " + params);
  String collectionName = message.getStr("name");
  
  DocCollection coll = clusterState.getCollection(collectionName);
  
  for (Map.Entry<String,Slice> entry : coll.getSlicesMap().entrySet()) {
    Slice slice = entry.getValue();
    sliceCmd(clusterState, params, stateMatcher, slice);
  }
  
  ShardResponse srsp;
  do {
    srsp = shardHandler.takeCompletedOrError();
    if (srsp != null) {
      processResponse(results, srsp);
    }
  } while (srsp != null);

}
 
开发者ID:yintaoxue,项目名称:read-open-source-code,代码行数:21,代码来源:OverseerCollectionProcessor.java


示例11: handleResponse

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
private boolean handleResponse(ShardResponse srsp) {
  NamedList<Object> response = srsp.getSolrResponse().getResponse();
  // TODO: why does this return null sometimes?
  if (response == null) {
    return false;
  }
  Boolean success = (Boolean) response.get("sync");
  
  if (success == null) {
    success = false;
  }
  
  return success;
}
 
开发者ID:europeana,项目名称:search,代码行数:15,代码来源:SyncStrategy.java


示例12: processResponses

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
private void processResponses(NamedList results, ShardHandler shardHandler) {
  ShardResponse srsp;
  do {
    srsp = shardHandler.takeCompletedOrError();
    if (srsp != null) {
      processResponse(results, srsp);
    }
  } while (srsp != null);
}
 
开发者ID:europeana,项目名称:search,代码行数:10,代码来源:OverseerCollectionProcessor.java


示例13: processResponse

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
private void processResponse(NamedList results, ShardResponse srsp) {
  Throwable e = srsp.getException();
  String nodeName = srsp.getNodeName();
  SolrResponse solrResponse = srsp.getSolrResponse();
  String shard = srsp.getShard();

  processResponse(results, e, nodeName, solrResponse, shard);
}
 
开发者ID:europeana,项目名称:search,代码行数:9,代码来源:OverseerCollectionProcessor.java


示例14: merge

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
public void merge(ResponseBuilder rb, ShardRequest shardRequest) {
  int count = 0;
  NamedList merged = new NamedList();

  for(ShardResponse shardResponse : shardRequest.responses) {
    NamedList response = shardResponse.getSolrResponse().getResponse();
    NamedList analytics = (NamedList)response.get("analytics");
    Integer c = (Integer)analytics.get("mycount");
    count += c.intValue();
  }

  merged.add("mycount", count);
  rb.rsp.add("analytics", merged);
}
 
开发者ID:europeana,项目名称:search,代码行数:15,代码来源:TestAnalyticsQParserPlugin.java


示例15: getShardHandler

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
@Override
public ShardHandler getShardHandler() {
  return new ShardHandler() {
    @Override
    public void checkDistributed(ResponseBuilder rb) {}

    @Override
    public void submit(ShardRequest sreq, String shard,
        ModifiableSolrParams params) {}

    @Override
    public ShardResponse takeCompletedIncludingErrors() {
      return null;
    }

    @Override
    public ShardResponse takeCompletedOrError() {
      return null;
    }

    @Override
    public void cancelAll() {}

    @Override
    public ShardHandlerFactory getShardHandlerFactory() {
      return MockShardHandlerFactory.this;
    }
  };
}
 
开发者ID:europeana,项目名称:search,代码行数:30,代码来源:MockShardHandlerFactory.java


示例16: finishStage

import org.apache.solr.handler.component.ShardResponse; //导入依赖的package包/类
/** 
 * Used in Distributed Search, merges the suggestion results from every shard
 * */
@Override
public void finishStage(ResponseBuilder rb) {
  SolrParams params = rb.req.getParams();
  LOG.debug("SuggestComponent finishStage with : " + params);
  if (!params.getBool(COMPONENT_NAME, false) || rb.stage != ResponseBuilder.STAGE_GET_FIELDS)
    return;
  int count = params.getInt(SUGGEST_COUNT, 1);
  
  List<SuggesterResult> suggesterResults = new ArrayList<>();
  
  // Collect Shard responses
  for (ShardRequest sreq : rb.finished) {
    for (ShardResponse srsp : sreq.responses) {
      NamedList<Object> resp;
      if((resp = srsp.getSolrResponse().getResponse()) != null) {
        @SuppressWarnings("unchecked")
        Map<String, SimpleOrderedMap<NamedList<Object>>> namedList = 
            (Map<String, SimpleOrderedMap<NamedList<Object>>>) resp.get(SuggesterResultLabels.SUGGEST);
        LOG.debug(srsp.getShard() + " : " + namedList);
        suggesterResults.add(toSuggesterResult(namedList));
      }
    }
  }
  
  // Merge Shard responses
  SuggesterResult suggesterResult = merge(suggesterResults, count);
  Map<String, SimpleOrderedMap<NamedList<Object>>> namedListResults = 
      new HashMap<>();
  toNamedList(suggesterResult, namedListResults);
  
  rb.rsp.add(SuggesterResultLabels.SUGGEST, namedListResults);
}
 
开发者ID:Alfresco,项目名称:community-edition-old,代码行数:36,代码来源:AsyncBuildSuggestComponent.java


示例17: 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


示例18: 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


示例19: 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


示例20: 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类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java DisconnectedRealmsScreen类代码示例发布时间:2022-05-22
下一篇:
Java Action类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap