You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2018/09/20 23:59:35 UTC
[29/29] lucene-solr:jira/http2: merge with master
merge with master
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4867bb84
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4867bb84
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4867bb84
Branch: refs/heads/jira/http2
Commit: 4867bb841119c37e323928188c1c3e688d6b662c
Parents: 4cc995c d7e97fb
Author: Cao Manh Dat <da...@apache.org>
Authored: Fri Sep 21 06:58:54 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Fri Sep 21 06:58:54 2018 +0700
----------------------------------------------------------------------
dev-tools/scripts/smokeTestRelease.py | 39 +-
lucene/CHANGES.txt | 33 +-
lucene/MIGRATE.txt | 17 +
.../analysis/core/LowerCaseTokenizer.java | 72 ---
.../core/LowerCaseTokenizerFactory.java | 75 ---
.../lucene/analysis/core/SimpleAnalyzer.java | 4 +-
.../lucene/analysis/core/StopAnalyzer.java | 6 +-
.../miscellaneous/LimitTokenCountAnalyzer.java | 2 +-
.../query/QueryAutoStopWordAnalyzer.java | 2 +-
.../shingle/ShingleAnalyzerWrapper.java | 2 +-
.../analysis/standard/ClassicAnalyzer.java | 11 +-
.../standard/UAX29URLEmailAnalyzer.java | 13 +-
.../lucene/analysis/util/CharTokenizer.java | 86 +---
...apache.lucene.analysis.util.TokenizerFactory | 1 -
.../analysis/br/TestBrazilianAnalyzer.java | 7 +-
.../lucene/analysis/core/TestAnalyzers.java | 8 -
.../analysis/custom/TestCustomAnalyzer.java | 13 +-
.../lucene/analysis/de/TestGermanAnalyzer.java | 8 +-
.../TestPerFieldAnalyzerWrapper.java | 2 +-
.../standard/TestStandardFactories.java | 16 -
.../analysis/util/TestCharTokenizers.java | 122 +----
lucene/common-build.xml | 2 +-
.../org/apache/lucene/analysis/Analyzer.java | 42 +-
.../analysis/standard/StandardAnalyzer.java | 13 +-
.../org/apache/lucene/document/LatLonPoint.java | 24 +
.../LatLonPointDistanceFeatureQuery.java | 480 +++++++++++++++++++
.../apache/lucene/index/FilterCodecReader.java | 18 +-
.../lucene/index/FilterDirectoryReader.java | 2 +-
.../apache/lucene/index/FilterLeafReader.java | 2 +-
.../lucene/analysis/TestAnalyzerWrapper.java | 58 +++
.../TestLatLonPointDistanceFeatureQuery.java | 411 ++++++++++++++++
.../org/apache/lucene/index/TestAddIndexes.java | 2 +
.../lucene/index/TestFilterCodecReader.java | 18 +
.../function/valuesource/MultiFunction.java | 4 +-
.../java/org/apache/lucene/geo/Tessellator.java | 101 ++--
.../apache/lucene/document/TestLatLonShape.java | 23 +
.../org/apache/lucene/geo/TestTessellator.java | 22 +
.../prefix/BytesRefIteratorTokenStream.java | 2 +-
.../spatial/prefix/PrefixTreeStrategy.java | 17 +
.../analyzing/AnalyzingInfixSuggester.java | 2 +-
.../suggest/analyzing/FreeTextSuggester.java | 2 +-
.../suggest/document/CompletionAnalyzer.java | 2 +-
.../analyzing/AnalyzingSuggesterTest.java | 365 +++++---------
.../suggest/analyzing/FuzzySuggesterTest.java | 159 ++----
.../analysis/CannedBinaryTokenStream.java | 2 +-
.../lucene/analysis/CannedTokenStream.java | 8 +-
solr/CHANGES.txt | 22 +-
.../extraction/solr/collection1/conf/schema.xml | 15 -
.../ExtractingRequestHandlerTest.java | 11 +-
.../cloud/api/collections/MoveReplicaCmd.java | 13 +-
.../solr/handler/component/StatsField.java | 4 +-
.../reporters/jmx/JmxMetricsReporter.java | 10 +-
.../AbstractSpatialPrefixTreeFieldType.java | 35 +-
.../apache/solr/schema/CurrencyFieldType.java | 8 +-
.../java/org/apache/solr/schema/FieldType.java | 4 +-
.../org/apache/solr/schema/IndexSchema.java | 2 +-
.../apache/solr/schema/PreAnalyzedField.java | 17 +-
.../solr/search/CollapsingQParserPlugin.java | 15 +-
.../apache/solr/update/SolrCmdDistributor.java | 6 +-
.../CloneFieldUpdateProcessorFactory.java | 4 +-
.../TolerantUpdateProcessorFactory.java | 2 +-
.../collection1/conf/schema-copyfield-test.xml | 14 -
.../solr/collection1/conf/schema-folding.xml | 3 +-
.../solr/collection1/conf/schema-hash.xml | 13 -
.../collection1/conf/schema-required-fields.xml | 14 -
.../solr/collection1/conf/schema-rest.xml | 9 +-
.../solr/collection1/conf/schema-sql.xml | 13 -
.../collection1/conf/schema-tokenizer-test.xml | 11 +-
.../test-files/solr/collection1/conf/schema.xml | 15 +-
.../solr/collection1/conf/schema12.xml | 9 +-
.../solr/collection1/conf/schema15.xml | 14 -
.../solr/collection1/conf/schemasurround.xml | 14 -
.../conf/solrconfig-update-processor-chains.xml | 2 +-
.../org/apache/solr/BasicFunctionalityTest.java | 2 +-
.../apache/solr/cloud/DeleteReplicaTest.java | 2 +-
.../solr/cloud/DocValuesNotIndexedTest.java | 3 +-
.../cloud/FullSolrCloudDistribCmdsTest.java | 3 +-
.../solr/cloud/LIRRollingUpdatesTest.java | 6 +-
.../org/apache/solr/cloud/MoveReplicaTest.java | 14 +-
.../solr/cloud/SaslZkACLProviderTest.java | 1 +
.../cloud/TestCloudJSONFacetJoinDomain.java | 8 +-
.../solr/cloud/TestCloudJSONFacetSKG.java | 4 +-
.../apache/solr/cloud/TestWithCollection.java | 1 +
.../org/apache/solr/cloud/ZkShardTermsTest.java | 1 +
.../cloud/api/collections/ShardSplitTest.java | 2 +
.../collections/TestHdfsCloudBackupRestore.java | 2 +-
.../AutoAddReplicasIntegrationTest.java | 3 +-
.../ScheduledMaintenanceTriggerTest.java | 23 +-
.../ScheduledTriggerIntegrationTest.java | 3 +-
.../SearchRateTriggerIntegrationTest.java | 1 +
.../sim/TestSimTriggerIntegration.java | 5 +-
.../FieldAnalysisRequestHandlerTest.java | 2 +-
.../org/apache/solr/handler/TestSQLHandler.java | 1 +
.../admin/MetricsHistoryHandlerTest.java | 1 +
.../PhrasesIdentificationComponentTest.java | 2 +-
.../handler/component/StatsComponentTest.java | 10 +-
.../reporters/solr/SolrCloudReportersTest.java | 3 +-
.../apache/solr/request/SimpleFacetsTest.java | 2 +-
.../schema/TestFieldCollectionResource.java | 10 +-
.../solr/rest/schema/TestFieldTypeResource.java | 3 +-
.../solr/schema/CurrencyFieldTypeTest.java | 2 +-
.../org/apache/solr/schema/TestPointFields.java | 2 +-
.../solr/schema/TestSortableTextField.java | 4 +-
.../search/CurrencyRangeFacetCloudTest.java | 2 +-
.../apache/solr/search/QueryEqualityTest.java | 2 +-
.../solr/search/TestCollapseQParserPlugin.java | 18 +-
.../org/apache/solr/search/TestRangeQuery.java | 2 +-
.../search/function/SortByFunctionTest.java | 8 +-
.../solr/util/TestMaxTokenLenTokenizer.java | 20 +-
.../src/common-query-parameters.adoc | 2 +-
solr/solr-ref-guide/src/language-analysis.adoc | 13 +-
.../src/local-parameters-in-queries.adoc | 2 +-
.../src/solrcloud-autoscaling-overview.adoc | 25 +-
...olrcloud-autoscaling-policy-preferences.adoc | 236 +++++----
.../tools/CheckLinksAndAnchors.java | 2 +-
.../solrj/request/CollectionAdminRequest.java | 5 +
.../solrj/solr/collection1/conf/schema-sql.xml | 13 -
.../solrj/solr/collection1/conf/schema.xml | 13 -
.../solr/configsets/streaming/conf/schema.xml | 11 -
.../client/solrj/impl/CloudSolrClientTest.java | 3 +-
.../solr/client/solrj/io/graph/GraphTest.java | 2 +-
.../solr/BaseDistributedSearchTestCase.java | 2 +-
122 files changed, 1816 insertions(+), 1310 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4867bb84/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
index 983617f,cb7f9cb..8369fcc
--- a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
@@@ -159,97 -306,36 +159,95 @@@ public class SolrCmdDistributor
+ req.node.getUrl() + " retry:"
+ req.retries + " " + req.cmd + " params:" + req.uReq.getParams());
}
-
- if (isCommit) {
- // a commit using ConncurrentUpdateSolrServer is not async,
- // so we make it async to prevent commits from happening
- // serially across multiple nodes
- pending.add(completionService.submit(() -> {
- doRequest(req);
- return null;
- }));
+
+ try {
+ req.uReq.setBasePath(req.node.getUrl());
+ if (req.synchronous) {
+ NamedList rsp = client.request(req.uReq);
+ req.trackRequestResult(rsp, true);
+ pendingTasksPhaser.arriveAndDeregister();
+ } else {
+ //TODO write add cmds in single outputstream
+ client.request(req.uReq, null, new Http2SolrClient.OnComplete<NamedList>() {
+ @Override
+ public void onSuccess(NamedList result) {
+ req.trackRequestResult(result, true);
+ pendingTasksPhaser.arriveAndDeregister();
+ }
+
+ @Override
+ public void onFailure(Throwable t) {
+ handleAndRetry(req, t, isCommit);
+ }
+ });
+ }
+ } catch (Exception e) {
+ handleAndRetry(req, e, isCommit);
+ }
+ }
+
+ private void handleAndRetry(Req req, Throwable t, boolean isCommit) {
+ SolrException.log(log, t);
+ Error error = new Error();
+ error.t = t;
+ error.req = req;
+ if (t instanceof SolrException) {
+ error.statusCode = ((SolrException) t).code();
+ }
+ if (checkRetry(error)) {
+ submit0(req, isCommit);
} else {
- doRequest(req);
+ req.trackRequestResult(null, false);
+ allErrors.add(error);
+ pendingTasksPhaser.arriveAndDeregister();
}
}
-
- private void doRequest(final Req req) {
+
+ private boolean checkRetry(Error err) {
+ log.info("SolrCmdDistributor got error", err);
try {
- String oldNodeUrl = err.req.node.getUrl();
-
- SolrClient solrClient = clients.getSolrClient(req);
- solrClient.request(req.uReq);
- } catch (Exception e) {
- SolrException.log(log, e);
- Error error = new Error();
- error.e = e;
- error.req = req;
- if (e instanceof SolrException) {
- error.statusCode = ((SolrException) e).code();
+ /*
+ * if this is a retryable request we may want to retry, depending on the error we received and
+ * the number of times we have already retried
+ */
+ boolean isRetry = err.req.shouldRetry(err);
+ if (testing_errorHook != null) Diagnostics.call(testing_errorHook, err.t);
+
+ // this can happen in certain situations such as close
+ if (isRetry) {
+ err.req.retries++;
+
+ if (err.req.node instanceof ForwardNode) {
+ SolrException.log(SolrCmdDistributor.log, "forwarding update to "
- + oldNodeUrl + " failed - retrying ... retries: "
++ + err.req.node.getUrl() + " failed - retrying ... retries: "
+ + err.req.retries + "/" + err.req.node.getMaxRetries() + ". "
+ + err.req.cmd.toString() + " params:"
+ + err.req.uReq.getParams() + " rsp:" + err.statusCode, err.t);
+ } else {
+ SolrException.log(SolrCmdDistributor.log, "FROMLEADER request to "
- + oldNodeUrl + " failed - retrying ... retries: "
++ + err.req.node.getUrl() + " failed - retrying ... retries: "
+ + err.req.retries + "/" + err.req.node.getMaxRetries() + ". "
+ + err.req.cmd.toString() + " params:"
+ + err.req.uReq.getParams() + " rsp:" + err.statusCode, err.t);
+ }
+ try {
+ Thread.sleep(retryPause); //TODO: Do we want this wait for every error?
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ log.warn(null, e);
+ }
+ return true;
+ } else {
+ return false;
}
- errors.add(error);
+ } catch (Exception e) {
+ // continue on
+ log.error("Unexpected Error while doing request retries", e);
+ // avoid infinite loop
+ return false;
}
}
-
+
public static class Req {
public Node node;
public UpdateRequest uReq;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4867bb84/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
----------------------------------------------------------------------