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
----------------------------------------------------------------------