You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2020/04/16 17:29:52 UTC
[lucene-solr] branch jira/solr-14275 updated (d86e010 -> 26479c2)
This is an automated email from the ASF dual-hosted git repository.
ab pushed a change to branch jira/solr-14275
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.
from d86e010 Merge branch 'master' into jira/solr-14275
add 46d0116 LUCENE-9170: Use HTTPS when downloading wagon-ssh artifacts
add 1f5705f SOLR-14363: Separate /get requests into their own type designation (#1379)
add 9ed71a6 LUCENE-9074: Slice Allocation Control Plane For Concurrent Searches (#1294)
add d6cef4f Update CHANGES.txt
add f779bc6 SOLR-14307: User defined "<cache/>" entries in solrconfig.xml now support enabled="true|false" just like core searcher caches.
add 927587d fix typo (#1302)
add e25ab42 LUCENE-9266 remove gradle wrapper jar from source
add e609079 Specify java 11 for gradle wrapper downloader
add 28dea8d SOLR-14356: PeerSync should not fail with SocketTimeoutException from hanging nodes
add ac2837c SOLR-14378: Factor a FilterFeatureScorer class out from (contrib/ltr) OriginalScoreScorer.
add b5c5ebe LUCENE-9300: Fix field infos update on doc values update (#1394)
add 9b29c2a Support running gradlew from subdir
add 234e783 SOLR-14359: Admin UI collection/core drop-downs had wrong placeholder text (#1400)
add d749469 SOLR-14359: Remove apache header from MIT licensed js file
add 7b3980c SOLR-14364: LTR SolrFeature fq improvements Mostly general code improvements, though it should support postFilters now Add QueryUtils.combineQueryAndFilter
add 1aeefc2 SOLR-14351: Fix/improve MDCLoggingContext usage * Some set/clear were not balanced. * Harden clear() in case of imbalance. * Sometimes coreContainger.getCore was called unnecessarily; just need a descriptor * SolrCore.open/close now calls MDCLoggerContext.setCore/clear * no need to clear MDC in HttpSolrCall
add d32858b LUCENE-9301: add manifest entries to JARs (gradle build).
add e1e2085 SOLR-14386: Update Jetty to 9.4.27 and dropwizard-metrics version to 4.1.5
add e916056 SOLR-14386: Update Jetty to 9.4.27 and dropwizard-metrics version to 4.1.5, fix precommit
add 9322a7b SOLR-12067: Remove support for autoReplicaFailoverWaitAfterExpiration
add 9b6e072 SOLR-12720: Use the right Jira issue in change log
add f018c4c LUCENE-9244: In 2D, a point can be shared by four leaves (#1279)
add f2114b9 SOLR-14210: Include replica health in healtcheck handler (#1387)
add 82692e7 LUCENE-9271: Move BufferedIndexInput to the ByteBuffer API.
add 3363e1a LUCENE-9271: Fix bad assertion.
add 529042e LUCENE-9271: Complete fix for setBufferSize.
add de62339 LUCENE-8050: PerFieldDocValuesFormat should not get the DocValuesFormat on a field that has no doc values. Closes #1408
add 5bfbdc5 SOLR-14376: optimize SolrIndexSearcher.getDocSet when matches everything * getProcessedFilter now returns null filter if it's all docs more reliably * getProcessedFilter now documented clearly as an internal method * getDocSet detects all-docs and exits early with getLiveDocs * small refactoring to getDocSetBits/makeDocSetBits Closes #1399
add 013898d CHANGES.txt: move entry to Optimizations
add 793a3be LUCENE-9266: correct windows gradle wrapper download script - wrong placement of the quote.
add dbb4be1 LUCENE-9310: workaround for IntelliJ gradle import
add 4f92cd4 LUCENE-9278: Use -linkoffline instead of relative paths to make links to other projects (#1388)
add 6bba35a LUCENE-9286: FST.Arc.BitTable reads directly FST bytes. Arc is lightweight again and FSTEnum traversal faster.
add c7cac57 LUCENE-9077: make git always keep .gradle files with LF EOLs.
add 2437f3f LUCENE-9311: detect intellij reimport and modify sourceset to exclude solr-ref-guide/tools (#1422)
add ffdd29e Fix typo in SolrRequestHandler's javadocs.
add adbd714 SOLR-14365: CollapsingQParser - Avoiding always allocate int[] and float[] with size equals to number of unique values (WIP) (#1395)
add 2935186 LUCENE-9298: Improve RAM accounting in BufferedUpdates when deleted doc IDs and terms are cleared (#1389)
add e376582 LUCENE-9309: Wait for #addIndexes merges when aborting merges (#1418)
add 71d335f SOLR-14365: Automatically grow size of groupHeadValues
add 36b280b SOLR-11775: return long val for facet count in json facet
add 527e651 LUCENE-9298: Fix TestBufferedUpdates
add d52c102 SOLR-14402: Avoid creating new exceptions for every request made to MDCAwareThreadPoolExecutor by distributed search.
add 2602269 LUCENE-9304: Refactor DWPTPool to pool DWPT directly (#1397)
add 8c1f981 LUCENE-9309: ensure stopMerges is set under IW lock
add fea1ce0 LUCENE-9278: move declaration calling getTemporaryDir inside the execution block closure so that gradlew clean renderJavadoc doesn't wipe out the temporary directory before the task has a chance to run.
add 9244558 LUCENE-9201: remove javadoc task remnants. Make javadoc depend on renderJavadoc and skip the default gradle's implementation.
add 7279190 LUCENE-9316: Incorporate all :precommit tasks into :check
add f865c8a LUCENE-9077: add a :solr:packaging:dev task that assembles a 'development' image of Solr from which nothing is removed upon consecutive rebuild.
add 04f4439 SOLR-14396: TaggerRequestHandler should not error on empty index Fixes #1421
add 4dece1a CHANGES.txt move SOLR-14396 oops!
add 13f19f6 SOLR-9906: SolrjNamedThreadFactory is deprecated in favor of SolrNamedThreadFactory. DefaultSolrThreadFactory is removed from solr-core in favor of SolrNamedThreadFactory in solrj package and all solr-core classes now use SolrNamedThreadFactory
add 6b78330 SOLR-9909: Add the right Jira issue to CHANGES.txt
add 4df81f1 SOLR-9909: The deprecated SolrjNamedThreadFactory has been removed. Use SolrNamedThreadFactory instead.
add 3e0f7b1 SOLR-9909: Actually delete SolrjNamedThreadFactory.java
add 616ec98 Do a bit count on 8 bytes from a long directly instead of reading 8 bytes from the reader. Byte order doesn't matter here. (#1426)
add f5457b8 Suppress Direct postings for TestIndexWriterThreadsToSegments to prevent OOM on Nightly
add 3236d38 Avoid using a raw Arc type. (#1429)
add e15b02c SOLR-14359: Use correct placeholder-text-single option for anguar-chosen
add 60545a8 SOLR-14210: Add javadocs and refguide docs
add ceeb55c SOLR-14210: Fix precommit for javadocs
add 18af632 LUCENE-9304: Fix IW#getMaxCompletedSequenceNumber() (#1427)
add 47bc184 Move DWPT private deletes out of FrozenBufferedUpdates (#1431)
add 1fc4a54 Solr: Use QueryUtils.combineQueryAndFilter more and check MatchAllDocsQuery (minor & cheap optimization) Closes #1407
add aa605b3 LUCENE-9307: Remove the ability to set the buffer size dynamically on BufferedIndexInput (#1415)
add 0aa4ba7 LUCENE-9260: Verify checksums of CFS files. (#1311)
add d5720d6 add version 8.5.1 to doap files
add 8a88ab0 Add bugfix version 8.5.1
add b7b85f3 Move bugfix entries to version 8.5.1
add 9340e56 Add back-compat indices for 8.5.1
add b24b028 SOLR-14291: fix regexps to handle dotted fields in Old Analytics params.
new 81986e8 Merge branch 'master' into jira/solr-14275
new 26479c2 SOLR-14275: Merge Noble's changes.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.gitattributes | 3 +
.github/workflows/gradle-precommit.yml | 2 +
.github/workflows/gradle-wrapper-validation.yml | 11 -
build.gradle | 23 +-
.../apache/lucene/gradle/WrapperDownloader.java | 129 ++++++
dev-tools/doap/lucene.rdf | 7 +
dev-tools/doap/solr.rdf | 7 +
gradle/defaults-javadoc.gradle | 77 ----
.../intellij-idea.gradle} | 24 ++
gradle/jar-manifest.gradle | 82 ++++
gradle/render-javadoc.gradle | 287 ++++++++-----
gradle/testing/randomization.gradle | 9 -
gradle/validation/forbidden-apis/defaults.all.txt | 2 +-
gradle/validation/git-status.gradle | 39 +-
gradle/validation/jar-checks.gradle | 2 +-
gradle/validation/missing-docs-check.gradle | 4 +-
gradle/validation/precommit.gradle | 4 +
gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 58702 bytes
gradle/wrapper/gradle-wrapper.jar.sha256 | 1 +
gradle/wrapper/gradle-wrapper.jar.version | 1 +
gradlew | 10 +-
gradlew.bat | 9 +-
help/ant.txt | 2 +-
lucene/CHANGES.txt | 38 ++
.../lucene/index/TestBackwardsCompatibility.java | 7 +-
.../org/apache/lucene/index/index.8.5.1-cfs.zip | Bin 0 -> 15880 bytes
.../org/apache/lucene/index/index.8.5.1-nocfs.zip | Bin 0 -> 15872 bytes
.../test/org/apache/lucene/index/sorted.8.5.1.zip | Bin 0 -> 394412 bytes
.../simpletext/SimpleTextCompoundFormat.java | 31 +-
.../simpletext/TestSimpleTextCompoundFormat.java | 5 +
lucene/common-build.xml | 9 +-
.../apache/lucene/codecs/CompoundDirectory.java | 83 ++++
.../org/apache/lucene/codecs/CompoundFormat.java | 4 +-
.../lucene/codecs/MultiLevelSkipListReader.java | 8 +-
.../codecs/lucene50/Lucene50CompoundFormat.java | 3 +-
.../codecs/lucene50/Lucene50CompoundReader.java | 49 +--
.../codecs/perfield/PerFieldDocValuesFormat.java | 3 +
.../org/apache/lucene/index/BufferedUpdates.java | 35 +-
.../org/apache/lucene/index/DocumentsWriter.java | 191 ++++-----
.../lucene/index/DocumentsWriterDeleteQueue.java | 87 +++-
.../lucene/index/DocumentsWriterFlushControl.java | 438 ++++++++-----------
.../lucene/index/DocumentsWriterPerThread.java | 115 ++++-
.../lucene/index/DocumentsWriterPerThreadPool.java | 290 +++++--------
.../lucene/index/DocumentsWriterStallControl.java | 5 +-
.../lucene/index/FlushByRamOrCountsPolicy.java | 26 +-
.../java/org/apache/lucene/index/FlushPolicy.java | 38 +-
.../apache/lucene/index/FrozenBufferedUpdates.java | 4 +-
.../java/org/apache/lucene/index/IndexWriter.java | 59 +--
.../org/apache/lucene/index/IndexWriterConfig.java | 22 -
.../apache/lucene/index/LiveIndexWriterConfig.java | 16 -
.../org/apache/lucene/index/ReadersAndUpdates.java | 44 +-
.../apache/lucene/index/SegmentCoreReaders.java | 3 +-
.../org/apache/lucene/index/SegmentMerger.java | 2 +-
.../org/apache/lucene/index/SegmentReader.java | 8 +
.../search/ControlledRealTimeReopenThread.java | 18 +-
.../org/apache/lucene/search/IndexSearcher.java | 58 +--
.../lucene/search/QueueSizeBasedExecutor.java | 60 +++
.../org/apache/lucene/search/SliceExecutor.java | 80 ++++
.../apache/lucene/store/BufferedIndexInput.java | 226 ++++------
.../org/apache/lucene/store/NIOFSDirectory.java | 34 +-
.../src/java/org/apache/lucene/util/BitUtil.java | 128 +-----
.../src/java/org/apache/lucene/util/Version.java | 7 +
.../org/apache/lucene/util/fst/BitTableUtil.java | 172 ++++++++
.../src/java/org/apache/lucene/util/fst/FST.java | 353 ++++++---------
.../java/org/apache/lucene/util/fst/FSTEnum.java | 17 +-
.../java/org/apache/lucene/util/fst/NodeHash.java | 2 +-
.../src/java/org/apache/lucene/util/fst/Util.java | 19 +-
.../codecs/lucene60/TestLucene60PointsFormat.java | 11 +-
.../perfield/TestPerFieldDocValuesFormat.java | 40 +-
.../apache/lucene/index/TestBufferedUpdates.java | 57 +++
.../org/apache/lucene/index/TestFieldsReader.java | 6 +-
.../lucene/index/TestFlushByRamOrCountsPolicy.java | 82 ++--
.../org/apache/lucene/index/TestIndexWriter.java | 212 +++++++--
.../apache/lucene/index/TestIndexWriterConfig.java | 1 -
.../apache/lucene/index/TestIndexWriterDelete.java | 4 +-
.../lucene/index/TestIndexWriterOnDiskFull.java | 4 +-
.../index/TestIndexWriterThreadsToSegments.java | 2 +-
.../lucene/index/TestIndexWriterWithThreads.java | 2 +-
.../lucene/index/TestNumericDocValuesUpdates.java | 155 +++++++
.../search/TestControlledRealTimeReopenThread.java | 8 +-
.../apache/lucene/search/TestIndexSearcher.java | 94 +++-
.../lucene/store/TestBufferedIndexInput.java | 114 +----
.../test/org/apache/lucene/util/TestBitUtil.java | 87 ----
.../apache/lucene/util/fst/TestBitTableUtil.java | 138 ++++++
.../lucene/util/fst/TestFSTDirectAddressing.java | 85 +++-
lucene/ivy-versions.properties | 4 +-
.../jetty-continuation-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-continuation-9.4.27.v20200227.jar.sha1 | 1 +
.../licenses/jetty-http-9.4.24.v20191120.jar.sha1 | 1 -
.../licenses/jetty-http-9.4.27.v20200227.jar.sha1 | 1 +
lucene/licenses/jetty-io-9.4.24.v20191120.jar.sha1 | 1 -
lucene/licenses/jetty-io-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-server-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-servlet-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-servlet-9.4.27.v20200227.jar.sha1 | 1 +
.../licenses/jetty-util-9.4.24.v20191120.jar.sha1 | 1 -
.../licenses/jetty-util-9.4.27.v20200227.jar.sha1 | 1 +
.../java/org/apache/lucene/store/RAFDirectory.java | 18 +-
.../org/apache/lucene/store/WindowsDirectory.java | 5 +-
.../lucene/codecs/cranky/CrankyCompoundFormat.java | 3 +-
.../lucene/index/BaseCompoundFormatTestCase.java | 42 ++
.../lucene/index/BaseIndexFileFormatTestCase.java | 18 +-
.../org/apache/lucene/index/RandomIndexWriter.java | 4 +-
.../apache/lucene/store/MockDirectoryWrapper.java | 18 +-
lucene/tools/forbiddenApis/base.txt | 2 +-
solr/CHANGES.txt | 45 +-
solr/build.xml | 2 +-
.../apache/solr/analytics/facet/QueryFacet.java | 8 +-
.../apache/solr/analytics/facet/RangeFacet.java | 8 +-
.../stream/AnalyticsShardRequestManager.java | 4 +-
.../solr/analytics/util/OldAnalyticsParams.java | 34 +-
.../util/OldAnalyticsRequestConverter.java | 4 +-
.../analytics/legacy/facetWithDottedFields.txt | 16 +
.../solr/collection1/conf/schema-analytics.xml | 2 +
.../util/OldAnalyticsRequestConverterUnitTest.java | 64 +++
.../java/org/apache/solr/ltr/feature/Feature.java | 41 ++
.../solr/ltr/feature/OriginalScoreFeature.java | 23 +-
.../org/apache/solr/ltr/feature/SolrFeature.java | 201 +++------
...stOriginalScoreScorer.java => TestFeature.java} | 21 +-
.../collector/SchedulerMetricsCollector.java | 4 +-
.../solr/prometheus/exporter/SolrExporter.java | 6 +-
.../prometheus/scraper/SolrCloudScraperTest.java | 4 +-
.../scraper/SolrStandaloneScraperTest.java | 4 +-
.../src/java/org/apache/solr/api/V2HttpCall.java | 20 +-
.../client/solrj/embedded/JettySolrRunner.java | 4 +-
.../src/java/org/apache/solr/cloud/Overseer.java | 2 +-
.../apache/solr/cloud/OverseerTaskProcessor.java | 4 +-
.../org/apache/solr/cloud/RecoveryStrategy.java | 4 -
.../java/org/apache/solr/cloud/SyncStrategy.java | 34 +-
.../java/org/apache/solr/cloud/ZkController.java | 59 ++-
.../OverseerCollectionMessageHandler.java | 4 +-
.../cloud/autoscaling/OverseerTriggerThread.java | 9 +-
.../solr/cloud/autoscaling/ScheduledTriggers.java | 6 +-
.../cloud/autoscaling/sim/SimCloudManager.java | 13 +-
.../autoscaling/sim/SimDistribStateManager.java | 4 +-
.../src/java/org/apache/solr/core/CloudConfig.java | 25 +-
.../java/org/apache/solr/core/CoreContainer.java | 11 +-
.../src/java/org/apache/solr/core/SolrCore.java | 7 +-
.../src/java/org/apache/solr/core/SolrCores.java | 4 +-
.../java/org/apache/solr/core/SolrXmlConfig.java | 3 -
.../src/java/org/apache/solr/core/ZkContainer.java | 20 +-
.../apache/solr/handler/CdcrReplicatorManager.java | 4 +-
.../solr/handler/CdcrReplicatorScheduler.java | 6 +-
.../apache/solr/handler/CdcrRequestHandler.java | 4 +-
.../solr/handler/CdcrUpdateLogSynchronizer.java | 4 +-
.../java/org/apache/solr/handler/IndexFetcher.java | 4 +-
.../apache/solr/handler/ReplicationHandler.java | 6 +-
.../org/apache/solr/handler/SolrConfigHandler.java | 4 +-
.../org/apache/solr/handler/StreamHandler.java | 14 +-
.../solr/handler/admin/CoreAdminHandler.java | 4 +-
.../solr/handler/admin/HealthCheckHandler.java | 76 +++-
.../solr/handler/admin/MetricsHistoryHandler.java | 4 +-
.../solr/handler/component/ExpandComponent.java | 13 +-
.../handler/component/HttpShardHandlerFactory.java | 20 +-
.../handler/component/IterativeMergeStrategy.java | 4 +-
.../solr/handler/tagger/TaggerRequestHandler.java | 111 +++--
.../org/apache/solr/logging/MDCLoggingContext.java | 78 ++--
.../org/apache/solr/metrics/SolrMetricManager.java | 5 +-
.../solr/metrics/rrd/SolrRrdBackendFactory.java | 4 +-
.../java/org/apache/solr/pkg/PackageListeners.java | 5 +-
.../java/org/apache/solr/request/SimpleFacets.java | 15 +-
.../apache/solr/request/SolrRequestHandler.java | 2 +-
.../org/apache/solr/schema/ManagedIndexSchema.java | 4 +-
.../java/org/apache/solr/search/CacheConfig.java | 8 +-
.../solr/search/CollapsingQParserPlugin.java | 477 +++++++++------------
.../java/org/apache/solr/search/DocSetUtil.java | 8 +-
.../src/java/org/apache/solr/search/Grouping.java | 11 +-
.../java/org/apache/solr/search/QueryUtils.java | 32 +-
.../org/apache/solr/search/SolrIndexSearcher.java | 115 ++---
.../apache/solr/search/facet/AggValueSource.java | 2 +-
.../java/org/apache/solr/search/facet/AvgAgg.java | 2 +-
.../org/apache/solr/search/facet/CountAgg.java | 2 +-
.../org/apache/solr/search/facet/CountValsAgg.java | 2 +-
.../solr/search/facet/FacetFieldProcessor.java | 16 +-
.../search/facet/FacetFieldProcessorByHashDV.java | 24 +-
.../apache/solr/search/facet/FacetProcessor.java | 14 +-
.../org/apache/solr/search/facet/FacetRange.java | 2 +-
.../java/org/apache/solr/search/facet/HLLAgg.java | 2 +-
.../org/apache/solr/search/facet/MinMaxAgg.java | 2 +-
.../org/apache/solr/search/facet/MissingAgg.java | 2 +-
.../apache/solr/search/facet/PercentileAgg.java | 2 +-
.../apache/solr/search/facet/RelatednessAgg.java | 2 +-
.../java/org/apache/solr/search/facet/SlotAcc.java | 19 +-
.../org/apache/solr/search/facet/StddevAgg.java | 2 +-
.../java/org/apache/solr/search/facet/SumAgg.java | 2 +-
.../org/apache/solr/search/facet/SumsqAgg.java | 2 +-
.../apache/solr/search/facet/UnInvertedField.java | 2 +-
.../org/apache/solr/search/facet/UniqueAgg.java | 2 +-
.../apache/solr/search/facet/UniqueBlockAgg.java | 2 +-
.../solr/search/facet/UniqueBlockFieldAgg.java | 2 +-
.../solr/search/facet/UniqueBlockQueryAgg.java | 2 +-
.../org/apache/solr/search/facet/VarianceAgg.java | 2 +-
.../solr/search/grouping/CommandHandler.java | 10 +-
.../apache/solr/security/AuditLoggerPlugin.java | 4 +-
.../java/org/apache/solr/servlet/HttpSolrCall.java | 3 -
.../java/org/apache/solr/update/CommitTracker.java | 4 +-
.../src/java/org/apache/solr/update/PeerSync.java | 7 +-
.../org/apache/solr/update/PeerSyncWithLeader.java | 3 -
.../src/java/org/apache/solr/update/UpdateLog.java | 4 +-
.../org/apache/solr/update/UpdateShardHandler.java | 6 +-
.../DocExpirationUpdateProcessorFactory.java | 4 +-
.../src/java/org/apache/solr/util/DynamicMap.java | 55 +++
.../src/java/org/apache/solr/util/ExportTool.java | 5 +-
.../CountAgg.java => util/FloatConsumer.java} | 32 +-
.../org/apache/solr/util/IntFloatDynamicMap.java | 118 +++++
.../org/apache/solr/util/IntIntDynamicMap.java | 120 ++++++
.../org/apache/solr/util/IntLongDynamicMap.java | 120 ++++++
.../java/org/apache/solr/util/SolrLogPostTool.java | 19 +-
.../conf/solrconfig-cache-enable-disable.xml | 10 +
solr/core/src/test-files/solr/solr-jmxreporter.xml | 1 -
.../core/src/test-files/solr/solr-solrreporter.xml | 1 -
.../test-files/solr/solr-trackingshardhandler.xml | 1 -
solr/core/src/test-files/solr/solr.xml | 1 -
.../apache/solr/cloud/BasicDistributedZkTest.java | 4 +-
.../apache/solr/cloud/ConnectionManagerTest.java | 4 +-
.../apache/solr/cloud/DistributedQueueTest.java | 4 +-
.../org/apache/solr/cloud/LeaderElectionTest.java | 4 +-
.../test/org/apache/solr/cloud/OverseerTest.java | 9 +-
.../cloud/SharedFSAutoReplicaFailoverTest.java | 4 +-
.../cloud/TestStressCloudBlindAtomicUpdates.java | 4 +-
.../org/apache/solr/cloud/TestStressLiveNodes.java | 4 +-
.../cloud/TestWaitForStateWithJettyShutdowns.java | 4 +-
.../apache/solr/cloud/UnloadDistributedZkTest.java | 6 +-
.../org/apache/solr/cloud/ZkControllerTest.java | 9 +-
.../CollectionsAPIAsyncDistributedZkTest.java | 4 +-
.../AutoAddReplicasIntegrationTest.java | 6 +
.../autoscaling/sim/TestSimDistributedQueue.java | 4 +-
.../cloud/cdcr/CdcrReplicationHandlerTest.java | 4 +-
.../test/org/apache/solr/core/SolrCoreTest.java | 6 +-
.../src/test/org/apache/solr/core/TestConfig.java | 26 +-
.../admin}/HealthCheckHandlerTest.java | 58 ++-
.../org/apache/solr/handler/tagger/TaggerTest.java | 18 +
.../apache/solr/schema/CurrencyFieldTypeTest.java | 94 ++--
.../apache/solr/schema/TestSortableTextField.java | 6 +-
.../solr/search/CurrencyRangeFacetCloudTest.java | 64 ++-
.../org/apache/solr/search/facet/DebugAgg.java | 10 +-
...stributedFacetSimpleRefinementLongTailTest.java | 14 +-
.../solr/search/facet/RangeFacetCloudTest.java | 14 +-
.../apache/solr/search/facet/TestJsonFacets.java | 58 +++
.../solr/search/facet/TestJsonRangeFacets.java | 38 ++
.../solr/security/AuditLoggerIntegrationTest.java | 6 +-
.../org/apache/solr/update/AddBlockUpdateTest.java | 6 +-
.../solr/update/TestInPlaceUpdatesDistrib.java | 18 +-
.../processor/RoutedAliasUpdateProcessorTest.java | 4 +-
.../processor/TestDocBasedVersionConstraints.java | 4 +-
.../test/org/apache/solr/util/DynamicMapsTest.java | 90 ++++
.../org/apache/solr/util/SolrLogPostToolTest.java | 20 +
.../http2-client-9.4.24.v20191120.jar.sha1 | 1 -
.../http2-client-9.4.27.v20200227.jar.sha1 | 1 +
.../http2-common-9.4.24.v20191120.jar.sha1 | 1 -
.../http2-common-9.4.27.v20200227.jar.sha1 | 1 +
.../licenses/http2-hpack-9.4.24.v20191120.jar.sha1 | 1 -
.../licenses/http2-hpack-9.4.27.v20200227.jar.sha1 | 1 +
...http-client-transport-9.4.24.v20191120.jar.sha1 | 1 -
...http-client-transport-9.4.27.v20200227.jar.sha1 | 1 +
.../http2-server-9.4.24.v20191120.jar.sha1 | 1 -
.../http2-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-alpn-client-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-alpn-client-9.4.27.v20200227.jar.sha1 | 1 +
...etty-alpn-java-client-9.4.24.v20191120.jar.sha1 | 1 -
...etty-alpn-java-client-9.4.27.v20200227.jar.sha1 | 1 +
...etty-alpn-java-server-9.4.24.v20191120.jar.sha1 | 1 -
...etty-alpn-java-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-alpn-server-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-alpn-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-client-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-client-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-continuation-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-continuation-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-deploy-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-deploy-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-http-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-http-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-io-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-io-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-jmx-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-jmx-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-rewrite-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-rewrite-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-security-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-security-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-server-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-servlet-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-servlet-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-servlets-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-servlets-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-start-9.4.24.v20191120-shaded.jar.sha1 | 1 -
.../jetty-start-9.4.27.v20200227-shaded.jar.sha1 | 1 +
solr/licenses/jetty-util-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-util-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-webapp-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-webapp-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-xml-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-xml-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/metrics-core-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-core-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-graphite-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-graphite-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-jetty9-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-jetty9-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-jmx-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-jmx-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-jvm-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-jvm-4.1.5.jar.sha1 | 1 +
solr/licenses/start.jar.sha1 | 2 +-
solr/packaging/build.gradle | 9 +
.../src/implicit-requesthandlers.adoc | 2 +
.../src/major-changes-in-solr-9.adoc | 5 +
.../src/solrcloud-autoscaling-triggers.adoc | 25 +-
.../cloud/autoscaling/AddReplicaSuggester.java | 2 +-
.../client/solrj/cloud/autoscaling/Clause.java | 30 +-
.../solrj/cloud/autoscaling/FreeDiskVariable.java | 7 +
.../solrj/cloud/autoscaling/PerClauseData.java | 188 ++++++++
.../client/solrj/cloud/autoscaling/Policy.java | 10 +-
.../solrj/cloud/autoscaling/ReplicaCount.java | 17 +
.../solrj/cloud/autoscaling/ReplicaVariable.java | 57 ++-
.../solr/client/solrj/cloud/autoscaling/Row.java | 47 ++
.../client/solrj/cloud/autoscaling/Violation.java | 9 +-
.../client/solrj/impl/BaseCloudSolrClient.java | 4 +-
.../impl/ConcurrentUpdateHttp2SolrClient.java | 4 +-
.../solrj/impl/ConcurrentUpdateSolrClient.java | 4 +-
.../solr/client/solrj/impl/Http2SolrClient.java | 4 +-
.../solr/client/solrj/impl/HttpSolrClient.java | 4 +-
.../solr/client/solrj/impl/LBSolrClient.java | 4 +-
.../client/solrj/io/graph/GatherNodesStream.java | 4 +-
.../client/solrj/io/graph/ShortestPathStream.java | 4 +-
.../client/solrj/io/stream/CloudSolrStream.java | 4 +-
.../solr/client/solrj/io/stream/DaemonStream.java | 4 +-
.../client/solrj/io/stream/DeepRandomStream.java | 4 +-
.../client/solrj/io/stream/ExecutorStream.java | 4 +-
.../solrj/io/stream/FeaturesSelectionStream.java | 4 +-
.../client/solrj/io/stream/ParallelListStream.java | 4 +-
.../solrj/io/stream/SignificantTermsStream.java | 4 +-
.../client/solrj/io/stream/TextLogitStream.java | 4 +-
.../solr/client/solrj/io/stream/TopicStream.java | 4 +-
.../org/apache/solr/common/cloud/SolrZkClient.java | 6 +-
.../apache/solr/common/cloud/ZkStateReader.java | 4 +-
.../org/apache/solr/common/util/ExecutorUtil.java | 2 +-
.../solr/common/util/SolrNamedThreadFactory.java} | 23 +-
.../solr/common/util/SolrjNamedThreadFactory.java | 49 ---
.../solrj/solr/autoscaling/emptydiagnostics.json | 20 +
.../solrj/cloud/autoscaling/TestPolicy2.java | 67 +++
.../impl/ConcurrentUpdateHttp2SolrClientTest.java | 6 +-
.../solrj/impl/ConcurrentUpdateSolrClientTest.java | 6 +-
.../solrj/impl/HttpSolrClientConPoolTest.java | 4 +-
.../apache/solr/BaseDistributedSearchTestCase.java | 7 +-
.../src/java/org/apache/solr/SolrTestCaseHS.java | 45 ++
.../src/java/org/apache/solr/SolrTestCaseJ4.java | 4 +-
.../solr/cloud/AbstractFullDistribZkTestBase.java | 10 +-
.../java/org/apache/solr/cloud/ChaosMonkey.java | 6 +-
.../apache/solr/cloud/MiniSolrCloudCluster.java | 6 +-
solr/webapp/web/index.html | 4 +-
solr/webapp/web/libs/angular-chosen.min.js | 4 +-
versions.lock | 58 +--
versions.props | 6 +-
357 files changed, 5337 insertions(+), 3329 deletions(-)
delete mode 100644 .github/workflows/gradle-wrapper-validation.yml
create mode 100644 buildSrc/src/main/java/org/apache/lucene/gradle/WrapperDownloader.java
delete mode 100644 gradle/defaults-javadoc.gradle
rename gradle/{defaults-idea.gradle => ide/intellij-idea.gradle} (61%)
create mode 100644 gradle/jar-manifest.gradle
create mode 100644 gradle/wrapper/gradle-wrapper.jar.sha256
create mode 100644 gradle/wrapper/gradle-wrapper.jar.version
create mode 100644 lucene/backward-codecs/src/test/org/apache/lucene/index/index.8.5.1-cfs.zip
create mode 100644 lucene/backward-codecs/src/test/org/apache/lucene/index/index.8.5.1-nocfs.zip
create mode 100644 lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.8.5.1.zip
create mode 100644 lucene/core/src/java/org/apache/lucene/codecs/CompoundDirectory.java
create mode 100644 lucene/core/src/java/org/apache/lucene/search/QueueSizeBasedExecutor.java
create mode 100644 lucene/core/src/java/org/apache/lucene/search/SliceExecutor.java
create mode 100644 lucene/core/src/java/org/apache/lucene/util/fst/BitTableUtil.java
create mode 100644 lucene/core/src/test/org/apache/lucene/index/TestBufferedUpdates.java
delete mode 100644 lucene/core/src/test/org/apache/lucene/util/TestBitUtil.java
create mode 100644 lucene/core/src/test/org/apache/lucene/util/fst/TestBitTableUtil.java
delete mode 100644 lucene/licenses/jetty-continuation-9.4.24.v20191120.jar.sha1
create mode 100644 lucene/licenses/jetty-continuation-9.4.27.v20200227.jar.sha1
delete mode 100644 lucene/licenses/jetty-http-9.4.24.v20191120.jar.sha1
create mode 100644 lucene/licenses/jetty-http-9.4.27.v20200227.jar.sha1
delete mode 100644 lucene/licenses/jetty-io-9.4.24.v20191120.jar.sha1
create mode 100644 lucene/licenses/jetty-io-9.4.27.v20200227.jar.sha1
delete mode 100644 lucene/licenses/jetty-server-9.4.24.v20191120.jar.sha1
create mode 100644 lucene/licenses/jetty-server-9.4.27.v20200227.jar.sha1
delete mode 100644 lucene/licenses/jetty-servlet-9.4.24.v20191120.jar.sha1
create mode 100644 lucene/licenses/jetty-servlet-9.4.27.v20200227.jar.sha1
delete mode 100644 lucene/licenses/jetty-util-9.4.24.v20191120.jar.sha1
create mode 100644 lucene/licenses/jetty-util-9.4.27.v20200227.jar.sha1
create mode 100644 solr/contrib/analytics/src/test-files/solr/analytics/legacy/facetWithDottedFields.txt
create mode 100644 solr/contrib/analytics/src/test/org/apache/solr/analytics/util/OldAnalyticsRequestConverterUnitTest.java
rename solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/{TestOriginalScoreScorer.java => TestFeature.java} (71%)
create mode 100644 solr/core/src/java/org/apache/solr/util/DynamicMap.java
copy solr/core/src/java/org/apache/solr/{search/facet/CountAgg.java => util/FloatConsumer.java} (58%)
create mode 100644 solr/core/src/java/org/apache/solr/util/IntFloatDynamicMap.java
create mode 100644 solr/core/src/java/org/apache/solr/util/IntIntDynamicMap.java
create mode 100644 solr/core/src/java/org/apache/solr/util/IntLongDynamicMap.java
rename solr/core/src/test/org/apache/solr/{cloud => handler/admin}/HealthCheckHandlerTest.java (74%)
create mode 100644 solr/core/src/test/org/apache/solr/util/DynamicMapsTest.java
delete mode 100644 solr/licenses/http2-client-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/http2-client-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/http2-common-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/http2-common-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/http2-hpack-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/http2-hpack-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/http2-http-client-transport-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/http2-http-client-transport-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/http2-server-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/http2-server-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-alpn-client-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-alpn-client-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-alpn-java-client-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-alpn-java-client-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-alpn-java-server-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-alpn-java-server-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-alpn-server-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-alpn-server-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-client-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-client-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-continuation-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-continuation-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-deploy-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-deploy-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-http-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-http-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-io-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-io-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-jmx-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-jmx-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-rewrite-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-rewrite-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-security-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-security-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-server-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-server-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-servlet-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-servlet-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-servlets-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-servlets-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-start-9.4.24.v20191120-shaded.jar.sha1
create mode 100644 solr/licenses/jetty-start-9.4.27.v20200227-shaded.jar.sha1
delete mode 100644 solr/licenses/jetty-util-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-util-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-webapp-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-webapp-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/jetty-xml-9.4.24.v20191120.jar.sha1
create mode 100644 solr/licenses/jetty-xml-9.4.27.v20200227.jar.sha1
delete mode 100644 solr/licenses/metrics-core-4.1.2.jar.sha1
create mode 100644 solr/licenses/metrics-core-4.1.5.jar.sha1
delete mode 100644 solr/licenses/metrics-graphite-4.1.2.jar.sha1
create mode 100644 solr/licenses/metrics-graphite-4.1.5.jar.sha1
delete mode 100644 solr/licenses/metrics-jetty9-4.1.2.jar.sha1
create mode 100644 solr/licenses/metrics-jetty9-4.1.5.jar.sha1
delete mode 100644 solr/licenses/metrics-jmx-4.1.2.jar.sha1
create mode 100644 solr/licenses/metrics-jmx-4.1.5.jar.sha1
delete mode 100644 solr/licenses/metrics-jvm-4.1.2.jar.sha1
create mode 100644 solr/licenses/metrics-jvm-4.1.5.jar.sha1
create mode 100644 solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/PerClauseData.java
rename solr/{core/src/java/org/apache/solr/util/DefaultSolrThreadFactory.java => solrj/src/java/org/apache/solr/common/util/SolrNamedThreadFactory.java} (77%)
delete mode 100644 solr/solrj/src/java/org/apache/solr/common/util/SolrjNamedThreadFactory.java
create mode 100644 solr/solrj/src/test-files/solrj/solr/autoscaling/emptydiagnostics.json
[lucene-solr] 01/02: Merge branch 'master' into jira/solr-14275
Posted by ab...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ab pushed a commit to branch jira/solr-14275
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 81986e85be8b3c3e04476c77f7a6f1fcf3890702
Merge: d86e010 b24b028
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Thu Apr 16 15:28:08 2020 +0200
Merge branch 'master' into jira/solr-14275
.gitattributes | 3 +
.github/workflows/gradle-precommit.yml | 2 +
.github/workflows/gradle-wrapper-validation.yml | 11 -
build.gradle | 23 +-
.../apache/lucene/gradle/WrapperDownloader.java | 129 ++++++
dev-tools/doap/lucene.rdf | 7 +
dev-tools/doap/solr.rdf | 7 +
gradle/defaults-javadoc.gradle | 77 ----
.../intellij-idea.gradle} | 24 ++
gradle/jar-manifest.gradle | 82 ++++
gradle/render-javadoc.gradle | 287 ++++++++-----
gradle/testing/randomization.gradle | 9 -
gradle/validation/forbidden-apis/defaults.all.txt | 2 +-
gradle/validation/git-status.gradle | 39 +-
gradle/validation/jar-checks.gradle | 2 +-
gradle/validation/missing-docs-check.gradle | 4 +-
gradle/validation/precommit.gradle | 4 +
gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 58702 bytes
gradle/wrapper/gradle-wrapper.jar.sha256 | 1 +
gradle/wrapper/gradle-wrapper.jar.version | 1 +
gradlew | 10 +-
gradlew.bat | 9 +-
help/ant.txt | 2 +-
lucene/CHANGES.txt | 38 ++
.../lucene/index/TestBackwardsCompatibility.java | 7 +-
.../org/apache/lucene/index/index.8.5.1-cfs.zip | Bin 0 -> 15880 bytes
.../org/apache/lucene/index/index.8.5.1-nocfs.zip | Bin 0 -> 15872 bytes
.../test/org/apache/lucene/index/sorted.8.5.1.zip | Bin 0 -> 394412 bytes
.../simpletext/SimpleTextCompoundFormat.java | 31 +-
.../simpletext/TestSimpleTextCompoundFormat.java | 5 +
lucene/common-build.xml | 9 +-
.../apache/lucene/codecs/CompoundDirectory.java | 83 ++++
.../org/apache/lucene/codecs/CompoundFormat.java | 4 +-
.../lucene/codecs/MultiLevelSkipListReader.java | 8 +-
.../codecs/lucene50/Lucene50CompoundFormat.java | 3 +-
.../codecs/lucene50/Lucene50CompoundReader.java | 49 +--
.../codecs/perfield/PerFieldDocValuesFormat.java | 3 +
.../org/apache/lucene/index/BufferedUpdates.java | 35 +-
.../org/apache/lucene/index/DocumentsWriter.java | 191 ++++-----
.../lucene/index/DocumentsWriterDeleteQueue.java | 87 +++-
.../lucene/index/DocumentsWriterFlushControl.java | 438 ++++++++-----------
.../lucene/index/DocumentsWriterPerThread.java | 115 ++++-
.../lucene/index/DocumentsWriterPerThreadPool.java | 290 +++++--------
.../lucene/index/DocumentsWriterStallControl.java | 5 +-
.../lucene/index/FlushByRamOrCountsPolicy.java | 26 +-
.../java/org/apache/lucene/index/FlushPolicy.java | 38 +-
.../apache/lucene/index/FrozenBufferedUpdates.java | 4 +-
.../java/org/apache/lucene/index/IndexWriter.java | 59 +--
.../org/apache/lucene/index/IndexWriterConfig.java | 22 -
.../apache/lucene/index/LiveIndexWriterConfig.java | 16 -
.../org/apache/lucene/index/ReadersAndUpdates.java | 44 +-
.../apache/lucene/index/SegmentCoreReaders.java | 3 +-
.../org/apache/lucene/index/SegmentMerger.java | 2 +-
.../org/apache/lucene/index/SegmentReader.java | 8 +
.../search/ControlledRealTimeReopenThread.java | 18 +-
.../org/apache/lucene/search/IndexSearcher.java | 58 +--
.../lucene/search/QueueSizeBasedExecutor.java | 60 +++
.../org/apache/lucene/search/SliceExecutor.java | 80 ++++
.../apache/lucene/store/BufferedIndexInput.java | 226 ++++------
.../org/apache/lucene/store/NIOFSDirectory.java | 34 +-
.../src/java/org/apache/lucene/util/BitUtil.java | 128 +-----
.../src/java/org/apache/lucene/util/Version.java | 7 +
.../org/apache/lucene/util/fst/BitTableUtil.java | 172 ++++++++
.../src/java/org/apache/lucene/util/fst/FST.java | 353 ++++++---------
.../java/org/apache/lucene/util/fst/FSTEnum.java | 17 +-
.../java/org/apache/lucene/util/fst/NodeHash.java | 2 +-
.../src/java/org/apache/lucene/util/fst/Util.java | 19 +-
.../codecs/lucene60/TestLucene60PointsFormat.java | 11 +-
.../perfield/TestPerFieldDocValuesFormat.java | 40 +-
.../apache/lucene/index/TestBufferedUpdates.java | 57 +++
.../org/apache/lucene/index/TestFieldsReader.java | 6 +-
.../lucene/index/TestFlushByRamOrCountsPolicy.java | 82 ++--
.../org/apache/lucene/index/TestIndexWriter.java | 212 +++++++--
.../apache/lucene/index/TestIndexWriterConfig.java | 1 -
.../apache/lucene/index/TestIndexWriterDelete.java | 4 +-
.../lucene/index/TestIndexWriterOnDiskFull.java | 4 +-
.../index/TestIndexWriterThreadsToSegments.java | 2 +-
.../lucene/index/TestIndexWriterWithThreads.java | 2 +-
.../lucene/index/TestNumericDocValuesUpdates.java | 155 +++++++
.../search/TestControlledRealTimeReopenThread.java | 8 +-
.../apache/lucene/search/TestIndexSearcher.java | 94 +++-
.../lucene/store/TestBufferedIndexInput.java | 114 +----
.../test/org/apache/lucene/util/TestBitUtil.java | 87 ----
.../apache/lucene/util/fst/TestBitTableUtil.java | 138 ++++++
.../lucene/util/fst/TestFSTDirectAddressing.java | 85 +++-
lucene/ivy-versions.properties | 4 +-
.../jetty-continuation-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-continuation-9.4.27.v20200227.jar.sha1 | 1 +
.../licenses/jetty-http-9.4.24.v20191120.jar.sha1 | 1 -
.../licenses/jetty-http-9.4.27.v20200227.jar.sha1 | 1 +
lucene/licenses/jetty-io-9.4.24.v20191120.jar.sha1 | 1 -
lucene/licenses/jetty-io-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-server-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-servlet-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-servlet-9.4.27.v20200227.jar.sha1 | 1 +
.../licenses/jetty-util-9.4.24.v20191120.jar.sha1 | 1 -
.../licenses/jetty-util-9.4.27.v20200227.jar.sha1 | 1 +
.../java/org/apache/lucene/store/RAFDirectory.java | 18 +-
.../org/apache/lucene/store/WindowsDirectory.java | 5 +-
.../lucene/codecs/cranky/CrankyCompoundFormat.java | 3 +-
.../lucene/index/BaseCompoundFormatTestCase.java | 42 ++
.../lucene/index/BaseIndexFileFormatTestCase.java | 18 +-
.../org/apache/lucene/index/RandomIndexWriter.java | 4 +-
.../apache/lucene/store/MockDirectoryWrapper.java | 18 +-
lucene/tools/forbiddenApis/base.txt | 2 +-
solr/CHANGES.txt | 45 +-
solr/build.xml | 2 +-
.../apache/solr/analytics/facet/QueryFacet.java | 8 +-
.../apache/solr/analytics/facet/RangeFacet.java | 8 +-
.../stream/AnalyticsShardRequestManager.java | 4 +-
.../solr/analytics/util/OldAnalyticsParams.java | 34 +-
.../util/OldAnalyticsRequestConverter.java | 4 +-
.../analytics/legacy/facetWithDottedFields.txt | 16 +
.../solr/collection1/conf/schema-analytics.xml | 2 +
.../util/OldAnalyticsRequestConverterUnitTest.java | 64 +++
.../java/org/apache/solr/ltr/feature/Feature.java | 41 ++
.../solr/ltr/feature/OriginalScoreFeature.java | 23 +-
.../org/apache/solr/ltr/feature/SolrFeature.java | 201 +++------
...stOriginalScoreScorer.java => TestFeature.java} | 21 +-
.../collector/SchedulerMetricsCollector.java | 4 +-
.../solr/prometheus/exporter/SolrExporter.java | 6 +-
.../prometheus/scraper/SolrCloudScraperTest.java | 4 +-
.../scraper/SolrStandaloneScraperTest.java | 4 +-
.../src/java/org/apache/solr/api/V2HttpCall.java | 20 +-
.../client/solrj/embedded/JettySolrRunner.java | 4 +-
.../src/java/org/apache/solr/cloud/Overseer.java | 2 +-
.../apache/solr/cloud/OverseerTaskProcessor.java | 4 +-
.../org/apache/solr/cloud/RecoveryStrategy.java | 4 -
.../java/org/apache/solr/cloud/SyncStrategy.java | 34 +-
.../java/org/apache/solr/cloud/ZkController.java | 59 ++-
.../OverseerCollectionMessageHandler.java | 4 +-
.../cloud/autoscaling/OverseerTriggerThread.java | 9 +-
.../solr/cloud/autoscaling/ScheduledTriggers.java | 6 +-
.../cloud/autoscaling/sim/SimCloudManager.java | 13 +-
.../autoscaling/sim/SimDistribStateManager.java | 4 +-
.../src/java/org/apache/solr/core/CloudConfig.java | 25 +-
.../java/org/apache/solr/core/CoreContainer.java | 11 +-
.../src/java/org/apache/solr/core/SolrCore.java | 7 +-
.../src/java/org/apache/solr/core/SolrCores.java | 4 +-
.../java/org/apache/solr/core/SolrXmlConfig.java | 3 -
.../src/java/org/apache/solr/core/ZkContainer.java | 20 +-
.../apache/solr/handler/CdcrReplicatorManager.java | 4 +-
.../solr/handler/CdcrReplicatorScheduler.java | 6 +-
.../apache/solr/handler/CdcrRequestHandler.java | 4 +-
.../solr/handler/CdcrUpdateLogSynchronizer.java | 4 +-
.../java/org/apache/solr/handler/IndexFetcher.java | 4 +-
.../apache/solr/handler/ReplicationHandler.java | 6 +-
.../org/apache/solr/handler/SolrConfigHandler.java | 4 +-
.../org/apache/solr/handler/StreamHandler.java | 14 +-
.../solr/handler/admin/CoreAdminHandler.java | 4 +-
.../solr/handler/admin/HealthCheckHandler.java | 76 +++-
.../solr/handler/admin/MetricsHistoryHandler.java | 4 +-
.../solr/handler/component/ExpandComponent.java | 13 +-
.../handler/component/HttpShardHandlerFactory.java | 20 +-
.../handler/component/IterativeMergeStrategy.java | 4 +-
.../solr/handler/tagger/TaggerRequestHandler.java | 111 +++--
.../org/apache/solr/logging/MDCLoggingContext.java | 78 ++--
.../org/apache/solr/metrics/SolrMetricManager.java | 5 +-
.../solr/metrics/rrd/SolrRrdBackendFactory.java | 4 +-
.../java/org/apache/solr/pkg/PackageListeners.java | 5 +-
.../java/org/apache/solr/request/SimpleFacets.java | 15 +-
.../apache/solr/request/SolrRequestHandler.java | 2 +-
.../org/apache/solr/schema/ManagedIndexSchema.java | 4 +-
.../java/org/apache/solr/search/CacheConfig.java | 8 +-
.../solr/search/CollapsingQParserPlugin.java | 477 +++++++++------------
.../java/org/apache/solr/search/DocSetUtil.java | 8 +-
.../src/java/org/apache/solr/search/Grouping.java | 11 +-
.../java/org/apache/solr/search/QueryUtils.java | 32 +-
.../org/apache/solr/search/SolrIndexSearcher.java | 115 ++---
.../apache/solr/search/facet/AggValueSource.java | 2 +-
.../java/org/apache/solr/search/facet/AvgAgg.java | 2 +-
.../org/apache/solr/search/facet/CountAgg.java | 2 +-
.../org/apache/solr/search/facet/CountValsAgg.java | 2 +-
.../solr/search/facet/FacetFieldProcessor.java | 16 +-
.../search/facet/FacetFieldProcessorByHashDV.java | 24 +-
.../apache/solr/search/facet/FacetProcessor.java | 14 +-
.../org/apache/solr/search/facet/FacetRange.java | 2 +-
.../java/org/apache/solr/search/facet/HLLAgg.java | 2 +-
.../org/apache/solr/search/facet/MinMaxAgg.java | 2 +-
.../org/apache/solr/search/facet/MissingAgg.java | 2 +-
.../apache/solr/search/facet/PercentileAgg.java | 2 +-
.../apache/solr/search/facet/RelatednessAgg.java | 2 +-
.../java/org/apache/solr/search/facet/SlotAcc.java | 19 +-
.../org/apache/solr/search/facet/StddevAgg.java | 2 +-
.../java/org/apache/solr/search/facet/SumAgg.java | 2 +-
.../org/apache/solr/search/facet/SumsqAgg.java | 2 +-
.../apache/solr/search/facet/UnInvertedField.java | 2 +-
.../org/apache/solr/search/facet/UniqueAgg.java | 2 +-
.../apache/solr/search/facet/UniqueBlockAgg.java | 2 +-
.../solr/search/facet/UniqueBlockFieldAgg.java | 2 +-
.../solr/search/facet/UniqueBlockQueryAgg.java | 2 +-
.../org/apache/solr/search/facet/VarianceAgg.java | 2 +-
.../solr/search/grouping/CommandHandler.java | 10 +-
.../apache/solr/security/AuditLoggerPlugin.java | 4 +-
.../java/org/apache/solr/servlet/HttpSolrCall.java | 3 -
.../java/org/apache/solr/update/CommitTracker.java | 4 +-
.../src/java/org/apache/solr/update/PeerSync.java | 7 +-
.../org/apache/solr/update/PeerSyncWithLeader.java | 3 -
.../src/java/org/apache/solr/update/UpdateLog.java | 4 +-
.../org/apache/solr/update/UpdateShardHandler.java | 6 +-
.../DocExpirationUpdateProcessorFactory.java | 4 +-
.../src/java/org/apache/solr/util/DynamicMap.java | 55 +++
.../src/java/org/apache/solr/util/ExportTool.java | 5 +-
.../CountAgg.java => util/FloatConsumer.java} | 32 +-
.../org/apache/solr/util/IntFloatDynamicMap.java | 118 +++++
.../org/apache/solr/util/IntIntDynamicMap.java | 120 ++++++
.../org/apache/solr/util/IntLongDynamicMap.java | 120 ++++++
.../java/org/apache/solr/util/SolrLogPostTool.java | 19 +-
.../conf/solrconfig-cache-enable-disable.xml | 10 +
solr/core/src/test-files/solr/solr-jmxreporter.xml | 1 -
.../core/src/test-files/solr/solr-solrreporter.xml | 1 -
.../test-files/solr/solr-trackingshardhandler.xml | 1 -
solr/core/src/test-files/solr/solr.xml | 1 -
.../apache/solr/cloud/BasicDistributedZkTest.java | 4 +-
.../apache/solr/cloud/ConnectionManagerTest.java | 4 +-
.../apache/solr/cloud/DistributedQueueTest.java | 4 +-
.../org/apache/solr/cloud/LeaderElectionTest.java | 4 +-
.../test/org/apache/solr/cloud/OverseerTest.java | 9 +-
.../cloud/SharedFSAutoReplicaFailoverTest.java | 4 +-
.../cloud/TestStressCloudBlindAtomicUpdates.java | 4 +-
.../org/apache/solr/cloud/TestStressLiveNodes.java | 4 +-
.../cloud/TestWaitForStateWithJettyShutdowns.java | 4 +-
.../apache/solr/cloud/UnloadDistributedZkTest.java | 6 +-
.../org/apache/solr/cloud/ZkControllerTest.java | 9 +-
.../CollectionsAPIAsyncDistributedZkTest.java | 4 +-
.../AutoAddReplicasIntegrationTest.java | 6 +
.../autoscaling/sim/TestSimDistributedQueue.java | 4 +-
.../cloud/cdcr/CdcrReplicationHandlerTest.java | 4 +-
.../test/org/apache/solr/core/SolrCoreTest.java | 6 +-
.../src/test/org/apache/solr/core/TestConfig.java | 26 +-
.../admin}/HealthCheckHandlerTest.java | 58 ++-
.../org/apache/solr/handler/tagger/TaggerTest.java | 18 +
.../apache/solr/schema/CurrencyFieldTypeTest.java | 94 ++--
.../apache/solr/schema/TestSortableTextField.java | 6 +-
.../solr/search/CurrencyRangeFacetCloudTest.java | 64 ++-
.../org/apache/solr/search/facet/DebugAgg.java | 10 +-
...stributedFacetSimpleRefinementLongTailTest.java | 14 +-
.../solr/search/facet/RangeFacetCloudTest.java | 14 +-
.../apache/solr/search/facet/TestJsonFacets.java | 58 +++
.../solr/search/facet/TestJsonRangeFacets.java | 38 ++
.../solr/security/AuditLoggerIntegrationTest.java | 6 +-
.../org/apache/solr/update/AddBlockUpdateTest.java | 6 +-
.../solr/update/TestInPlaceUpdatesDistrib.java | 18 +-
.../processor/RoutedAliasUpdateProcessorTest.java | 4 +-
.../processor/TestDocBasedVersionConstraints.java | 4 +-
.../test/org/apache/solr/util/DynamicMapsTest.java | 90 ++++
.../org/apache/solr/util/SolrLogPostToolTest.java | 20 +
.../http2-client-9.4.24.v20191120.jar.sha1 | 1 -
.../http2-client-9.4.27.v20200227.jar.sha1 | 1 +
.../http2-common-9.4.24.v20191120.jar.sha1 | 1 -
.../http2-common-9.4.27.v20200227.jar.sha1 | 1 +
.../licenses/http2-hpack-9.4.24.v20191120.jar.sha1 | 1 -
.../licenses/http2-hpack-9.4.27.v20200227.jar.sha1 | 1 +
...http-client-transport-9.4.24.v20191120.jar.sha1 | 1 -
...http-client-transport-9.4.27.v20200227.jar.sha1 | 1 +
.../http2-server-9.4.24.v20191120.jar.sha1 | 1 -
.../http2-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-alpn-client-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-alpn-client-9.4.27.v20200227.jar.sha1 | 1 +
...etty-alpn-java-client-9.4.24.v20191120.jar.sha1 | 1 -
...etty-alpn-java-client-9.4.27.v20200227.jar.sha1 | 1 +
...etty-alpn-java-server-9.4.24.v20191120.jar.sha1 | 1 -
...etty-alpn-java-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-alpn-server-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-alpn-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-client-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-client-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-continuation-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-continuation-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-deploy-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-deploy-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-http-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-http-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-io-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-io-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-jmx-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-jmx-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-rewrite-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-rewrite-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-security-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-security-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-server-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-server-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-servlet-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-servlet-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-servlets-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-servlets-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-start-9.4.24.v20191120-shaded.jar.sha1 | 1 -
.../jetty-start-9.4.27.v20200227-shaded.jar.sha1 | 1 +
solr/licenses/jetty-util-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-util-9.4.27.v20200227.jar.sha1 | 1 +
.../jetty-webapp-9.4.24.v20191120.jar.sha1 | 1 -
.../jetty-webapp-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/jetty-xml-9.4.24.v20191120.jar.sha1 | 1 -
solr/licenses/jetty-xml-9.4.27.v20200227.jar.sha1 | 1 +
solr/licenses/metrics-core-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-core-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-graphite-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-graphite-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-jetty9-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-jetty9-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-jmx-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-jmx-4.1.5.jar.sha1 | 1 +
solr/licenses/metrics-jvm-4.1.2.jar.sha1 | 1 -
solr/licenses/metrics-jvm-4.1.5.jar.sha1 | 1 +
solr/licenses/start.jar.sha1 | 2 +-
solr/packaging/build.gradle | 9 +
.../src/implicit-requesthandlers.adoc | 2 +
.../src/major-changes-in-solr-9.adoc | 5 +
.../src/solrcloud-autoscaling-triggers.adoc | 25 +-
.../client/solrj/impl/BaseCloudSolrClient.java | 4 +-
.../impl/ConcurrentUpdateHttp2SolrClient.java | 4 +-
.../solrj/impl/ConcurrentUpdateSolrClient.java | 4 +-
.../solr/client/solrj/impl/Http2SolrClient.java | 4 +-
.../solr/client/solrj/impl/HttpSolrClient.java | 4 +-
.../solr/client/solrj/impl/LBSolrClient.java | 4 +-
.../client/solrj/io/graph/GatherNodesStream.java | 4 +-
.../client/solrj/io/graph/ShortestPathStream.java | 4 +-
.../client/solrj/io/stream/CloudSolrStream.java | 4 +-
.../solr/client/solrj/io/stream/DaemonStream.java | 4 +-
.../client/solrj/io/stream/DeepRandomStream.java | 4 +-
.../client/solrj/io/stream/ExecutorStream.java | 4 +-
.../solrj/io/stream/FeaturesSelectionStream.java | 4 +-
.../client/solrj/io/stream/ParallelListStream.java | 4 +-
.../solrj/io/stream/SignificantTermsStream.java | 4 +-
.../client/solrj/io/stream/TextLogitStream.java | 4 +-
.../solr/client/solrj/io/stream/TopicStream.java | 4 +-
.../org/apache/solr/common/cloud/SolrZkClient.java | 6 +-
.../apache/solr/common/cloud/ZkStateReader.java | 4 +-
.../org/apache/solr/common/util/ExecutorUtil.java | 2 +-
.../solr/common/util/SolrNamedThreadFactory.java} | 23 +-
.../solr/common/util/SolrjNamedThreadFactory.java | 49 ---
.../impl/ConcurrentUpdateHttp2SolrClientTest.java | 6 +-
.../solrj/impl/ConcurrentUpdateSolrClientTest.java | 6 +-
.../solrj/impl/HttpSolrClientConPoolTest.java | 4 +-
.../apache/solr/BaseDistributedSearchTestCase.java | 7 +-
.../src/java/org/apache/solr/SolrTestCaseHS.java | 45 ++
.../src/java/org/apache/solr/SolrTestCaseJ4.java | 4 +-
.../solr/cloud/AbstractFullDistribZkTestBase.java | 10 +-
.../java/org/apache/solr/cloud/ChaosMonkey.java | 6 +-
.../apache/solr/cloud/MiniSolrCloudCluster.java | 6 +-
solr/webapp/web/index.html | 4 +-
solr/webapp/web/libs/angular-chosen.min.js | 4 +-
versions.lock | 58 +--
versions.props | 6 +-
346 files changed, 4928 insertions(+), 3284 deletions(-)
[lucene-solr] 02/02: SOLR-14275: Merge Noble's changes.
Posted by ab...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ab pushed a commit to branch jira/solr-14275
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 26479c212b64432893bf40693e314f224274f3e1
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Thu Apr 16 16:07:16 2020 +0200
SOLR-14275: Merge Noble's changes.
---
.../cloud/autoscaling/AddReplicaSuggester.java | 2 +-
.../client/solrj/cloud/autoscaling/Clause.java | 30 +++-
.../solrj/cloud/autoscaling/FreeDiskVariable.java | 7 +
.../solrj/cloud/autoscaling/PerClauseData.java | 188 +++++++++++++++++++++
.../client/solrj/cloud/autoscaling/Policy.java | 10 +-
.../solrj/cloud/autoscaling/ReplicaCount.java | 17 ++
.../solrj/cloud/autoscaling/ReplicaVariable.java | 57 +++----
.../solr/client/solrj/cloud/autoscaling/Row.java | 47 ++++++
.../client/solrj/cloud/autoscaling/Violation.java | 9 +-
.../solrj/solr/autoscaling/emptydiagnostics.json | 20 +++
.../solrj/cloud/autoscaling/TestPolicy2.java | 67 ++++++++
11 files changed, 409 insertions(+), 45 deletions(-)
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AddReplicaSuggester.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AddReplicaSuggester.java
index 09ce72f..56d2584 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AddReplicaSuggester.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AddReplicaSuggester.java
@@ -55,7 +55,7 @@ class AddReplicaSuggester extends Suggester {
// nocommit
// possible optimization? for large clusters compare only up to
// that many eligible rows from the top
- int limitTopRows = getMatrix().size() > 100 ? 10 : getMatrix().size();
+ int limitTopRows = getMatrix().size() > 100 ? 3 : getMatrix().size();
for (int i = getMatrix().size() - 1; i >= 0; i--) {
Row row = getMatrix().get(i);
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Clause.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Clause.java
index d986b11..4bf153a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Clause.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Clause.java
@@ -70,6 +70,7 @@ public class Clause implements MapWriter, Comparable<Clause> {
final Replica.Type type;
final Put put;
final boolean strict;
+ final DataGrouping dataGrouping;
protected Clause(Clause clause, Function<Condition, Object> computedValueEvaluator) {
this.original = clause.original;
@@ -85,10 +86,11 @@ public class Clause implements MapWriter, Comparable<Clause> {
this.hasComputedValue = clause.hasComputedValue;
this.strict = clause.strict;
derivedFrom = clause.derivedFrom;
+ this.dataGrouping =clause.dataGrouping;
}
// internal use only
- Clause(Map<String, Object> original, Condition tag, Condition globalTag, boolean isStrict, Put put, boolean nodeSetPresent) {
+ Clause(Map<String, Object> original, Condition tag, Condition globalTag, boolean isStrict, Put put, boolean nodeSetPresent, DataGrouping dataGrouping) {
this.hashCode = original.hashCode();
this.original = original;
this.tag = tag;
@@ -103,6 +105,7 @@ public class Clause implements MapWriter, Comparable<Clause> {
this.collection = null;
this.shard = null;
this.replica = null;
+ this.dataGrouping = null;
}
private Clause(Map<String, Object> m) {
@@ -156,6 +159,15 @@ public class Clause implements MapWriter, Comparable<Clause> {
}
doPostValidate(collection, shard, replica, tag, globalTag);
hasComputedValue = hasComputedValue();
+
+ if(globalTag != null || tag.name.equals("node")){
+ dataGrouping = DataGrouping.NODE;
+ } else if(shard.val.toString().equals(ANY)){
+ dataGrouping = DataGrouping.COLL;
+ } else {
+ dataGrouping = DataGrouping.SHARD;
+ }
+
}
private boolean parseNodeset(Map<String, Object> m) {
@@ -680,17 +692,23 @@ public class Clause implements MapWriter, Comparable<Clause> {
public List<Violation> test(Policy.Session session, Row changedRow, double[] deviations) {
if (isPerCollectiontag()) {
if(nodeSetPresent) {
- if(put == Put.ON_EACH){
+ if(put == Put.ON_EACH) {
return testPerNode(session, changedRow, deviations) ;
} else {
- return testGroupNodes(session, changedRow, deviations);
+ return session.perClauseData.computeViolations(session, this);
+ //return testGroupNodes(session, deviations);
}
}
+ if(tag.varType == Type.NODE){
+ return session.perClauseData.computeViolations(session, this);
+ }
+
+
return tag.varType == Type.NODE ||
(tag.varType.meta.isNodeSpecificVal() && replica.computedType == null) ?
testPerNode(session, changedRow, deviations) :
- testGroupNodes(session, changedRow, deviations);
+ testGroupNodes(session, changedRow, deviations);
} else {
ComputedValueEvaluator computedValueEvaluator = new ComputedValueEvaluator(session);
Violation.Ctx ctx = new Violation.Ctx(this, session.matrix, computedValueEvaluator);
@@ -847,4 +865,8 @@ public class Clause implements MapWriter, Comparable<Clause> {
}
}
+ enum DataGrouping {
+ COLL, SHARD, NODE,GLOBAL;
+ }
+
}
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/FreeDiskVariable.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/FreeDiskVariable.java
index c61d7ee..3f6c02b 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/FreeDiskVariable.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/FreeDiskVariable.java
@@ -174,6 +174,13 @@ public class FreeDiskVariable extends VariableBase {
@Override
public void projectAddReplica(Cell cell, ReplicaInfo ri, Consumer<Row.OperationInfo> ops, boolean strictMode) {
//go through other replicas of this shard and copy the index size value into this
+ if(cell.getRow().session.perClauseData != null){
+ PerClauseData.ShardDetails sd = cell.getRow().session.perClauseData.getShardDetails(ri.getCollection(), ri.getShard());
+ if(sd.indexSize == null) return;
+ Double currFreeDisk = cell.val == null ? 0.0d : (Double) cell.val;
+ cell.val = currFreeDisk - sd.indexSize;
+ return;
+ }
IndexSizeGetter getter = new IndexSizeGetter(ri.getCollection(), ri.getShard());
for (Row row : cell.getRow().session.matrix) {
if (row.isEmpty() || !row.isLive() || !row.hasColl(ri.getCollection())) {
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/PerClauseData.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/PerClauseData.java
new file mode 100644
index 0000000..cc815ba
--- /dev/null
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/PerClauseData.java
@@ -0,0 +1,188 @@
+/*
+ * 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.client.solrj.cloud.autoscaling;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+
+import org.apache.solr.common.annotation.JsonProperty;
+import org.apache.solr.common.util.ReflectMapWriter;
+import org.apache.solr.common.util.Utils;
+
+public class PerClauseData implements ReflectMapWriter, Cloneable {
+ @JsonProperty
+ public Map<String, CollectionDetails> collections = new HashMap<>();
+
+ static Function<String, ReplicaCount> NEW_CLAUSEVAL_FUN = c -> new ReplicaCount();
+
+ ReplicaCount getClauseValue(String coll, String shard, Clause clause, String key) {
+ Map<String, ReplicaCount> countMap = getCountsForClause(coll, shard, clause);
+ return countMap.computeIfAbsent(key,NEW_CLAUSEVAL_FUN);
+ }
+
+ private Map<String, ReplicaCount> getCountsForClause(String coll, String shard, Clause clause) {
+ CollectionDetails cd = collections.get(coll);
+ if (cd == null) collections.put(coll, cd = new CollectionDetails(coll));
+ ShardDetails psd = null;
+ if (shard != null && clause.dataGrouping == Clause.DataGrouping.SHARD) {
+ psd = cd.shards.get(shard);
+ if (psd == null) cd.shards.put(shard, psd = new ShardDetails(coll, shard));
+ }
+
+ Map<Clause, Map<String, ReplicaCount>> map = (psd == null ? cd.clauseValues : psd.values);
+
+ return (Map<String, ReplicaCount>) map.computeIfAbsent(clause, Utils.NEW_HASHMAP_FUN);
+ }
+
+ PerClauseData copy() {
+ PerClauseData result = new PerClauseData();
+ collections.forEach((s, v) -> result.collections.put(s, v.copy()));
+ return result;
+ }
+
+
+
+ ShardDetails getShardDetails(String c, String s) {
+ CollectionDetails cd = collections.get(c);
+ if (cd == null) collections.put(c, cd = new CollectionDetails(c));
+ ShardDetails sd = cd.shards.get(s);
+ if (sd == null) cd.shards.put(c, sd = new ShardDetails(c, s));
+ return sd;
+ }
+
+
+ public static class CollectionDetails implements ReflectMapWriter, Cloneable {
+
+ final String coll;
+ Map<String, ShardDetails> shards = new HashMap<>();
+
+ Map<Clause, Map<String, ReplicaCount>> clauseValues = new HashMap<>();
+
+ CollectionDetails copy() {
+ CollectionDetails result = new CollectionDetails(coll);
+ shards.forEach((k, shardDetails) -> result.shards.put(k, shardDetails.copy()));
+ return result;
+ }
+
+ CollectionDetails(String coll) {
+ this.coll = coll;
+ }
+ }
+
+ public static class ShardDetails implements ReflectMapWriter, Cloneable {
+ final String coll;
+ final String shard;
+ Double indexSize;
+ ReplicaCount replicas = new ReplicaCount();
+
+ public Map<Clause, Map<String, ReplicaCount>> values = new HashMap<>();
+
+ ShardDetails(String coll, String shard) {
+ this.coll = coll;
+ this.shard = shard;
+ }
+
+
+ ShardDetails copy() {
+ ShardDetails result = new ShardDetails(coll, shard);
+ values.forEach((clause, clauseVal) -> {
+ HashMap<String,ReplicaCount> m = new HashMap(clauseVal);
+ for (Map.Entry<String, ReplicaCount> e : m.entrySet()) e.setValue(e.getValue().copy());
+ result.values.put(clause, m);
+ });
+ return result;
+ }
+ }
+
+ static class LazyViolation extends Violation {
+ private Policy.Session session;
+
+ LazyViolation(SealedClause clause, String coll, String shard, String node, Object actualVal, Double replicaCountDelta, Object tagKey, Policy.Session session) {
+ super(clause, coll, shard, node, actualVal, replicaCountDelta, tagKey);
+ super.replicaInfoAndErrs = null;
+ this.session = session;
+ }
+
+ @Override
+ public List<ReplicaInfoAndErr> getViolatingReplicas() {
+ if(replicaInfoAndErrs == null){
+ populateReplicas();
+ }
+ return replicaInfoAndErrs;
+ }
+
+ private void populateReplicas() {
+ replicaInfoAndErrs = new ArrayList<>();
+ for (Row row : session.matrix) {
+ if(getClause().getThirdTag().isPass(row)) {
+ row.forEachReplica(coll, ri -> {
+ if(shard == null || Objects.equals(shard, ri.getShard()))
+ replicaInfoAndErrs.add(new ReplicaInfoAndErr(ri));
+ });
+
+ }
+ }
+ }
+ }
+
+ void getViolations( Map<Clause, Map<String, ReplicaCount>> vals ,
+ List<Violation> violations,
+ Clause.ComputedValueEvaluator evaluator,
+ Clause clause){
+
+ Map<String, ReplicaCount> cv = vals.get(clause);
+ if (cv == null || cv.isEmpty()) return;
+ SealedClause sc = clause.getSealedClause(evaluator);
+ cv.forEach((s, replicaCount) -> {
+ if (!sc.replica.isPass(replicaCount)) {
+ Violation v = new LazyViolation(
+ sc,
+ evaluator.collName,
+ evaluator.shardName,
+ null,
+ replicaCount,
+ sc.getReplica().replicaCountDelta(replicaCount),
+ s,
+ evaluator.session);
+ violations.add(v);
+ }
+ });
+
+ }
+
+ List<Violation> computeViolations(Policy.Session session, Clause clause) {
+ Clause.ComputedValueEvaluator evaluator = new Clause.ComputedValueEvaluator(session);
+ List<Violation> result = new ArrayList<>();
+ collections.forEach((coll, cd) -> {
+ evaluator.collName = coll;
+ evaluator.shardName = null;
+ if (clause.dataGrouping == Clause.DataGrouping.COLL) {
+ getViolations(cd.clauseValues, result, evaluator, clause);
+ } else if (clause.dataGrouping == Clause.DataGrouping.SHARD) {
+ cd.shards.forEach((shard, sd) -> {
+ evaluator.shardName = shard;
+ getViolations(sd.values, result, evaluator, clause);
+ });
+ }
+ });
+ return result;
+ }}
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java
index d35fcb8..77cbc53 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java
@@ -523,6 +523,7 @@ public class Policy implements MapWriter {
private final Policy policy;
List<Clause> expandedClauses;
List<Violation> violations = new ArrayList<>();
+ PerClauseData perClauseData = new PerClauseData();
Transaction transaction;
private Session(Policy policy, List<String> nodes, SolrCloudManager cloudManager,
@@ -573,7 +574,7 @@ public class Policy implements MapWriter {
if (!withCollMap.isEmpty()) {
Clause withCollClause = new Clause((Map<String,Object>)Utils.fromJSONString("{withCollection:'*' , node: '#ANY'}") ,
new Condition(NODE.tagName, "#ANY", Operand.EQUAL, null, null),
- new Condition(WITH_COLLECTION.tagName,"*" , Operand.EQUAL, null, null), true, null, false
+ new Condition(WITH_COLLECTION.tagName,"*" , Operand.EQUAL, null, null), true, null, false, Clause.DataGrouping.NODE
);
expandedClauses.add(withCollClause);
}
@@ -598,7 +599,7 @@ public class Policy implements MapWriter {
private Session(List<String> nodes, SolrCloudManager cloudManager,
List<Row> matrix, List<Clause> expandedClauses, int znodeVersion,
- NodeStateProvider nodeStateProvider, Policy policy, Transaction transaction) {
+ NodeStateProvider nodeStateProvider, Policy policy, Transaction transaction, PerClauseData perClauseData) {
this.transaction = transaction;
this.policy = policy;
this.nodes = nodes;
@@ -607,6 +608,7 @@ public class Policy implements MapWriter {
this.expandedClauses = expandedClauses;
this.znodeVersion = znodeVersion;
this.nodeStateProvider = nodeStateProvider;
+ this.perClauseData = perClauseData;
for (Row row : matrix) row.session = this;
}
@@ -627,11 +629,11 @@ public class Policy implements MapWriter {
}
Session copy() {
- return new Session(policy, nodes, cloudManager, getMatrixCopy(), expandedClauses, znodeVersion, nodeStateProvider, transaction);
+ return new Session(nodes, cloudManager, getMatrixCopy(), expandedClauses, znodeVersion, nodeStateProvider, policy, transaction, perClauseData.copy());
}
Session shallowCopy() {
- return new Session(policy, nodes, cloudManager, new ArrayList<>(matrix), expandedClauses, znodeVersion, nodeStateProvider, transaction);
+ return new Session(nodes, cloudManager, new ArrayList<>(matrix), expandedClauses, znodeVersion, nodeStateProvider, policy, transaction, perClauseData.copy());
}
public Row getNode(String node) {
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaCount.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaCount.java
index f5c61b2..d42ff31 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaCount.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaCount.java
@@ -83,6 +83,23 @@ class ReplicaCount implements MapWriter {
tlog += count.tlog;
}
+ void incr(ReplicaInfo ri, int delta){
+ switch (ri.getType()) {
+ case NRT:
+ nrt+=delta;
+ break;
+ case PULL:
+ pull+=delta;
+ break;
+ case TLOG:
+ tlog+=delta;
+ break;
+ default:
+ nrt+=delta;
+ }
+
+ }
+
public void increment(Replica.Type type) {
_change(type, 1);
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaVariable.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaVariable.java
index 4b13eba..a52625f 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaVariable.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaVariable.java
@@ -21,7 +21,6 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import java.util.function.Consumer;
import org.apache.solr.common.util.StrUtils;
@@ -31,45 +30,39 @@ class ReplicaVariable extends VariableBase {
super(type);
}
- public static final String REPLICASCOUNT = "relevantReplicas";
-
-
- private static final class ReplicaCounter implements Consumer<ReplicaInfo> {
- final String collection, shard;
- final Clause clause;
- final int[] result = new int[1];
+ static int getRelevantReplicasCount(Policy.Session session, Condition cv, String collection, String shard) {
+ PerClauseData.CollectionDetails cd = session.perClauseData.collections.get(collection);
+ if (cd != null) {
+ if (shard != null) {
+ PerClauseData.ShardDetails sd = cd.shards.get(shard);
+ if (sd != null) return sd.replicas.getVal(cv.clause.type).intValue();
- ReplicaCounter(String collection, String shard, Clause clause) {
- this.collection = collection;
- this.shard = shard;
- this.clause = clause;
- }
+ } else {
+ int totalReplicasOfInterest = 0;
- @Override
- public void accept(ReplicaInfo replicaInfo) {
- if (clause.isMatch(replicaInfo, collection, shard)) {
- result[0]++;
+ for (PerClauseData.ShardDetails sd : cd.shards.values()) {
+ totalReplicasOfInterest += sd.replicas.getVal(cv.clause.type).intValue();
+ }
+ return totalReplicasOfInterest;
}
- }
- Integer calculate(Row row) {
- result[0] = 0;
- row.forEachReplica(collection, this);
- return result[0];
}
- }
-
- static int getRelevantReplicasCount(Policy.Session session, Condition cv, String collection, String shard) {
- int totalReplicasOfInterest = 0;
- Clause clause = cv.getClause();
- ReplicaCounter counter = new ReplicaCounter(collection, shard, clause);
- for (int i = 0; i < session.matrix.size(); i++) {
- Row row = session.matrix.get(i);
- Integer perShardCount = row.computeCacheIfAbsent(collection, shard, REPLICASCOUNT, cv.clause, o -> counter.calculate(row));
+ return 0;
+
+ /* Clause clause = cv.getClause();
+ for (Row row : session.matrix) {
+ Integer perShardCount = row.computeCacheIfAbsent(collection, shard, REPLICASCOUNT, cv.clause, o -> {
+ int[] result = new int[1];
+ row.forEachReplica(collection, replicaInfo -> {
+ if (clause.isMatch(replicaInfo, collection, shard))
+ result[0]++;
+ });
+ return result[0];
+ });
if (perShardCount != null)
totalReplicasOfInterest += perShardCount;
}
- return totalReplicasOfInterest;
+ return totalReplicasOfInterest;*/
}
@Override
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Row.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Row.java
index a187203..1c3dff5 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Row.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Row.java
@@ -40,6 +40,7 @@ import org.apache.solr.common.util.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.solr.client.solrj.cloud.autoscaling.Variable.Type.CORE_IDX;
import static org.apache.solr.common.params.CoreAdminParams.NODE;
/**
@@ -87,6 +88,7 @@ public class Row implements MapWriter {
_initReplicaCounts();
isAlreadyCopied = true;
+ initPerClauseData();
}
private void _initReplicaCounts() {
@@ -331,6 +333,8 @@ public class Row implements MapWriter {
}
}
+ modifyPerClauseCount(ri, 1);
+
return row;
}
@@ -433,6 +437,7 @@ public class Row implements MapWriter {
for (Cell cell : row.cells) {
cell.type.projectRemoveReplica(cell, removed, opCollector);
}
+ modifyPerClauseCount(removed, -1);
return row;
}
@@ -466,4 +471,46 @@ public class Row implements MapWriter {
}
}
}
+
+ void modifyPerClauseCount(ReplicaInfo ri, int delta) {
+ if (session == null || session.perClauseData == null || ri == null) return;
+ session.perClauseData.getShardDetails(ri.getCollection(),ri.getShard()).replicas.incr(ri, delta);
+ for (Clause clause : session.expandedClauses) {
+ if (clause.put == Clause.Put.ON_EACH) continue;
+ if (clause.dataGrouping == Clause.DataGrouping.SHARD || clause.dataGrouping == Clause.DataGrouping.COLL) {
+ if (clause.tag.isPass(this)) {
+ session.perClauseData.getClauseValue(
+ ri.getCollection(),
+ ri.getShard(),
+ clause,
+ String.valueOf(this.getVal(clause.tag.name))).incr(ri, delta);
+ }
+ }
+ }
+ }
+
+ void initPerClauseData() {
+ if(session== null || session.perClauseData == null) return;
+ forEachReplica(it -> {
+ PerClauseData.ShardDetails shardDetails = session.perClauseData.getShardDetails(it.getCollection(), it.getShard());
+ shardDetails.replicas.increment(it.getType());
+ Number idxSize = (Number) it.getVariable(CORE_IDX.tagName);
+ if(idxSize != null){
+ shardDetails.indexSize = idxSize.doubleValue();
+ }
+ });
+ for (Clause clause : session.expandedClauses) {
+ if(clause.put == Clause.Put.ON_EACH) continue;
+ if(clause.dataGrouping == Clause.DataGrouping.SHARD || clause.dataGrouping == Clause.DataGrouping.COLL) {
+ if(clause.tag.isPass(this)) {
+ forEachReplica(it -> session.perClauseData.getClauseValue(
+ it.getCollection(),
+ it.getShard(),
+ clause, String.valueOf(this.getVal(clause.tag.name))
+
+ ).incr(it, 1));
+ }
+ }
+ }
+ }
}
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Violation.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Violation.java
index e0d2048..64efc2c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Violation.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Violation.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.cloud.autoscaling;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -36,7 +37,7 @@ public class Violation implements MapWriter {
final Object tagKey;
private final int hash;
private final Clause clause;
- private List<ReplicaInfoAndErr> replicaInfoAndErrs = new ArrayList<>();
+ protected List<ReplicaInfoAndErr> replicaInfoAndErrs = new ArrayList<>();
Violation(SealedClause clause, String coll, String shard, String node, Object actualVal, Double replicaCountDelta, Object tagKey) {
this.clause = clause;
@@ -55,7 +56,7 @@ public class Violation implements MapWriter {
}
public List<ReplicaInfoAndErr> getViolatingReplicas() {
- return replicaInfoAndErrs;
+ return replicaInfoAndErrs == null ? Collections.EMPTY_LIST : replicaInfoAndErrs;
}
public Clause getClause() {
@@ -108,7 +109,7 @@ public class Violation implements MapWriter {
return false;
}
- static class ReplicaInfoAndErr implements MapWriter{
+ static class ReplicaInfoAndErr implements MapWriter {
final ReplicaInfo replicaInfo;
Double delta;
@@ -145,7 +146,7 @@ public class Violation implements MapWriter {
ew1.putIfNotNull("delta", replicaCountDelta);
});
ew.put("clause", getClause());
- if (!replicaInfoAndErrs.isEmpty()) {
+ if (!getViolatingReplicas().isEmpty()) {
ew.put("violatingReplicas", (IteratorWriter) iw -> {
for (ReplicaInfoAndErr replicaInfoAndErr : replicaInfoAndErrs) {
iw.add(replicaInfoAndErr.replicaInfo);
diff --git a/solr/solrj/src/test-files/solrj/solr/autoscaling/emptydiagnostics.json b/solr/solrj/src/test-files/solrj/solr/autoscaling/emptydiagnostics.json
new file mode 100644
index 0000000..f284054
--- /dev/null
+++ b/solr/solrj/src/test-files/solrj/solr/autoscaling/emptydiagnostics.json
@@ -0,0 +1,20 @@
+{
+ "diagnostics": {
+ "sortedNodes": [
+ {
+ "node": "10.0.0.80:8983_solr",
+ "isLive": true,
+ "cores" : 0,
+ "freedisk": 680,
+ "totaldisk": 1037,
+ "replicas": {}
+ }
+ ],
+ "cluster": {
+ "collections": {},
+ "live_nodes": [
+
+ ]
+ }
+ }
+}
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy2.java b/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy2.java
index 63b7da4..95ab6a3 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy2.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy2.java
@@ -36,12 +36,15 @@ import java.util.stream.Collectors;
import com.google.common.collect.ImmutableSet;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.cloud.NodeStateProvider;
import org.apache.solr.client.solrj.cloud.SolrCloudManager;
import org.apache.solr.client.solrj.impl.ClusterStateProvider;
import org.apache.solr.client.solrj.impl.SolrClientNodeStateProvider;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.ReplicaPosition;
+import org.apache.solr.common.params.CollectionParams;
+import org.apache.solr.common.util.Pair;
import org.apache.solr.common.util.Utils;
import org.junit.Ignore;
import org.slf4j.Logger;
@@ -502,4 +505,68 @@ public class TestPolicy2 extends SolrTestCaseJ4 {
}
}
+ public void test1000Nodes() throws Exception {
+ String collName = "go";
+ int shards = 300;
+ int repFactor = 4;
+ int numNodes = 1000;
+ long start = System.currentTimeMillis();
+
+ Map<String, Object> m = (Map<String, Object>) loadFromResource("emptydiagnostics.json");
+ List<Map> nodes = (List<Map>) Utils.getObjectByPath(m, false, "diagnostics/sortedNodes");
+ List<String> liveNodes = (List<String>) Utils.getObjectByPath(m, false, "diagnostics/cluster/live_nodes");
+ Map aNode = nodes.remove(0);
+ String nodeName = (String) aNode.get("node");
+ for (int i = 0; i < numNodes; i++) {
+ Map copy = Utils.getDeepCopy(aNode, 2);
+ String nodeNameTmp = nodeName + "_" + i;
+ copy.put("node", nodeNameTmp);
+ nodes.add(copy);
+ liveNodes.add(nodeNameTmp);
+
+ }
+
+ SolrCloudManager cloudManagerFromDiagnostics = createCloudManagerFromDiagnostics(m);
+ AutoScalingConfig autoScalingConfig = new AutoScalingConfig((Map<String, Object>) Utils.fromJSONString("{\n" +
+ " 'cluster-preferences': [\n" +
+ " {\n" +
+ " 'minimize': 'cores',\n" +
+ " 'precision': 5\n" +
+ " },\n" +
+ " {\n" +
+ " 'maximize': 'freedisk',\n" +
+ " 'precision': 10\n" +
+ " },\n" +
+ " \n" +
+ " ],\n" +
+ " 'cluster-policy': [\n" +
+ " {\n" +
+ " 'replica': '<2',\n" +
+ " 'shard': '#EACH',\n" +
+ " 'node': '#ANY',\n" +
+ " },\n" +
+ " {\n" +
+ " 'replica': '#EQUAL',\n" +
+ " 'node': '#ANY',\n" +
+ " }\n" +
+ " ]\n" +
+ "}"
+ ));
+
+
+ Policy.Session session = autoScalingConfig.getPolicy().createSession(cloudManagerFromDiagnostics);
+
+ for (int i = 0; i < shards; i++) {
+ for (int j = 0; j < repFactor; j++) {
+ Suggester suggester = session.getSuggester(CollectionParams.CollectionAction.ADDREPLICA);
+ suggester.hint(Suggester.Hint.COLL_SHARD, new Pair<>(collName, "shards_" + i));
+ SolrRequest op = suggester.getSuggestion();
+ session = suggester.getSession();
+ assertNotNull(op);
+ }
+ }
+ System.out.println("Time taken : "+ (System.currentTimeMillis() -start));
+ }
+
+
}