You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2016/12/06 23:13:45 UTC
[50/50] [abbrv] lucene-solr:apiv2: Merge branch 'master' into apiv2
Merge branch 'master' into apiv2
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/d26d694b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/d26d694b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/d26d694b
Branch: refs/heads/apiv2
Commit: d26d694b2ada96e32e8822cd9a261581afa0f04d
Parents: 47fd492 c164f7e
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Dec 6 18:12:12 2016 -0500
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Dec 6 18:12:12 2016 -0500
----------------------------------------------------------------------
dev-tools/README.txt | 11 +-
dev-tools/doap/README.txt | 8 +
dev-tools/doap/lucene.rdf | 721 +++++++
dev-tools/doap/solr.rdf | 469 +++++
dev-tools/scripts/smokeTestRelease.py | 50 +-
lucene/CHANGES.txt | 92 +-
.../ASCIIFoldingFilterFactory.java | 17 +-
.../TestAsciiFoldingFilterFactory.java | 54 +
lucene/analysis/kuromoji/ivy.xml | 2 +-
.../analysis/ja/JapaneseTokenizerFactory.java | 17 +-
.../ja/dict/TokenInfoDictionary$fst.dat | Bin 1716198 -> 1698563 bytes
.../analysis/ja/util/ConnectionCostsWriter.java | 1 -
.../ja/util/TokenInfoDictionaryBuilder.java | 4 +-
.../index/TestBackwardsCompatibility.java | 86 +-
.../org/apache/lucene/index/index.6.3.0-cfs.zip | Bin 0 -> 15869 bytes
.../apache/lucene/index/index.6.3.0-nocfs.zip | Bin 0 -> 15876 bytes
.../org/apache/lucene/index/sorted.6.2.0.zip | Bin 0 -> 157007 bytes
.../org/apache/lucene/index/sorted.6.2.1.zip | Bin 0 -> 100974 bytes
.../org/apache/lucene/index/sorted.6.3.0.zip | Bin 0 -> 71090 bytes
lucene/benchmark/build.xml | 6 +-
lucene/benchmark/conf/highlighters-postings.alg | 4 +-
lucene/benchmark/conf/highlighters-tv.alg | 2 +-
lucene/build.xml | 9 +-
.../KNearestNeighborClassifier.java | 8 +-
.../KNearestNeighborDocumentClassifier.java | 6 +-
.../blocktreeords/OrdsBlockTreeTermsWriter.java | 4 +-
.../codecs/memory/DirectPostingsFormat.java | 3 +
.../lucene/codecs/memory/FSTOrdTermsReader.java | 3 +
.../lucene/codecs/memory/FSTTermsReader.java | 3 +
.../codecs/memory/MemoryPostingsFormat.java | 18 +-
.../codecs/simpletext/SimpleTextBKDReader.java | 281 ++-
.../codecs/simpletext/SimpleTextBKDWriter.java | 1661 ++++++++++++++++
.../simpletext/SimpleTextPointsReader.java | 5 +-
.../simpletext/SimpleTextPointsWriter.java | 188 +-
.../simpletext/SimpleTextSegmentInfoFormat.java | 148 +-
lucene/common-build.xml | 18 +-
.../apache/lucene/codecs/DocValuesConsumer.java | 10 +-
.../org/apache/lucene/codecs/NormsConsumer.java | 2 +-
.../lucene/codecs/StoredFieldsWriter.java | 2 +-
.../apache/lucene/codecs/TermVectorsWriter.java | 2 +-
.../codecs/blocktree/BlockTreeTermsWriter.java | 4 +-
.../lucene/codecs/blocktree/FieldReader.java | 3 +
.../CompressingStoredFieldsWriter.java | 2 +-
.../CompressingTermVectorsWriter.java | 2 +-
.../GrowableByteArrayDataOutput.java | 2 +-
.../codecs/lucene60/Lucene60PointsFormat.java | 10 +-
.../codecs/lucene60/Lucene60PointsWriter.java | 2 +-
.../lucene/codecs/lucene60/package-info.java | 4 +-
.../lucene62/Lucene62SegmentInfoFormat.java | 118 +-
.../lucene/codecs/lucene62/package-info.java | 4 +-
.../lucene/codecs/lucene70/package-info.java | 15 +-
.../lucene/index/BinaryDocValuesWriter.java | 15 +-
.../org/apache/lucene/index/CheckIndex.java | 312 +--
.../lucene/index/DefaultIndexingChain.java | 4 +
.../apache/lucene/index/DocsWithFieldSet.java | 62 +
.../org/apache/lucene/index/IndexWriter.java | 39 +-
.../apache/lucene/index/IndexWriterConfig.java | 3 +-
.../lucene/index/MappingMultiPostingsEnum.java | 2 +-
.../org/apache/lucene/index/MergeState.java | 76 +-
.../org/apache/lucene/index/MultiSorter.java | 82 +-
.../apache/lucene/index/NormValuesWriter.java | 15 +-
.../lucene/index/NumericDocValuesWriter.java | 15 +-
.../lucene/index/SortedDocValuesWriter.java | 15 +-
.../index/SortedNumericDocValuesWriter.java | 15 +-
.../lucene/index/SortedSetDocValuesWriter.java | 15 +-
.../java/org/apache/lucene/index/Sorter.java | 102 +-
.../src/java/org/apache/lucene/index/Terms.java | 8 +-
.../org/apache/lucene/search/BooleanQuery.java | 11 +-
.../lucene/search/DocValuesRewriteMethod.java | 35 +-
.../lucene/search/RandomAccessWeight.java | 76 -
.../lucene/search/SortedNumericSortField.java | 5 +
.../lucene/search/similarities/Axiomatic.java | 159 ++
.../search/similarities/AxiomaticF1EXP.java | 95 +
.../search/similarities/AxiomaticF1LOG.java | 88 +
.../search/similarities/AxiomaticF2EXP.java | 94 +
.../search/similarities/AxiomaticF2LOG.java | 86 +
.../search/similarities/AxiomaticF3EXP.java | 94 +
.../search/similarities/AxiomaticF3LOG.java | 83 +
.../search/similarities/BM25Similarity.java | 20 +-
.../search/similarities/BooleanSimilarity.java | 95 +
.../search/similarities/ClassicSimilarity.java | 13 +
.../search/similarities/TFIDFSimilarity.java | 12 +-
.../lucene/search/spans/SpanNotQuery.java | 14 +-
.../java/org/apache/lucene/util/BytesRef.java | 2 +-
.../org/apache/lucene/util/BytesRefBuilder.java | 4 +-
.../org/apache/lucene/util/QueryBuilder.java | 25 +-
.../org/apache/lucene/util/RollingBuffer.java | 9 +-
.../org/apache/lucene/util/UnicodeUtil.java | 5 +
.../org/apache/lucene/util/bkd/BKDReader.java | 654 ++++---
.../org/apache/lucene/util/bkd/BKDWriter.java | 293 ++-
.../apache/lucene/util/bkd/HeapPointReader.java | 7 +-
.../apache/lucene/util/bkd/HeapPointWriter.java | 22 +-
.../util/bkd/MutablePointsReaderUtils.java | 21 +-
.../lucene/util/bkd/OfflinePointReader.java | 8 +-
.../lucene/util/bkd/OfflinePointWriter.java | 10 +-
.../org/apache/lucene/util/bkd/PointReader.java | 14 +-
.../org/apache/lucene/util/bkd/PointWriter.java | 6 +-
.../org/apache/lucene/util/fst/Builder.java | 28 +-
.../java/org/apache/lucene/util/fst/FST.java | 633 +-----
.../apache/lucene/util/fst/package-info.java | 1 -
.../TestGrowableByteArrayDataOutput.java | 4 +-
.../lucene/index/TestDocsWithFieldSet.java | 80 +
.../apache/lucene/index/TestIndexSorting.java | 1222 ++++++++++--
.../apache/lucene/index/TestIndexWriter.java | 30 +
.../org/apache/lucene/index/TestTermsEnum.java | 18 +
.../apache/lucene/search/TestPointQueries.java | 3 +
.../similarities/TestAxiomaticSimilarity.java | 86 +
.../similarities/TestBooleanSimilarity.java | 117 ++
.../apache/lucene/search/spans/TestBasics.java | 30 +-
.../apache/lucene/search/spans/TestSpans.java | 79 +-
.../org/apache/lucene/util/TestUnicodeUtil.java | 6 +-
.../lucene/util/automaton/TestUTF32ToUTF8.java | 2 +-
.../apache/lucene/util/bkd/Test2BBKDPoints.java | 11 +-
.../org/apache/lucene/util/bkd/TestBKD.java | 54 +
.../org/apache/lucene/util/fst/Test2BFST.java | 17 +-
.../org/apache/lucene/util/fst/TestFSTs.java | 29 +-
.../apache/lucene/facet/TestDrillSideways.java | 32 +-
.../uhighlight/AnalysisOffsetStrategy.java | 255 ++-
.../CompositeOffsetsPostingsEnum.java | 145 ++
.../uhighlight/DefaultPassageFormatter.java | 204 +-
.../search/uhighlight/FieldHighlighter.java | 30 +-
.../search/uhighlight/FieldOffsetStrategy.java | 115 +-
.../uhighlight/MemoryIndexOffsetStrategy.java | 131 ++
.../uhighlight/MultiTermHighlighting.java | 237 +--
.../uhighlight/MultiValueTokenStream.java | 148 --
.../lucene/search/uhighlight/OffsetsEnum.java | 9 +-
.../lucene/search/uhighlight/Passage.java | 276 +--
.../lucene/search/uhighlight/PhraseHelper.java | 177 +-
.../uhighlight/PostingsOffsetStrategy.java | 3 +-
.../PostingsWithTermVectorsOffsetStrategy.java | 8 +-
.../uhighlight/TermVectorOffsetStrategy.java | 15 +-
.../uhighlight/TokenStreamFromTermVector.java | 395 ----
.../uhighlight/TokenStreamOffsetStrategy.java | 172 ++
.../search/uhighlight/UnifiedHighlighter.java | 166 +-
.../uhighlight/TestUnifiedHighlighter.java | 275 +++
.../uhighlight/TestUnifiedHighlighterMTQ.java | 141 +-
.../TestUnifiedHighlighterRanking.java | 5 +-
.../TestUnifiedHighlighterStrictPhrases.java | 77 +
.../TestUnifiedHighlighterExtensibility.java | 14 +-
lucene/ivy-versions.properties | 11 +-
...jetty-continuation-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-continuation-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-http-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-http-9.3.8.v20160314.jar.sha1 | 1 -
.../licenses/jetty-io-9.3.14.v20161028.jar.sha1 | 1 +
.../licenses/jetty-io-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-server-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-server-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-servlet-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-servlet-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-util-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-util-9.3.8.v20160314.jar.sha1 | 1 -
.../lucene/queryparser/classic/QueryParser.java | 78 +-
.../lucene/queryparser/classic/QueryParser.jj | 28 +
.../queryparser/classic/QueryParserBase.java | 2 +-
.../queryparser/classic/TestQueryParser.java | 14 +
.../queryparser/util/QueryParserTestBase.java | 4 +
.../lucene/replicator/nrt/PrimaryNode.java | 2 +-
.../idversion/VersionBlockTreeTermsWriter.java | 4 +-
.../apache/lucene/document/NearestNeighbor.java | 44 +-
.../lucene/search/DocValuesNumbersQuery.java | 44 +-
.../lucene/search/DocValuesRangeQuery.java | 68 +-
.../lucene/search/DocValuesTermsQuery.java | 35 +-
lucene/site/changes/changes2html.pl | 106 +-
.../serialized/SerializedDVStrategy.java | 30 +-
.../analyzing/AnalyzingInfixSuggester.java | 82 +-
.../document/CompletionFieldsConsumer.java | 4 +
.../suggest/fst/FSTCompletionBuilder.java | 4 +-
.../analyzing/AnalyzingInfixSuggesterTest.java | 111 ++
.../document/TestPrefixCompletionQuery.java | 49 +-
.../index/BasePostingsFormatTestCase.java | 45 +
.../index/BaseSegmentInfoFormatTestCase.java | 91 +-
.../lucene/index/MockRandomMergePolicy.java | 4 +-
.../org/apache/lucene/search/CheckHits.java | 10 +-
.../search/similarities/RandomSimilarity.java | 2 +
.../util/TestRuleSetupAndRestoreClassEnv.java | 3 +-
.../org/apache/lucene/util/fst/FSTTester.java | 14 +-
solr/CHANGES.txt | 271 ++-
solr/bin/solr | 80 +-
solr/bin/solr.cmd | 72 +-
solr/bin/solr.in.cmd | 6 +-
solr/bin/solr.in.sh | 4 +
solr/build.xml | 4 +-
.../plugin/AnalyticsStatisticsCollector.java | 20 +-
solr/contrib/ltr/README.md | 10 +-
solr/contrib/ltr/example/solrconfig.xml | 4 +-
.../LTRFeatureLoggerTransformerFactory.java | 256 +++
.../ltr/response/transform/package-info.java | 23 +
.../solr/ltr/search/LTRQParserPlugin.java | 241 +++
.../apache/solr/ltr/search/package-info.java | 23 +
.../LTRFeatureLoggerTransformerFactory.java | 254 ---
.../solr/response/transform/package-info.java | 23 -
.../apache/solr/search/LTRQParserPlugin.java | 233 ---
.../org/apache/solr/search/package-info.java | 23 -
solr/contrib/ltr/src/java/overview.html | 6 +-
.../solr/collection1/conf/solrconfig-ltr.xml | 4 +-
.../collection1/conf/solrconfig-ltr_Th10_10.xml | 4 +-
.../collection1/conf/solrconfig-multiseg.xml | 6 +-
.../apache/solr/ltr/TestLTRQParserPlugin.java | 14 +
.../solr/ltr/store/rest/TestModelManager.java | 2 +-
solr/contrib/morphlines-core/ivy.xml | 4 +-
.../UIMAUpdateRequestProcessorTest.java | 62 +-
solr/core/ivy.xml | 1 +
.../java/org/apache/solr/api/V2HttpCall.java | 7 +-
.../org/apache/solr/cloud/DistributedQueue.java | 14 +-
.../java/org/apache/solr/cloud/Overseer.java | 13 +-
.../apache/solr/cloud/OverseerStatusCmd.java | 16 +-
.../solr/cloud/OverseerTaskProcessor.java | 6 +-
.../apache/solr/cloud/OverseerTaskQueue.java | 8 +-
.../solr/cloud/overseer/ZkStateWriter.java | 4 +-
.../src/java/org/apache/solr/core/SolrCore.java | 32 +-
.../solr/core/snapshots/SolrSnapshotsTool.java | 468 +++++
.../org/apache/solr/handler/ExportHandler.java | 48 +
.../org/apache/solr/handler/ExportWriter.java | 1720 +++++++++++++++++
.../apache/solr/handler/RequestHandlerBase.java | 19 +-
.../solr/handler/component/ExpandComponent.java | 6 +
.../handler/component/HighlightComponent.java | 108 +-
.../handler/component/HttpShardHandler.java | 50 +-
.../component/HttpShardHandlerFactory.java | 21 +-
.../solr/handler/component/QueryComponent.java | 50 +-
.../component/QueryElevationComponent.java | 28 +-
.../component/ReplicaListTransformer.java | 35 +
.../ShufflingReplicaListTransformer.java | 39 +
.../solr/highlight/DefaultSolrHighlighter.java | 15 +-
.../solr/highlight/PostingsSolrHighlighter.java | 9 +-
.../solr/highlight/UnifiedSolrHighlighter.java | 365 ++++
.../org/apache/solr/parser/QueryParser.java | 11 +-
.../java/org/apache/solr/parser/QueryParser.jj | 7 +-
.../apache/solr/parser/SolrQueryParserBase.java | 194 +-
.../apache/solr/request/DocValuesFacets.java | 13 +-
.../org/apache/solr/request/NumericFacets.java | 4 +-
.../solr/request/macro/MacroExpander.java | 2 +
.../solr/response/JSONResponseWriter.java | 75 +-
.../solr/response/SortingResponseWriter.java | 1805 ------------------
.../solr/response/TextResponseWriter.java | 30 +-
.../java/org/apache/solr/schema/FieldType.java | 48 +-
.../solr/schema/FieldTypePluginLoader.java | 59 +-
.../solr/schema/HasImplicitIndexAnalyzer.java | 25 +
.../solr/schema/ManagedIndexSchemaFactory.java | 12 +
.../apache/solr/schema/PreAnalyzedField.java | 2 +-
.../org/apache/solr/schema/SchemaManager.java | 2 +-
.../solr/search/ExtendedDismaxQParser.java | 6 +-
.../org/apache/solr/search/FastLRUCache.java | 28 +-
.../solr/search/FunctionRangeQParserPlugin.java | 4 +-
.../apache/solr/search/JoinQParserPlugin.java | 1 +
.../java/org/apache/solr/search/LRUCache.java | 4 +-
.../java/org/apache/solr/search/QParser.java | 29 +
.../apache/solr/search/SolrIndexSearcher.java | 26 +
.../java/org/apache/solr/search/SortSpec.java | 10 +
.../solr/search/facet/FacetProcessor.java | 26 +-
.../apache/solr/search/facet/FacetRequest.java | 20 +
.../search/grouping/GroupingSpecification.java | 70 +-
.../distributed/command/QueryCommand.java | 2 +-
.../SearchGroupShardResponseProcessor.java | 4 +-
.../TopGroupsShardResponseProcessor.java | 8 +-
.../GroupedEndResultTransformer.java | 4 +-
.../apache/solr/search/mlt/CloudMLTQParser.java | 19 +-
.../org/apache/solr/servlet/HttpSolrCall.java | 85 +-
.../solr/store/blockcache/BlockCache.java | 16 +-
.../store/blockcache/BlockDirectoryCache.java | 29 +-
.../ClassificationUpdateProcessor.java | 59 +-
.../ClassificationUpdateProcessorFactory.java | 199 +-
.../ClassificationUpdateProcessorParams.java | 112 ++
.../apache/solr/util/ConcurrentLRUCache.java | 427 +++--
.../java/org/apache/solr/util/CryptoKeys.java | 6 +-
.../apache/solr/util/RecordingJSONParser.java | 17 +-
.../src/java/org/apache/solr/util/SolrCLI.java | 3 +-
.../org/apache/solr/util/SolrPluginUtils.java | 6 +-
.../java/org/apache/solr/util/stats/Clock.java | 84 -
.../java/org/apache/solr/util/stats/EWMA.java | 126 --
.../util/stats/ExponentiallyDecayingSample.java | 218 ---
.../org/apache/solr/util/stats/Histogram.java | 238 ---
.../java/org/apache/solr/util/stats/Meter.java | 143 --
.../java/org/apache/solr/util/stats/Sample.java | 52 -
.../org/apache/solr/util/stats/Snapshot.java | 168 --
.../java/org/apache/solr/util/stats/Timer.java | 203 --
.../apache/solr/util/stats/TimerContext.java | 55 -
.../org/apache/solr/util/stats/TimerUtils.java | 58 +
.../apache/solr/util/stats/UniformSample.java | 108 --
solr/core/src/resources/ImplicitPlugins.json | 6 +-
.../conf/schema-unifiedhighlight.xml | 46 +
.../conf/solrconfig-classification.xml | 15 +
.../conf/managed-schema | 41 +
.../conf/solrconfig.xml | 51 +
.../solr/cloud/DocValuesNotIndexedTest.java | 527 +++++
.../org/apache/solr/cloud/OverseerTest.java | 30 +-
.../apache/solr/core/RequestHandlersTest.java | 4 +-
.../test/org/apache/solr/core/SolrCoreTest.java | 2 +-
.../handler/admin/CoreAdminHandlerTest.java | 2 +
.../component/ReplicaListTransformerTest.java | 163 ++
.../ShufflingReplicaListTransformerTest.java | 76 +
.../handler/component/TestExpandComponent.java | 15 +
.../highlight/FastVectorHighlighterTest.java | 9 +-
.../apache/solr/highlight/HighlighterTest.java | 26 +-
.../highlight/TestPostingsSolrHighlighter.java | 2 +-
.../highlight/TestUnifiedSolrHighlighter.java | 229 +++
.../solr/request/macro/TestMacroExpander.java | 13 +
.../apache/solr/response/JSONWriterTest.java | 20 +-
.../apache/solr/response/SmileWriterTest.java | 17 +-
.../apache/solr/response/TestExportWriter.java | 195 ++
.../response/TestJavabinTupleStreamParser.java | 195 ++
.../apache/solr/response/TestPushWriter.java | 81 +
.../response/TestSortingResponseWriter.java | 190 --
.../ManagedSchemaRoundRobinCloudTest.java | 98 +
.../PreAnalyzedFieldManagedSchemaCloudTest.java | 73 +
.../solr/search/TestExtendedDismaxParser.java | 4 +-
.../apache/solr/search/TestSolrQueryParser.java | 198 +-
.../solr/search/facet/TestJsonFacets.java | 19 +
.../solr/servlet/HttpSolrCallGetCoreTest.java | 167 ++
.../store/blockcache/BlockDirectoryTest.java | 25 +-
...lassificationUpdateProcessorFactoryTest.java | 208 +-
...ificationUpdateProcessorIntegrationTest.java | 192 ++
.../ClassificationUpdateProcessorTest.java | 506 +++++
.../SignatureUpdateProcessorFactoryTest.java | 28 +-
.../TestPartialUpdateDeduplication.java | 2 -
.../apache/solr/util/stats/TimerUtilsTest.java | 58 +
solr/licenses/commons-fileupload-1.3.1.jar.sha1 | 1 -
solr/licenses/commons-fileupload-1.3.2.jar.sha1 | 1 +
...jetty-continuation-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-continuation-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-deploy-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-deploy-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-http-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-http-9.3.8.v20160314.jar.sha1 | 1 -
.../licenses/jetty-io-9.3.14.v20161028.jar.sha1 | 1 +
solr/licenses/jetty-io-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-jmx-9.3.14.v20161028.jar.sha1 | 1 +
.../licenses/jetty-jmx-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-rewrite-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-rewrite-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-security-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-security-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-server-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-server-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-servlet-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-servlet-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-servlets-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-servlets-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-util-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-util-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-webapp-9.3.14.v20161028.jar.sha1 | 1 +
.../jetty-webapp-9.3.8.v20160314.jar.sha1 | 1 -
.../jetty-xml-9.3.14.v20161028.jar.sha1 | 1 +
.../licenses/jetty-xml-9.3.8.v20160314.jar.sha1 | 1 -
solr/licenses/metrics-core-3.0.1.jar.sha1 | 1 -
solr/licenses/metrics-core-3.1.2.jar.sha1 | 1 +
.../metrics-healthchecks-3.0.1.jar.sha1 | 1 -
.../metrics-healthchecks-3.1.2.jar.sha1 | 1 +
solr/licenses/start.jar.sha1 | 2 +-
solr/server/etc/jetty-ssl.xml | 4 +-
.../scripts/cloud-scripts/snapshotscli.sh | 176 ++
.../basic_configs/conf/solrconfig.xml | 3 +
.../conf/solrconfig.xml | 3 +
.../conf/solrconfig.xml | 5 +-
solr/solrj/ivy.xml | 4 +
.../solr/client/solrj/impl/CloudSolrClient.java | 349 ++--
.../solrj/impl/ConcurrentUpdateSolrClient.java | 16 +-
.../impl/ZkClientClusterStateProvider.java | 188 ++
.../org/apache/solr/client/solrj/io/Tuple.java | 19 +-
.../client/solrj/io/sql/ConnectionImpl.java | 9 +
.../solr/client/solrj/io/sql/StatementImpl.java | 9 +-
.../client/solrj/io/stream/CloudSolrStream.java | 54 +-
.../io/stream/FeaturesSelectionStream.java | 8 +-
.../solr/client/solrj/io/stream/JDBCStream.java | 58 +-
.../io/stream/JavabinTupleStreamParser.java | 189 ++
.../client/solrj/io/stream/ParallelStream.java | 8 +-
.../solr/client/solrj/io/stream/SolrStream.java | 11 +-
.../client/solrj/io/stream/TextLogitStream.java | 12 +-
.../client/solrj/io/stream/TopicStream.java | 41 +-
.../client/solrj/io/stream/TupleStream.java | 67 +-
.../client/solrj/response/LukeResponse.java | 31 +
.../org/apache/solr/common/IteratorWriter.java | 65 +
.../java/org/apache/solr/common/MapWriter.java | 90 +
.../java/org/apache/solr/common/PushWriter.java | 42 +
.../org/apache/solr/common/SolrDocument.java | 4 +
.../apache/solr/common/cloud/ClusterState.java | 7 +
.../apache/solr/common/cloud/DocCollection.java | 42 +-
.../apache/solr/common/cloud/ZkStateReader.java | 10 +-
.../solr/common/params/HighlightParams.java | 118 +-
.../apache/solr/common/util/JavaBinCodec.java | 198 +-
.../solr/client/solrj/SolrExampleTests.java | 10 +-
.../solrj/impl/CloudSolrClientCacheTest.java | 205 ++
.../impl/TestCloudSolrClientConnections.java | 4 +-
.../solr/client/solrj/io/sql/JdbcTest.java | 61 +-
.../client/solrj/io/stream/JDBCStreamTest.java | 59 +-
.../solrj/io/stream/StreamExpressionTest.java | 326 ++--
.../client/solrj/io/stream/StreamingTest.java | 1428 ++++++++------
.../solr/common/params/CommonParamsTest.java | 8 +-
.../solr/common/util/TestJsonRecordReader.java | 35 +-
.../java/org/apache/solr/SolrTestCaseJ4.java | 22 +
.../apache/solr/cloud/SolrCloudTestCase.java | 3 +-
.../java/org/apache/solr/util/TestHarness.java | 27 +-
.../web/js/angular/controllers/analysis.js | 12 +-
solr/webapp/web/partials/analysis.html | 2 +-
394 files changed, 20980 insertions(+), 9624 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/api/V2HttpCall.java
index c4849e7,0000000..5d8bc15
mode 100644,000000..100644
--- a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
+++ b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
@@@ -1,323 -1,0 +1,328 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.api;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.invoke.MethodHandles;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.google.common.collect.ImmutableSet;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.cloud.DocCollection;
+import org.apache.solr.common.cloud.ZkStateReader;
+import org.apache.solr.common.params.CommonParams;
+import org.apache.solr.common.util.ValidatingJsonMap;
+import org.apache.solr.core.CoreContainer;
+import org.apache.solr.core.PluginBag;
+import org.apache.solr.core.SolrCore;
+import org.apache.solr.logging.MDCLoggingContext;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.request.SolrRequestHandler;
+import org.apache.solr.response.QueryResponseWriter;
+import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.security.AuthorizationContext;
+import org.apache.solr.servlet.HttpSolrCall;
+import org.apache.solr.servlet.SolrDispatchFilter;
+import org.apache.solr.servlet.SolrRequestParsers;
+import org.apache.solr.util.JsonSchemaValidator;
+import org.apache.solr.util.PathTrie;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.apache.solr.common.params.CommonParams.JSON;
+import static org.apache.solr.common.params.CommonParams.WT;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.ADMIN;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.PASSTHROUGH;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.PROCESS;
+import static org.apache.solr.util.PathTrie.getPathSegments;
+
+
+public class V2HttpCall extends HttpSolrCall {
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ private Api api;
+ private List<String> pieces;
+ private String prefix;
+ HashMap<String, String> parts = new HashMap<>();
+ static final Set<String> knownPrefixes = ImmutableSet.of("cluster", "node", "collections", "cores", "c");
+
+ public V2HttpCall(SolrDispatchFilter solrDispatchFilter, CoreContainer cc,
+ HttpServletRequest request, HttpServletResponse response, boolean retry) {
+ super(solrDispatchFilter, cc, request, response, retry);
+ }
+
+ protected void init() throws Exception {
+ String path = this.path;
+ String fullPath = path = path.substring(3);//strip off '/v2'
+ try {
+ pieces = getPathSegments(path);
+ if (pieces.size() == 0) {
+ prefix = "c";
+ path = "/c";
+ } else {
+ prefix = pieces.get(0);
+ }
+
+ boolean isCompositeApi = false;
+ if (knownPrefixes.contains(prefix)) {
+ api = getApiInfo(cores.getRequestHandlers(), path, req.getMethod(), fullPath, parts);
+ if (api != null) {
+ isCompositeApi = api instanceof CompositeApi;
+ if (!isCompositeApi) {
+ solrReq = SolrRequestParsers.DEFAULT.parse(null, path, req);
+ solrReq.getContext().put(CoreContainer.class.getName(), cores);
+ requestType = AuthorizationContext.RequestType.ADMIN;
+ action = ADMIN;
+ return;
+ }
+ }
+ }
+
+ if ("c".equals(prefix) || "collections".equals(prefix)) {
+ String collectionName = origCorename = corename = pieces.get(1);
+ DocCollection collection = getDocCollection(collectionName);
+ if (collection == null)
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "no such collection or alias");
- core = getCoreByCollection(collection.getName());
++
++ boolean isPreferLeader = false;
++ if (path.endsWith("/update") || path.contains("/update/")) {
++ isPreferLeader = true;
++ }
++ core = getCoreByCollection(collection.getName(), isPreferLeader);
+ if (core == null) {
+ //this collection exists , but this node does not have a replica for that collection
+ //todo find a better way to compute remote
+ extractRemotePath(corename, origCorename, 0);
+ return;
+ }
+
+ } else if ("cores".equals(prefix)) {
+ origCorename = corename = pieces.get(1);
+ core = cores.getCore(corename);
+ }
+ if (core == null)
+ throw new SolrException(SolrException.ErrorCode.NOT_FOUND, "no core retrieved for " + corename);
+
+
+ this.path = path = path.substring(prefix.length() + pieces.get(1).length() + 2);
+ Api apiInfo = getApiInfo(core.getRequestHandlers(), path, req.getMethod(), fullPath, parts);
+ if (isCompositeApi && apiInfo instanceof CompositeApi) {
+ ((CompositeApi) this.api).add(apiInfo);
+ } else {
+ api = apiInfo;
+ }
+ MDCLoggingContext.setCore(core);
+ parseRequest();
+
+ if (usingAliases) {
+ processAliases(aliases, collectionsList);
+ }
+
+ action = PROCESS;
+ // we are done with a valid handler
+ } catch (RuntimeException rte) {
+ log.error("Error in init()", rte);
+ throw rte;
+ } finally {
+ if (api == null) action = PASSTHROUGH;
+ if (solrReq != null) solrReq.getContext().put(CommonParams.PATH, path);
+ }
+ }
+
+ protected void parseRequest() throws Exception {
+ config = core.getSolrConfig();
+ // get or create/cache the parser for the core
+ SolrRequestParsers parser = config.getRequestParsers();
+
+ // With a valid handler and a valid core...
+
+ if (solrReq == null) solrReq = parser.parse(core, path, req);
+ }
+
+ protected DocCollection getDocCollection(String collectionName) {
+ if (!cores.isZooKeeperAware()) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Solr not running in cloud mode ");
+ }
+ ZkStateReader zkStateReader = cores.getZkController().getZkStateReader();
+ DocCollection collection = zkStateReader.getClusterState().getCollectionOrNull(collectionName);
+ if (collection == null) {
+ collectionName = corename = lookupAliases(collectionName);
+ collection = zkStateReader.getClusterState().getCollectionOrNull(collectionName);
+ }
+ return collection;
+ }
+
+ public static Api getApiInfo(PluginBag<SolrRequestHandler> requestHandlers,
+ String path, String method,
+ String fullPath,
+ Map<String, String> parts) {
+ fullPath = fullPath == null ? path : fullPath;
+ Api api = requestHandlers.v2lookup(path, method, parts);
+ if (api == null && path.endsWith(ApiBag.INTROSPECT)) {
+ // the particular http method does not have any ,
+ // just try if any other method has this path
+ api = requestHandlers.v2lookup(path, null, parts);
+ }
+
+ if (api == null) {
+ return getSubPathApi(requestHandlers, path, fullPath, new CompositeApi(null));
+ }
+
+ if (api instanceof ApiBag.IntrospectApi) {
+ final Map<String, Api> apis = new LinkedHashMap<>();
+ for (String m : SolrRequest.SUPPORTED_METHODS) {
+ Api x = requestHandlers.v2lookup(path, m, parts);
+ if (x != null) apis.put(m, x);
+ }
+ api = new CompositeApi(new Api(ApiBag.EMPTY_SPEC) {
+ @Override
+ public void call(SolrQueryRequest req, SolrQueryResponse rsp) {
+ String method = req.getParams().get("method");
+ Set<Api> added = new HashSet<>();
+ for (Map.Entry<String, Api> e : apis.entrySet()) {
+ if (method == null || e.getKey().equals(method)) {
+ if (!added.contains(e.getValue())) {
+ e.getValue().call(req, rsp);
+ added.add(e.getValue());
+ }
+ }
+ }
+ }
+ });
+ getSubPathApi(requestHandlers,path, fullPath, (CompositeApi) api);
+ }
+
+
+ return api;
+ }
+
+ private static CompositeApi getSubPathApi(PluginBag<SolrRequestHandler> requestHandlers, String path, String fullPath, CompositeApi compositeApi) {
+
+ String newPath = path.endsWith(ApiBag.INTROSPECT) ? path.substring(0, path.length() - ApiBag.INTROSPECT.length()) : path;
+ Map<String, Set<String>> subpaths = new LinkedHashMap<>();
+
+ getSubPaths(newPath, requestHandlers.getApiBag(), subpaths);
+ final Map<String, Set<String>> subPaths = subpaths;
+ if (subPaths.isEmpty()) return null;
+ return compositeApi.add(new Api(() -> ValidatingJsonMap.EMPTY) {
+ @Override
+ public void call(SolrQueryRequest req1, SolrQueryResponse rsp) {
+ String prefix = null;
+ prefix = fullPath.endsWith(ApiBag.INTROSPECT) ?
+ fullPath.substring(0, fullPath.length() - ApiBag.INTROSPECT.length()) :
+ fullPath;
+ LinkedHashMap<String, Set<String>> result = new LinkedHashMap<>(subPaths.size());
+ for (Map.Entry<String, Set<String>> e : subPaths.entrySet()) {
+ if (e.getKey().endsWith(ApiBag.INTROSPECT)) continue;
+ result.put(prefix + e.getKey(), e.getValue());
+ }
+
+ Map m = (Map) rsp.getValues().get("availableSubPaths");
+ if(m != null){
+ m.putAll(result);
+ } else {
+ rsp.add("availableSubPaths", result);
+ }
+ }
+ });
+ }
+
+ private static void getSubPaths(String path, ApiBag bag, Map<String, Set<String>> pathsVsMethod) {
+ for (SolrRequest.METHOD m : SolrRequest.METHOD.values()) {
+ PathTrie<Api> registry = bag.getRegistry(m.toString());
+ if (registry != null) {
+ HashSet<String> subPaths = new HashSet<>();
+ registry.lookup(path, new HashMap<>(), subPaths);
+ for (String subPath : subPaths) {
+ Set<String> supportedMethods = pathsVsMethod.get(subPath);
+ if (supportedMethods == null) pathsVsMethod.put(subPath, supportedMethods = new HashSet<>());
+ supportedMethods.add(m.toString());
+ }
+ }
+ }
+ }
+
+ public static class CompositeApi extends Api {
+ private LinkedList<Api> apis = new LinkedList<>();
+
+ public CompositeApi(Api api) {
+ super(ApiBag.EMPTY_SPEC);
+ if (api != null) apis.add(api);
+ }
+
+ @Override
+ public void call(SolrQueryRequest req, SolrQueryResponse rsp) {
+ for (Api api : apis) {
+ api.call(req, rsp);
+ }
+
+ }
+
+ public CompositeApi add(Api api) {
+ apis.add(api);
+ return this;
+ }
+ }
+
+ @Override
+ protected void handleAdmin(SolrQueryResponse solrResp) {
+ api.call(this.solrReq, solrResp);
+ }
+
+ @Override
+ protected void execute(SolrQueryResponse rsp) {
+ try {
+ api.call(solrReq, rsp);
+ } catch (RuntimeException e) {
+ throw e;
+ }
+ }
+
+ @Override
+ protected Object _getHandler() {
+ return api;
+ }
+
+ public Map<String,String> getUrlParts(){
+ return parts;
+ }
+
+ @Override
+ protected QueryResponseWriter getResponseWriter() {
+ String wt = solrReq.getParams().get(WT, JSON);
+ if (core != null) return core.getResponseWriters().get(wt);
+ return SolrCore.DEFAULT_RESPONSE_WRITERS.get(wt);
+ }
+
+ @Override
+ protected ValidatingJsonMap getSpec() {
+ return api == null ? null : api.getSpec();
+ }
+
+ @Override
+ protected Map<String, JsonSchemaValidator> getValidators() {
+ return api == null ? null : api.getCommandSchema();
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
index 0721193,218b6de..4ec1985
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@@ -18,10 -18,9 +18,11 @@@ package org.apache.solr.handler
import java.lang.invoke.MethodHandles;
import java.net.URL;
+import java.util.Collection;
import java.util.concurrent.atomic.LongAdder;
+import com.google.common.collect.ImmutableList;
+ import com.codahale.metrics.Timer;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
@@@ -35,12 -34,7 +36,10 @@@ import org.apache.solr.request.SolrRequ
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.search.SyntaxError;
import org.apache.solr.util.SolrPluginUtils;
- import org.apache.solr.util.stats.Snapshot;
- import org.apache.solr.util.stats.Timer;
- import org.apache.solr.util.stats.TimerContext;
+ import org.apache.solr.util.stats.TimerUtils;
+import org.apache.solr.api.Api;
+import org.apache.solr.api.ApiBag;
+import org.apache.solr.api.ApiSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 70764d1,1f98da9..b244015
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@@ -786,7 -757,7 +792,7 @@@ public class HttpSolrCall
return result;
}
- protected SolrCore getCoreByCollection(String collectionName) {
- private SolrCore getCoreByCollection(String collectionName, boolean isPreferLeader) {
++ protected SolrCore getCoreByCollection(String collectionName, boolean isPreferLeader) {
ZkStateReader zkStateReader = cores.getZkController().getZkStateReader();
ClusterState clusterState = zkStateReader.getClusterState();
@@@ -1064,32 -1021,35 +1060,61 @@@
static final String CONNECTION_HEADER = "Connection";
static final String TRANSFER_ENCODING_HEADER = "Transfer-Encoding";
static final String CONTENT_LENGTH_HEADER = "Content-Length";
+ List<CommandOperation> parsedCommands;
+
+ public List<CommandOperation> getCommands(boolean validateInput) {
+ if (parsedCommands == null) {
+ Iterable<ContentStream> contentStreams = solrReq.getContentStreams();
+ if (contentStreams == null) parsedCommands = Collections.EMPTY_LIST;
+ else {
+ for (ContentStream contentStream : contentStreams) {
+ try {
+ parsedCommands = ApiBag.getCommandOperations(contentStream.getReader(), getValidators(), validateInput);
+ } catch (IOException e) {
+ throw new SolrException(ErrorCode.BAD_REQUEST, "Error reading commands");
+ }
+ break;
+ }
+ }
+ }
+ return CommandOperation.clone(parsedCommands);
+ }
+ protected ValidatingJsonMap getSpec() {
+ return null;
+ }
+
+ protected Map<String, JsonSchemaValidator> getValidators(){
+ return Collections.EMPTY_MAP;
+ }
+ /**
+ * A faster method for randomly picking items when you do not need to
+ * consume all items.
+ */
+ private static class RandomIterator<E> implements Iterator<E> {
+ private Random rand;
+ private ArrayList<E> elements;
+ private int size;
+
+ public RandomIterator(Random rand, Collection<E> elements) {
+ this.rand = rand;
+ this.elements = new ArrayList<>(elements);
+ this.size = elements.size();
+ }
+
+ @Override
+ public boolean hasNext() {
+ return size > 0;
+ }
+ @Override
+ public E next() {
+ int idx = rand.nextInt(size);
+ E e1 = elements.get(idx);
+ E e2 = elements.get(size-1);
+ elements.set(idx,e2);
+ size--;
+ return e1;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/core/src/resources/ImplicitPlugins.json
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d26d694b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
----------------------------------------------------------------------