lucene-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From markrmil...@apache.org
Subject [26/26] lucene-solr:starburst: The Star Burst Upgrade - a work in progress - the branch gets replaced often.
Date Sun, 29 Jul 2018 15:08:48 GMT
The Star Burst Upgrade - a work in progress - the branch gets replaced often.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/74a9b54c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/74a9b54c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/74a9b54c

Branch: refs/heads/starburst
Commit: 74a9b54c3a7dbdb919656057d8d4fe0792ee0a4d
Parents: eea4197
Author: markrmiller <markrmiller@apache.org>
Authored: Sat Jun 16 22:05:49 2018 -0500
Committer: markrmiller <markrmiller@apache.org>
Committed: Sat Jun 16 22:05:49 2018 -0500

----------------------------------------------------------------------
 README.md                                       |  100 +-
 dev-tools/eclipse/run-test-cases.launch         |    2 +-
 .../byTask/tasks/WriteLineDocTask.java          |    2 +-
 .../lucene/benchmark/byTask/utils/Config.java   |   91 +-
 .../lucene/benchmark/byTask/utils/Format.java   |   22 +
 .../lucene/benchmark/utils/PropertiesUtil.java  |  145 +++
 lucene/common-build.xml                         |    2 +
 lucene/ivy-versions.properties                  |   11 +
 lucene/tools/junit4/solr-tests.policy           |    5 +
 solr/benchmark/.gitignore                       |    2 +
 solr/benchmark/build.xml                        |   86 ++
 solr/benchmark/conf/concurrent-vs-serial.alg    |   80 ++
 solr/benchmark/ivy.xml                          |   28 +
 .../tasks/BlockSolrServerTillFinishTask.java    |   47 +
 .../byTask/tasks/InitSolrBenchTask.java         |  253 ++++
 .../benchmark/byTask/tasks/SolrAddDocTask.java  |  200 +++
 .../byTask/tasks/SolrClearIndexTask.java        |   46 +
 .../benchmark/byTask/tasks/SolrCommitTask.java  |   81 ++
 .../benchmark/byTask/tasks/SolrSearchTask.java  |   86 ++
 .../byTask/tasks/StartSolrServerTask.java       |   99 ++
 .../byTask/tasks/StopSolrServerTask.java        |   76 ++
 .../solr/benchmark/byTask/util/StreamEater.java |   98 ++
 .../stream/AnalyticsShardRequestManager.java    |    6 +-
 .../apache/solr/handler/AnalyticsHandler.java   |    1 +
 .../handler/component/AnalyticsComponent.java   |    2 +-
 .../org/apache/solr/analytics/NoFacetTest.java  |    6 +
 .../solr/analytics/SolrAnalyticsTestCase.java   |    1 -
 .../facet/LegacyAbstractAnalyticsFacetTest.java |   17 +-
 .../clustering/DocumentClusteringEngine.java    |    2 +-
 .../carrot2/LuceneCarrot2StemmerFactory.java    |    1 -
 .../carrot2/MockClusteringAlgorithm.java        |   17 +-
 .../handler/dataimport/SolrEntityProcessor.java |   16 +-
 .../dataimport/TestContentStreamDataSource.java |    6 +-
 .../TestSolrEntityProcessorEndToEnd.java        |   10 +-
 .../dataimport/TestSolrEntityProcessorUnit.java |    3 +
 ...DetectLanguageIdentifierUpdateProcessor.java |    6 +-
 .../LanguageIdentifierUpdateProcessor.java      |   20 +-
 ...dentifierUpdateProcessorFactoryTestCase.java |    7 +-
 .../org/apache/solr/ltr/TestLTROnSolrCloud.java |    2 +-
 .../solr/ltr/TestParallelWeightCreation.java    |    4 +-
 .../prometheus/collector/SolrCollector.java     |   69 +-
 .../solr/prometheus/exporter/SolrExporter.java  |   43 +-
 .../solr/prometheus/scraper/SolrScraper.java    |   38 +-
 .../solr/response/SolrParamResourceLoader.java  |   12 +-
 solr/core/ivy.xml                               |    2 +
 .../solr/analysis/ReversedWildcardFilter.java   |    2 +-
 .../org/apache/solr/analysis/SolrAnalyzer.java  |    4 +-
 solr/core/src/java/org/apache/solr/api/Api.java |    5 +-
 .../src/java/org/apache/solr/api/ApiBag.java    |   15 +-
 .../java/org/apache/solr/api/V2HttpCall.java    |   24 +-
 .../solrj/embedded/EmbeddedSolrServer.java      |    7 +-
 .../solr/client/solrj/embedded/JettyConfig.java |   34 +-
 .../client/solrj/embedded/JettySolrRunner.java  |  154 ++-
 .../solr/client/solrj/embedded/SSLConfig.java   |    3 +-
 .../apache/solr/cloud/ActiveReplicaWatcher.java |    5 +-
 .../org/apache/solr/cloud/ElectionContext.java  |   66 +-
 .../org/apache/solr/cloud/LeaderElector.java    |   12 +-
 .../cloud/LeaderInitiatedRecoveryThread.java    |   23 +-
 .../org/apache/solr/cloud/RecoveryStrategy.java |   66 +-
 .../org/apache/solr/cloud/SyncStrategy.java     |   66 +-
 .../src/java/org/apache/solr/cloud/ZkCLI.java   |   16 +-
 .../org/apache/solr/cloud/ZkController.java     |   79 +-
 .../cloud/api/collections/DeleteReplicaCmd.java |   12 +-
 .../api/collections/LeaderRecoveryWatcher.java  |    4 +-
 .../OverseerCollectionMessageHandler.java       |  178 ++-
 .../cloud/api/collections/ReplaceNodeCmd.java   |    8 +-
 .../solr/cloud/api/collections/RestoreCmd.java  |   28 +-
 .../org/apache/solr/core/BlobRepository.java    |   24 +-
 .../java/org/apache/solr/core/CloudConfig.java  |    2 +-
 .../org/apache/solr/core/CoreContainer.java     |   81 +-
 .../java/org/apache/solr/core/Diagnostics.java  |    6 +-
 .../org/apache/solr/core/DirectoryFactory.java  |    2 +-
 .../apache/solr/core/HdfsDirectoryFactory.java  |   11 +-
 .../java/org/apache/solr/core/InitParams.java   |   13 +-
 .../java/org/apache/solr/core/PluginInfo.java   |   21 +-
 .../apache/solr/core/QuerySenderListener.java   |    4 +-
 .../org/apache/solr/core/RequestParams.java     |    7 +-
 .../apache/solr/core/SchemaCodecFactory.java    |    2 +-
 .../java/org/apache/solr/core/SolrConfig.java   |   15 +-
 .../src/java/org/apache/solr/core/SolrCore.java |   17 +-
 .../apache/solr/core/SolrResourceLoader.java    |    2 +-
 .../org/apache/solr/core/SolrXmlConfig.java     |   14 +-
 .../java/org/apache/solr/core/ZkContainer.java  |    8 +-
 .../apache/solr/core/backup/BackupManager.java  |    3 +-
 .../backup/repository/HdfsBackupRepository.java |    3 +-
 .../core/snapshots/SolrSnapshotManager.java     |    1 +
 .../apache/solr/handler/AnalyzeEvaluator.java   |    3 +-
 .../solr/handler/CdcrReplicatorManager.java     |   20 +-
 .../apache/solr/handler/CdcrRequestHandler.java |   26 +-
 .../solr/handler/CdcrUpdateLogSynchronizer.java |   34 +-
 .../handler/DocumentAnalysisRequestHandler.java |   15 +-
 .../apache/solr/handler/DumpRequestHandler.java |    4 +-
 .../org/apache/solr/handler/ExportHandler.java  |    4 +-
 .../org/apache/solr/handler/ExportWriter.java   |   10 +-
 .../handler/FieldAnalysisRequestHandler.java    |   14 +-
 .../org/apache/solr/handler/GraphHandler.java   |    4 +-
 .../org/apache/solr/handler/IndexFetcher.java   |  199 +--
 .../apache/solr/handler/ReplicationHandler.java |    6 +-
 .../solr/handler/RequestHandlerUtils.java       |   15 +-
 .../apache/solr/handler/SolrConfigHandler.java  |   46 +-
 .../handler/admin/BaseHandlerApiSupport.java    |   11 +-
 .../solr/handler/admin/CollectionsHandler.java  |  259 ++--
 .../handler/admin/MetricsHistoryHandler.java    |   13 +-
 .../solr/handler/admin/PrepRecoveryOp.java      |  208 ++--
 .../handler/component/HttpShardHandler.java     |  236 +++-
 .../component/HttpShardHandlerFactory.java      |  142 ++-
 .../component/IterativeMergeStrategy.java       |   31 +-
 .../handler/component/ShardHandlerFactory.java  |   16 +-
 .../solr/handler/component/ShardResponse.java   |    8 +
 .../solr/handler/loader/JavabinLoader.java      |    9 +-
 .../solr/logging/log4j2/Log4j2Watcher.java      |   19 +-
 .../reporters/solr/SolrClusterReporter.java     |    4 +-
 .../metrics/reporters/solr/SolrReporter.java    |   22 +-
 .../solr/metrics/rrd/SolrRrdBackendFactory.java |    3 +-
 .../org/apache/solr/request/SimpleFacets.java   |   27 +-
 .../apache/solr/request/SolrQueryRequest.java   |   16 +-
 .../org/apache/solr/request/json/JSONUtil.java  |    1 +
 .../solr/request/macro/MacroExpander.java       |    8 +-
 .../response/BinaryQueryResponseWriter.java     |    2 +-
 .../apache/solr/schema/ManagedIndexSchema.java  |   11 +-
 .../java/org/apache/solr/search/SolrFilter.java |    8 +-
 .../apache/solr/search/SolrIndexSearcher.java   |   36 +-
 .../apache/solr/search/SolrReturnFields.java    |   16 +-
 .../solr/security/PKIAuthenticationPlugin.java  |   24 +-
 .../solr/servlet/AdjustableSemaphore.java       |   76 ++
 .../solr/servlet/DirectSolrConnection.java      |    2 +-
 .../org/apache/solr/servlet/HttpSolrCall.java   |  331 +++--
 .../apache/solr/servlet/LoadAdminUiServlet.java |   18 +-
 .../java/org/apache/solr/servlet/QoSFilter.java |  402 ++++++
 .../apache/solr/servlet/SolrDispatchFilter.java |  108 +-
 .../org/apache/solr/servlet/SolrQoSFilter.java  |   80 ++
 .../apache/solr/servlet/SolrRequestParsers.java |   34 +-
 .../solr/servlet/cache/HttpCacheHeaderUtil.java |   11 +-
 .../solr/spelling/FileBasedSpellChecker.java    |   11 +-
 .../solr/spelling/IndexBasedSpellChecker.java   |    9 +-
 .../solr/spelling/SpellCheckCollator.java       |    4 +-
 .../apache/solr/spelling/SpellingResult.java    |    2 +-
 .../solr/spelling/suggest/SolrSuggester.java    |    6 +-
 .../suggest/fst/BlendedInfixLookupFactory.java  |    2 +-
 .../apache/solr/store/hdfs/HdfsDirectory.java   |    1 +
 .../solr/store/hdfs/HdfsLocalityReporter.java   |    3 +-
 .../org/apache/solr/uninverting/FieldCache.java |    2 +-
 .../org/apache/solr/update/CommitTracker.java   |    3 +-
 .../solr/update/DefaultSolrCoreState.java       |   13 +-
 .../solr/update/DirectUpdateHandler2.java       |    3 +-
 .../java/org/apache/solr/update/PeerSync.java   |   20 +-
 .../apache/solr/update/SolrCmdDistributor.java  |  296 ++---
 .../solr/update/StreamingSolrClients.java       |  175 ---
 .../apache/solr/update/UpdateShardHandler.java  |  178 +--
 .../solr/update/UpdateShardHandlerConfig.java   |    2 +-
 .../processor/AtomicUpdateProcessorFactory.java |    6 +-
 .../processor/CdcrUpdateProcessorFactory.java   |    3 +
 .../ClassificationUpdateProcessorFactory.java   |    4 +-
 .../ConcatFieldUpdateProcessorFactory.java      |    4 +-
 .../processor/DistributedUpdateProcessor.java   |  199 +--
 .../DistributedUpdateProcessorFactory.java      |    2 +
 .../DocBasedVersionConstraintsProcessor.java    |   10 +-
 .../DocExpirationUpdateProcessorFactory.java    |    6 +-
 .../FieldLengthUpdateProcessorFactory.java      |    6 +-
 .../processor/FieldMutatingUpdateProcessor.java |    8 +-
 .../FieldMutatingUpdateProcessorFactory.java    |    4 +-
 .../FieldValueMutatingUpdateProcessor.java      |    1 -
 .../FieldValueSubsetUpdateProcessorFactory.java |    4 +-
 .../FirstFieldValueUpdateProcessorFactory.java  |    4 +-
 .../HTMLStripFieldUpdateProcessorFactory.java   |    4 +-
 ...oreCommitOptimizeUpdateProcessorFactory.java |    3 +-
 .../IgnoreFieldUpdateProcessorFactory.java      |    4 +-
 .../IgnoreLargeDocumentProcessorFactory.java    |    6 +-
 .../LastFieldValueUpdateProcessorFactory.java   |    8 +-
 .../MaxFieldValueUpdateProcessorFactory.java    |    6 +-
 .../processor/RegexReplaceProcessorFactory.java |    4 +-
 .../processor/RegexpBoostProcessorFactory.java  |    1 +
 .../RemoveBlankFieldUpdateProcessorFactory.java |    6 +-
 .../processor/RunUpdateProcessorFactory.java    |    8 +-
 .../SkipExistingDocumentsProcessorFactory.java  |   14 +-
 .../StatelessScriptUpdateProcessorFactory.java  |   51 +-
 .../TimeRoutedAliasUpdateProcessor.java         |   11 +-
 .../processor/TolerantUpdateProcessor.java      |    9 +-
 .../src/java/org/apache/solr/util/DOMUtil.java  |    4 +-
 .../org/apache/solr/util/DistanceUnits.java     |    5 +-
 .../org/apache/solr/util/SimplePostTool.java    |   21 +-
 .../src/java/org/apache/solr/util/SolrCLI.java  |  166 +--
 .../solr/util/SolrFileCleaningTracker.java      |   17 +-
 .../java/org/apache/solr/util/SpatialUtils.java |    2 +-
 .../org/apache/solr/util/TestInjection.java     |   35 +-
 .../SSLCredentialProviderFactory.java           |    3 +-
 .../providers/HadoopSSLCredentialProvider.java  |    4 +-
 .../stats/InstrumentedHttpRequestExecutor.java  |    7 +-
 solr/core/src/test-files/log4j2.xml             |    5 +-
 .../org/apache/solr/BasicFunctionalityTest.java |   10 +-
 .../org/apache/solr/ConvertedLegacyTest.java    |    8 +-
 .../test/org/apache/solr/CursorPagingTest.java  |   48 +-
 .../apache/solr/DisMaxRequestHandlerTest.java   |    4 +-
 .../solr/DistributedIntervalFacetingTest.java   |    6 +-
 .../solr/HelloWorldSolrCloudTestCase.java       |    1 -
 .../src/test/org/apache/solr/SampleTest.java    |    4 +-
 .../test/org/apache/solr/TestCrossCoreJoin.java |    3 +-
 .../apache/solr/TestDistributedGrouping.java    |   18 +-
 .../apache/solr/TestDistributedMissingSort.java |    4 +
 .../org/apache/solr/TestDistributedSearch.java  |   56 +-
 .../org/apache/solr/TestDocumentBuilder.java    |    3 +-
 .../org/apache/solr/TestGroupingSearch.java     |    5 +-
 .../apache/solr/TestHighlightDedupGrouping.java |   17 +-
 .../org/apache/solr/TestRandomDVFaceting.java   |   10 +-
 .../org/apache/solr/TestRandomFaceting.java     |    4 +
 .../solr/TestSimpleTrackingShardHandler.java    |   12 +-
 .../org/apache/solr/TestTolerantSearch.java     |   12 +-
 .../backcompat/TestLuceneIndexBackCompat.java   |    4 +
 .../TestEmbeddedSolrServerAdminHandler.java     |    2 +-
 .../client/solrj/impl/ConnectionReuseTest.java  |   18 +-
 .../org/apache/solr/cloud/AddReplicaTest.java   |    3 +
 .../apache/solr/cloud/AliasIntegrationTest.java |   37 +-
 .../solr/cloud/BasicDistributedZk2Test.java     |   27 +-
 .../solr/cloud/BasicDistributedZkTest.java      |  202 +++-
 .../test/org/apache/solr/cloud/BasicZkTest.java |    8 +-
 .../cloud/ChaosMonkeyNothingIsSafeTest.java     |    6 +-
 ...MonkeyNothingIsSafeWithPullReplicasTest.java |    7 +-
 .../solr/cloud/ChaosMonkeySafeLeaderTest.java   |   12 +-
 ...aosMonkeySafeLeaderWithPullReplicasTest.java |    5 +-
 .../solr/cloud/ChaosMonkeyShardSplitTest.java   |   10 +-
 .../apache/solr/cloud/CleanupOldIndexTest.java  |    8 +-
 .../cloud/CloudExitableDirectoryReaderTest.java |    8 +
 .../org/apache/solr/cloud/ClusterStateTest.java |    2 +-
 .../apache/solr/cloud/CollectionPropsTest.java  |    9 +-
 .../solr/cloud/CollectionStateFormat2Test.java  |    3 +
 .../solr/cloud/CollectionsAPISolrJTest.java     |   22 +-
 .../solr/cloud/ConnectionManagerTest.java       |    1 +
 .../solr/cloud/CreateCollectionCleanupTest.java |    3 +
 .../solr/cloud/CreateRoutedAliasTest.java       |  103 +-
 .../solr/cloud/DeleteInactiveReplicaTest.java   |    6 +
 .../apache/solr/cloud/DeleteReplicaTest.java    |   14 +-
 .../solr/cloud/DistribCursorPagingTest.java     |   29 +-
 ...DistribDocExpirationUpdateProcessorTest.java |    8 +-
 .../cloud/DistribJoinFromCollectionTest.java    |   12 +-
 .../solr/cloud/DistributedVersionInfoTest.java  |   25 +-
 .../solr/cloud/DocValuesNotIndexedTest.java     |   13 +-
 .../org/apache/solr/cloud/ForceLeaderTest.java  |    1 +
 .../cloud/FullSolrCloudDistribCmdsTest.java     |   45 +-
 .../FullThrottleStoppableIndexingThread.java    |   34 +-
 .../solr/cloud/HealthCheckHandlerTest.java      |   19 +-
 .../solr/cloud/HttpPartitionOnCommitTest.java   |   16 +-
 .../apache/solr/cloud/HttpPartitionTest.java    |   43 +-
 .../solr/cloud/LIROnShardRestartTest.java       |    4 +-
 .../solr/cloud/LIRRollingUpdatesTest.java       |   23 +-
 .../cloud/LeaderElectionContextKeyTest.java     |    4 +-
 .../apache/solr/cloud/LeaderElectionTest.java   |    8 +-
 .../cloud/LeaderFailoverAfterPartitionTest.java |   23 +-
 .../cloud/LeaderFailureAfterFreshStartTest.java |    9 +-
 .../solr/cloud/LeaderVoteWaitTimeoutTest.java   |   20 +-
 .../cloud/MetricsHistoryIntegrationTest.java    |    5 +-
 .../apache/solr/cloud/MigrateRouteKeyTest.java  |   12 +-
 .../solr/cloud/MoveReplicaHDFSFailoverTest.java |   12 +-
 .../apache/solr/cloud/MoveReplicaHDFSTest.java  |   10 +-
 .../org/apache/solr/cloud/MoveReplicaTest.java  |   10 +-
 .../solr/cloud/MultiSolrCloudTestCaseTest.java  |    6 +
 .../apache/solr/cloud/MultiThreadedOCPTest.java |   22 +-
 ...verseerCollectionConfigSetProcessorTest.java |   33 +-
 .../apache/solr/cloud/OverseerRolesTest.java    |    6 +-
 .../org/apache/solr/cloud/OverseerTest.java     |   17 +-
 .../solr/cloud/PeerSyncReplicationTest.java     |   16 +-
 .../solr/cloud/RecoveryAfterSoftCommitTest.java |    8 +-
 .../org/apache/solr/cloud/RecoveryZkTest.java   |    7 +-
 .../solr/cloud/ReplaceNodeNoTargetTest.java     |    4 +-
 .../org/apache/solr/cloud/ReplaceNodeTest.java  |   12 +-
 .../solr/cloud/ReplicationFactorTest.java       |    7 +-
 .../apache/solr/cloud/RollingRestartTest.java   |    6 +
 .../org/apache/solr/cloud/SSLMigrationTest.java |   19 +-
 .../solr/cloud/SaslZkACLProviderTest.java       |    9 +-
 .../cloud/SegmentTerminateEarlyTestState.java   |    2 +-
 .../solr/cloud/ShardRoutingCustomTest.java      |    2 +-
 .../org/apache/solr/cloud/ShardRoutingTest.java |   13 +-
 .../cloud/SharedFSAutoReplicaFailoverTest.java  |    8 +-
 .../org/apache/solr/cloud/SliceStateTest.java   |   10 +-
 .../apache/solr/cloud/SolrCLIZkUtilsTest.java   |    7 +
 .../apache/solr/cloud/SolrCloudExampleTest.java |   12 +-
 .../org/apache/solr/cloud/SyncSliceTest.java    |   25 +-
 .../solr/cloud/TestAuthenticationFramework.java |    8 +-
 .../apache/solr/cloud/TestCloudConsistency.java |   28 +-
 .../solr/cloud/TestCloudDeleteByQuery.java      |   12 +-
 .../cloud/TestCloudJSONFacetJoinDomain.java     |   10 +-
 .../solr/cloud/TestCloudJSONFacetSKG.java       |   16 +-
 .../apache/solr/cloud/TestCloudPivotFacet.java  |   24 +-
 .../solr/cloud/TestCloudPseudoReturnFields.java |   12 +-
 .../apache/solr/cloud/TestCloudRecovery.java    |   20 +-
 .../solr/cloud/TestCloudSearcherWarming.java    |   12 +-
 .../solr/cloud/TestClusterProperties.java       |    6 +
 .../apache/solr/cloud/TestConfigSetsAPI.java    |   27 +-
 .../solr/cloud/TestConfigSetsAPIZkFailure.java  |    2 +-
 .../org/apache/solr/cloud/TestCryptoKeys.java   |   12 +-
 .../solr/cloud/TestDistribDocBasedVersion.java  |   19 +-
 .../solr/cloud/TestDownShardTolerantSearch.java |    7 +-
 .../TestLeaderElectionWithEmptyReplica.java     |   12 +-
 .../solr/cloud/TestLeaderElectionZkExpiry.java  |    3 +
 .../solr/cloud/TestMiniSolrCloudClusterSSL.java |   83 +-
 .../cloud/TestOnReconnectListenerSupport.java   |    8 +-
 .../org/apache/solr/cloud/TestPullReplica.java  |   69 +-
 .../cloud/TestPullReplicaErrorHandling.java     |   28 +-
 .../apache/solr/cloud/TestRandomFlRTGCloud.java |    9 +-
 .../cloud/TestRandomRequestDistribution.java    |   15 +-
 .../apache/solr/cloud/TestRebalanceLeaders.java |    5 +
 .../solr/cloud/TestRequestForwarding.java       |   14 +-
 .../apache/solr/cloud/TestSSLRandomization.java |    7 +-
 .../apache/solr/cloud/TestSegmentSorting.java   |   10 +-
 .../solr/cloud/TestShortCircuitedRequests.java  |    8 +-
 .../solr/cloud/TestSkipOverseerOperations.java  |    6 +
 .../TestSolrCloudWithDelegationTokens.java      |   89 +-
 .../cloud/TestSolrCloudWithKerberosAlt.java     |    9 +-
 .../TestSolrCloudWithSecureImpersonation.java   |   42 +-
 .../TestStressCloudBlindAtomicUpdates.java      |    9 +-
 .../solr/cloud/TestStressInPlaceUpdates.java    |    9 +-
 .../apache/solr/cloud/TestStressLiveNodes.java  |    8 +-
 .../org/apache/solr/cloud/TestTlogReplica.java  |  112 +-
 .../cloud/TestTolerantUpdateProcessorCloud.java |   20 +-
 .../TestTolerantUpdateProcessorRandomCloud.java |   31 +-
 .../solr/cloud/UnloadDistributedZkTest.java     |   36 +-
 .../org/apache/solr/cloud/ZkControllerTest.java |   23 +-
 .../org/apache/solr/cloud/ZkFailoverTest.java   |    8 +
 .../org/apache/solr/cloud/ZkShardTermsTest.java |    6 +
 .../org/apache/solr/cloud/ZkSolrClientTest.java |   10 +-
 .../AbstractCloudBackupRestoreTestCase.java     |    4 +-
 .../solr/cloud/api/collections/AssignTest.java  |   18 +-
 .../CollectionTooManyReplicasTest.java          |    4 +
 .../CollectionsAPIAsyncDistributedZkTest.java   |    9 +-
 .../CollectionsAPIDistributedZkTest.java        |   23 +-
 .../api/collections/CustomCollectionTest.java   |   14 +-
 .../HdfsCollectionsAPIDistributedZkTest.java    |   15 +-
 .../api/collections/ReplicaPropertiesBase.java  |   12 +-
 .../cloud/api/collections/ShardSplitTest.java   |   73 +-
 .../api/collections/TestCollectionAPI.java      |   14 +-
 .../TestCollectionsAPIViaSolrCloudCluster.java  |    8 +-
 .../collections/TestHdfsCloudBackupRestore.java |   18 +-
 .../TestLocalFSCloudBackupRestore.java          |    3 +
 .../api/collections/TestReplicaProperties.java  |    4 +
 .../TestRequestStatusCollectionAPI.java         |   12 +-
 .../AutoAddReplicasIntegrationTest.java         |    7 +-
 .../AutoAddReplicasPlanActionTest.java          |    7 +-
 .../autoscaling/AutoScalingHandlerTest.java     |   40 +-
 .../autoscaling/ComputePlanActionTest.java      |   13 +-
 .../autoscaling/ExecutePlanActionTest.java      |   12 +-
 .../HdfsAutoAddReplicasIntegrationTest.java     |    7 +-
 .../autoscaling/HttpTriggerListenerTest.java    |   16 +-
 .../cloud/autoscaling/IndexSizeTriggerTest.java |    8 +-
 .../MetricTriggerIntegrationTest.java           |   12 +-
 .../cloud/autoscaling/MetricTriggerTest.java    |    6 +
 .../NodeAddedTriggerIntegrationTest.java        |   14 +-
 .../cloud/autoscaling/NodeAddedTriggerTest.java |   12 +-
 .../NodeLostTriggerIntegrationTest.java         |   14 +-
 .../cloud/autoscaling/NodeLostTriggerTest.java  |    8 +-
 .../NodeMarkersRegistrationTest.java            |    8 +-
 .../autoscaling/RestoreTriggerStateTest.java    |   12 +-
 .../ScheduledMaintenanceTriggerTest.java        |    6 +-
 .../ScheduledTriggerIntegrationTest.java        |    4 +-
 .../SearchRateTriggerIntegrationTest.java       |   14 +-
 .../autoscaling/SearchRateTriggerTest.java      |   16 +-
 .../autoscaling/SystemLogListenerTest.java      |    7 +-
 .../solr/cloud/autoscaling/TestPolicyCloud.java |   18 +-
 .../TriggerCooldownIntegrationTest.java         |   12 +-
 .../autoscaling/TriggerIntegrationTest.java     |   10 +-
 .../TriggerSetPropertiesIntegrationTest.java    |   11 +-
 .../sim/GenericDistributedQueue.java            |    9 +-
 .../cloud/autoscaling/sim/SimCloudManager.java  |   13 +-
 .../sim/SimClusterStateProvider.java            |   20 +-
 .../autoscaling/sim/SimDistribStateManager.java |    2 +-
 .../autoscaling/sim/SimSolrCloudTestCase.java   |    4 +-
 .../autoscaling/sim/TestComputePlanAction.java  |   12 +-
 .../autoscaling/sim/TestExecutePlanAction.java  |    8 +-
 .../cloud/autoscaling/sim/TestLargeCluster.java |   11 +-
 .../autoscaling/sim/TestTriggerIntegration.java |   14 +-
 .../cloud/cdcr/BaseCdcrDistributedZkTest.java   |   20 +-
 .../solr/cloud/cdcr/CdcrBidirectionalTest.java  |   10 +-
 .../solr/cloud/cdcr/CdcrBootstrapTest.java      |    8 +
 .../solr/cloud/cdcr/CdcrRequestHandlerTest.java |    4 +-
 .../apache/solr/cloud/cdcr/CdcrTestsUtil.java   |    6 +-
 .../cloud/cdcr/CdcrVersionReplicationTest.java  |    4 +-
 .../solr/cloud/hdfs/HDFSCollectionsAPITest.java |    8 +-
 .../hdfs/HdfsChaosMonkeyNothingIsSafeTest.java  |    5 +-
 .../solr/cloud/hdfs/HdfsNNFailoverTest.java     |    2 +
 .../solr/cloud/hdfs/HdfsRecoverLeaseTest.java   |    5 +
 .../solr/cloud/hdfs/HdfsRecoveryZkTest.java     |    5 +-
 .../apache/solr/cloud/hdfs/HdfsTestUtil.java    |    2 +-
 .../solr/cloud/hdfs/HdfsThreadLeakTest.java     |    6 +
 .../HdfsWriteToMultipleCollectionsTest.java     |    4 +-
 .../apache/solr/cloud/hdfs/StressHdfsTest.java  |   29 +-
 .../solr/cloud/rule/ImplicitSnitchTest.java     |   12 +-
 .../apache/solr/cloud/rule/RuleEngineTest.java  |   13 +-
 .../org/apache/solr/cloud/rule/RulesTest.java   |   22 +-
 .../solr/core/BlobRepositoryCloudTest.java      |    1 +
 .../solr/core/BlobRepositoryMockingTest.java    |   17 +-
 .../apache/solr/core/DirectoryFactoryTest.java  |   20 +-
 .../solr/core/ExitableDirectoryReaderTest.java  |    8 +
 .../apache/solr/core/FakeDeletionPolicy.java    |    6 +-
 .../solr/core/OpenCloseCoreStressTest.java      |   56 +-
 .../apache/solr/core/QueryResultKeyTest.java    |    2 +-
 .../solr/core/RAMDirectoryFactoryTest.java      |    7 +-
 .../apache/solr/core/RequestHandlersTest.java   |    3 +-
 .../apache/solr/core/ResourceLoaderTest.java    |    7 +-
 .../test/org/apache/solr/core/SOLR749Test.java  |    2 +-
 .../test/org/apache/solr/core/SolrCoreTest.java |   18 +-
 .../test/org/apache/solr/core/TestConfig.java   |   15 +-
 .../org/apache/solr/core/TestConfigOverlay.java |    8 +-
 .../solr/core/TestConfigSetProperties.java      |    5 +-
 .../org/apache/solr/core/TestCustomStream.java  |    7 +-
 .../apache/solr/core/TestDynamicLoading.java    |   23 +-
 .../org/apache/solr/core/TestDynamicURP.java    |   11 +-
 .../apache/solr/core/TestJmxIntegration.java    |   30 +-
 .../org/apache/solr/core/TestLazyCores.java     |    8 +-
 .../apache/solr/core/TestMergePolicyConfig.java |    6 +
 .../apache/solr/core/TestSolrConfigHandler.java |   14 +-
 .../core/snapshots/TestSolrCloudSnapshots.java  |    5 +-
 .../handler/AnalysisRequestHandlerTestBase.java |    2 +-
 .../apache/solr/handler/BackupRestoreUtils.java |   23 +-
 .../apache/solr/handler/CheckBackupStatus.java  |   15 +-
 .../DocumentAnalysisRequestHandlerTest.java     |   16 +-
 .../org/apache/solr/handler/JsonLoaderTest.java |   10 +-
 .../solr/handler/PingRequestHandlerTest.java    |    6 +
 .../apache/solr/handler/RequestLoggingTest.java |    8 +
 .../apache/solr/handler/TestBlobHandler.java    |   80 +-
 .../apache/solr/handler/TestConfigReload.java   |   35 +-
 .../solr/handler/TestHdfsBackupRestoreCore.java |   17 +-
 .../solr/handler/TestReplicationHandler.java    |   54 +-
 .../handler/TestReplicationHandlerBackup.java   |   60 +-
 .../apache/solr/handler/TestReqParamsAPI.java   |    6 +
 .../apache/solr/handler/TestRestoreCore.java    |   48 +-
 .../org/apache/solr/handler/TestSQLHandler.java |    4 +
 .../solr/handler/TestSQLHandlerNonCloud.java    |    3 +
 .../handler/TestSolrConfigHandlerCloud.java     |   10 +-
 .../TestSolrConfigHandlerConcurrent.java        |   26 +-
 .../solr/handler/TestSystemCollAutoCreate.java  |    3 +
 .../solr/handler/V2ApiIntegrationTest.java      |   11 +-
 .../apache/solr/handler/V2StandaloneTest.java   |   27 +-
 .../admin/AutoscalingHistoryHandlerTest.java    |    8 +-
 .../handler/admin/CoreAdminHandlerTest.java     |   36 +-
 .../solr/handler/admin/InfoHandlerTest.java     |    1 +
 .../handler/admin/LukeRequestHandlerTest.java   |    2 +-
 .../solr/handler/admin/MBeansHandlerTest.java   |    8 +-
 .../admin/MetricsHistoryHandlerTest.java        |    2 +
 .../handler/admin/SecurityConfHandlerTest.java  |    8 +-
 .../admin/SegmentsInfoRequestHandlerTest.java   |    3 +-
 .../admin/ShowFileRequestHandlerTest.java       |   10 +-
 .../handler/admin/SystemInfoHandlerTest.java    |    7 +-
 .../solr/handler/admin/TestApiFramework.java    |   22 +-
 .../solr/handler/admin/TestConfigsApi.java      |   15 +-
 .../component/CustomHighlightComponentTest.java |    6 +
 .../DistributedDebugComponentTest.java          |   26 +-
 .../DistributedExpandComponentTest.java         |    6 +-
 .../DistributedFacetExistsSmallTest.java        |    6 +
 .../DistributedFacetPivotLargeTest.java         |    6 +-
 .../DistributedFacetPivotLongTailTest.java      |    9 +-
 .../DistributedFacetPivotSmallAdvancedTest.java |    4 +-
 .../DistributedFacetPivotSmallTest.java         |    9 +-
 .../DistributedFacetPivotWhiteBoxTest.java      |    4 +-
 ...DistributedQueryComponentCustomSortTest.java |    8 +-
 ...stributedQueryComponentOptimizationTest.java |    3 +
 .../DistributedQueryElevationComponentTest.java |   10 +-
 .../DistributedSpellCheckComponentTest.java     |   10 +-
 .../DistributedSuggestComponentTest.java        |    8 +-
 .../DistributedTermsComponentTest.java          |    6 +
 .../component/QueryElevationComponentTest.java  |    1 +
 .../component/ReplicaListTransformerTest.java   |   25 +-
 .../component/ResourceSharingTestComponent.java |   16 +-
 .../handler/component/SearchHandlerTest.java    |   14 +-
 .../ShufflingReplicaListTransformerTest.java    |    4 +-
 .../component/SpatialHeatmapFacetsTest.java     |    8 +-
 .../component/SpellCheckComponentTest.java      |    3 +-
 .../handler/component/StatsComponentTest.java   |   24 +-
 .../SuggestComponentContextFilterQueryTest.java |    4 +-
 .../handler/component/SuggestComponentTest.java |    7 +-
 .../TermVectorComponentDistributedTest.java     |    7 +-
 ...estDistributedStatsComponentCardinality.java |   18 +-
 .../TestTrackingShardHandlerFactory.java        |    6 +
 .../apache/solr/highlight/DummyHighlighter.java |    4 +-
 .../solr/highlight/HighlighterConfigTest.java   |    2 +-
 .../apache/solr/highlight/HighlighterTest.java  |    2 +-
 .../index/TestSlowCompositeReaderWrapper.java   |    6 +-
 .../solr/index/hdfs/CheckHdfsIndexTest.java     |    5 +
 .../org/apache/solr/logging/TestLogWatcher.java |    3 +
 .../solr/metrics/SolrMetricReporterTest.java    |    4 +-
 .../reporters/SolrGangliaReporterTest.java      |   19 +-
 .../reporters/SolrSlf4jReporterTest.java        |    5 +-
 .../reporters/solr/SolrCloudReportersTest.java  |    8 +-
 .../reporters/solr/SolrShardReporterTest.java   |    8 +-
 .../metrics/rrd/SolrRrdBackendFactoryTest.java  |    3 +
 .../solr/request/RegexBytesRefFilterTest.java   |    4 +-
 .../request/SubstringBytesRefFilterTest.java    |    4 +-
 .../solr/request/TestIntervalFaceting.java      |    6 +
 .../solr/request/TestRemoteStreaming.java       |   39 +-
 .../solr/request/macro/TestMacroExpander.java   |    6 +-
 .../apache/solr/response/SmileWriterTest.java   |   19 +-
 .../solr/response/TestSolrQueryResponse.java    |    6 +-
 .../TestSubQueryTransformerDistrib.java         |    3 +
 .../org/apache/solr/rest/TestRestManager.java   |    2 +-
 .../solr/rest/schema/TestBulkSchemaAPI.java     |   36 +-
 .../TestDynamicFieldCollectionResource.java     |    6 +
 .../analysis/TestManagedStopFilterFactory.java  |    3 +
 .../TestManagedSynonymFilterFactory.java        |    3 +
 .../TestManagedSynonymGraphFilterFactory.java   |    3 +
 .../solr/schema/ChangedSchemaMergeTest.java     |    5 +-
 .../solr/schema/CurrencyFieldTypeTest.java      |    9 +-
 .../org/apache/solr/schema/DateFieldTest.java   |    2 +-
 .../org/apache/solr/schema/DocValuesTest.java   |    6 +
 .../solr/schema/ExternalFileFieldSortTest.java  |    6 +-
 .../org/apache/solr/schema/IndexSchemaTest.java |    8 +-
 .../ManagedSchemaRoundRobinCloudTest.java       |    7 +-
 .../PreAnalyzedFieldManagedSchemaCloudTest.java |    3 +
 .../solr/schema/PrimitiveFieldTypeTest.java     |    2 +-
 .../solr/schema/SchemaApiFailureTest.java       |    7 +-
 .../apache/solr/schema/SchemaWatcherTest.java   |    8 +-
 .../org/apache/solr/schema/TestBinaryField.java |  151 ++-
 .../solr/schema/TestBulkSchemaConcurrent.java   |  124 +-
 .../solr/schema/TestCloudManagedSchema.java     |   17 +-
 .../apache/solr/schema/TestCloudSchemaless.java |   20 +-
 .../apache/solr/schema/TestManagedSchema.java   |    6 +
 .../solr/schema/TestManagedSchemaAPI.java       |    3 +
 .../org/apache/solr/schema/TestPointFields.java |    8 +-
 .../solr/schema/TestUseDocValuesAsStored.java   |   17 +-
 .../org/apache/solr/schema/UUIDFieldTest.java   |    4 +-
 .../solr/search/AnalyticsTestQParserPlugin.java |   15 +-
 .../apache/solr/search/FooQParserPlugin.java    |    6 +-
 .../apache/solr/search/QueryEqualityTest.java   |    3 +-
 .../apache/solr/search/ReturnFieldsTest.java    |   26 +-
 .../apache/solr/search/SortSpecParsingTest.java |    4 +-
 .../test/org/apache/solr/search/TestDocSet.java |    4 +-
 .../apache/solr/search/TestFastLRUCache.java    |   16 +-
 .../solr/search/TestFilteredDocIdSet.java       |    8 +-
 .../apache/solr/search/TestIndexSearcher.java   |    5 +
 .../org/apache/solr/search/TestLFUCache.java    |    4 +
 .../org/apache/solr/search/TestLRUCache.java    |    4 +-
 .../TestLegacyNumericRangeQueryBuilder.java     |   22 +-
 .../search/TestRandomCollapseQParserPlugin.java |   13 +-
 .../org/apache/solr/search/TestRangeQuery.java  |    7 +
 .../apache/solr/search/TestRankQueryPlugin.java |    2 +-
 .../org/apache/solr/search/TestRecovery.java    |   51 +-
 .../apache/solr/search/TestRecoveryHdfs.java    |    5 +
 .../apache/solr/search/TestSmileRequest.java    |    3 +-
 .../apache/solr/search/TestSolrCoreParser.java  |    5 +-
 .../test/org/apache/solr/search/TestSolrJ.java  |   16 +-
 .../solr/search/TestStandardQParsers.java       |    7 +-
 .../org/apache/solr/search/TestXmlQParser.java  |    8 +
 ...ibutedFacetSimpleRefinementLongTailTest.java |    6 +
 .../search/facet/TestJsonFacetRefinement.java   |    6 +
 .../solr/search/facet/TestJsonFacets.java       |   16 +-
 .../solr/search/function/TestFunctionQuery.java |    6 +
 .../function/TestMinMaxOnMultiValuedField.java  |    8 +-
 .../solr/search/function/TestOrdValues.java     |   10 +-
 .../function/distance/DistanceFunctionTest.java |    4 +-
 .../search/join/BlockJoinFacetDistribTest.java  |    6 +
 .../search/join/TestCloudNestedDocsSort.java    |   17 +
 .../search/stats/TestDefaultStatsCache.java     |    6 +
 .../solr/search/stats/TestDistribIDF.java       |    6 +
 .../solr/search/stats/TestExactStatsCache.java  |    7 +
 .../solr/security/BasicAuthIntegrationTest.java |   38 +-
 .../solr/security/BasicAuthStandaloneTest.java  |   32 +-
 .../HttpParamDelegationTokenPlugin.java         |    1 -
 .../PKIAuthenticationIntegrationTest.java       |   21 +-
 .../security/TestAuthorizationFramework.java    |    8 +-
 .../hadoop/TestDelegationWithHadoopAuth.java    |   57 +-
 .../hadoop/TestImpersonationWithHadoopAuth.java |   33 +-
 .../TestSolrCloudWithHadoopAuthPlugin.java      |    3 +
 .../apache/solr/servlet/CacheHeaderTest.java    |   53 +-
 .../solr/servlet/CacheHeaderTestBase.java       |   20 +-
 .../solr/servlet/DirectSolrConnectionTest.java  |    2 +-
 .../solr/servlet/HttpSolrCallGetCoreTest.java   |    7 +-
 .../apache/solr/servlet/NoCacheHeaderTest.java  |   26 +-
 .../apache/solr/servlet/ResponseHeaderTest.java |   39 +-
 .../solr/servlet/SolrRequestParserTest.java     |   22 +-
 .../ConjunctionSolrSpellCheckerTest.java        |    4 +-
 .../apache/solr/spelling/SampleComparator.java  |    4 +-
 .../solr/spelling/SpellCheckCollatorTest.java   |    2 +-
 .../spelling/SpellingQueryConverterTest.java    |    4 +-
 .../solr/store/blockcache/BlockCacheTest.java   |    8 +-
 .../store/blockcache/BlockDirectoryTest.java    |    9 +-
 .../solr/store/blockcache/BufferStoreTest.java  |    4 +-
 .../solr/store/hdfs/HdfsDirectoryTest.java      |   16 +-
 .../solr/uninverting/TestLegacyFieldCache.java  |    4 +-
 .../solr/update/DirectUpdateHandlerTest.java    |    9 +-
 .../apache/solr/update/DocumentBuilderTest.java |    3 +-
 .../solr/update/MaxSizeAutoCommitTest.java      |    8 +-
 .../solr/update/MockStreamingSolrClients.java   |   17 +-
 .../org/apache/solr/update/PeerSyncTest.java    |   10 +-
 .../apache/solr/update/SoftAutoCommitTest.java  |    8 +-
 .../solr/update/SolrCmdDistributorTest.java     |  105 +-
 .../solr/update/SolrIndexSplitterTest.java      |    5 +-
 .../solr/update/TestInPlaceUpdatesDistrib.java  |   41 +-
 .../update/TestInPlaceUpdatesStandalone.java    |   10 +-
 .../apache/solr/update/TransactionLogTest.java  |    4 +-
 .../AtomicUpdateProcessorFactoryTest.java       |   10 +
 .../update/processor/AtomicUpdatesTest.java     |    3 +-
 ...lassificationUpdateProcessorFactoryTest.java |    6 +-
 .../ClassificationUpdateProcessorTest.java      |    6 +-
 ...DocExpirationUpdateProcessorFactoryTest.java |   14 +-
 .../FieldMutatingUpdateProcessorTest.java       |    2 +-
 ...ommitOptimizeUpdateProcessorFactoryTest.java |    4 +-
 ...IgnoreLargeDocumentProcessorFactoryTest.java |    6 +-
 .../RecordingUpdateProcessorFactory.java        |    7 +-
 .../processor/RegexBoostProcessorTest.java      |    2 +-
 .../solr/update/processor/ScriptEngineTest.java |    8 +-
 ...ipExistingDocumentsProcessorFactoryTest.java |    3 +-
 .../processor/TemplateUpdateProcessorTest.java  |    6 +
 .../processor/TestNamedUpdateProcessors.java    |   11 +-
 .../TimeRoutedAliasUpdateProcessorTest.java     |    3 +
 .../org/apache/solr/util/CircularListTest.java  |    4 +-
 .../apache/solr/util/DateMathParserTest.java    |    8 +-
 .../org/apache/solr/util/DistanceUnitsTest.java |    4 +-
 .../org/apache/solr/util/FileUtilsTest.java     |    4 +-
 .../apache/solr/util/OrderedExecutorTest.java   |    4 +-
 .../org/apache/solr/util/PrimUtilsTest.java     |    6 +-
 .../apache/solr/util/TestFastOutputStream.java  |    8 +-
 .../solr/util/TestObjectReleaseTracker.java     |    6 +-
 .../org/apache/solr/util/TestRTimerTree.java    |    4 +-
 .../apache/solr/util/TestSolrCLIRunExample.java |   13 +-
 .../apache/solr/util/TestSystemIdResolver.java  |    3 +-
 .../org/apache/solr/util/TestTestInjection.java |    4 +-
 .../org/apache/solr/util/TimeZoneUtilsTest.java |   12 +-
 .../HadoopSSLCredentialProviderTest.java        |   12 +-
 .../BigEndianAscendingWordDeserializerTest.java |    8 +-
 .../BigEndianAscendingWordSerializerTest.java   |    4 +-
 .../org/apache/solr/util/hll/BitVectorTest.java |    4 +-
 .../apache/solr/util/hll/ExplicitHLLTest.java   |    7 +-
 .../org/apache/solr/util/hll/FullHLLTest.java   |    4 +-
 .../solr/util/hll/HLLSerializationTest.java     |   21 +-
 .../org/apache/solr/util/hll/HLLUtilTest.java   |    4 +-
 .../solr/util/hll/IntegrationTestGenerator.java |    6 +-
 .../org/apache/solr/util/hll/SparseHLLTest.java |    4 +-
 solr/example/.gitignore                         |    1 +
 solr/server/etc/jetty-http.xml                  |    2 +-
 solr/server/ivy.xml                             |   10 +-
 .../conf/solrconfig.xml                         |   10 +-
 solr/solr-ref-guide/ivy.xml                     |    1 -
 solr/solrj/ivy.xml                              |   13 +
 .../solr/client/solrj/ResponseParser.java       |    3 +-
 .../apache/solr/client/solrj/SolrRequest.java   |   20 +-
 .../solrj/beans/DocumentObjectBinder.java       |   29 +-
 .../apache/solr/client/solrj/beans/Field.java   |    5 +-
 .../cloud/autoscaling/AutoScalingConfig.java    |    6 +-
 .../client/solrj/cloud/autoscaling/Clause.java  |   24 +-
 .../solrj/cloud/autoscaling/ReplicaInfo.java    |    4 +-
 .../client/solrj/cloud/autoscaling/Row.java     |    4 +-
 .../solrj/cloud/autoscaling/Suggester.java      |    4 +-
 .../solrj/impl/AsyncLBHttpSolrClient.java       | 1081 +++++++++++++++++
 .../client/solrj/impl/BinaryRequestWriter.java  |    4 +-
 .../client/solrj/impl/BinaryResponseParser.java |   10 +-
 .../solr/client/solrj/impl/CloudSolrClient.java |   46 +-
 .../solrj/impl/ConcurrentUpdateSolrClient.java  |    5 +-
 .../impl/DelegationTokenHttpSolrClient.java     |    4 +-
 .../solr/client/solrj/impl/Http2SolrClient.java | 1143 ++++++++++++++++++
 .../solrj/impl/HttpClusterStateProvider.java    |   39 +-
 .../solr/client/solrj/impl/HttpSolrClient.java  |   12 +-
 .../client/solrj/impl/LBHttpSolrClient.java     |  209 ++--
 .../client/solrj/impl/SolrClientBuilder.java    |    9 +-
 .../solrj/impl/SolrClientCloudManager.java      |  125 +-
 .../solrj/impl/SolrClientNodeStateProvider.java |   11 +-
 .../solrj/impl/SolrHttpClientScheduler.java     |  105 ++
 .../org/apache/solr/client/solrj/io/Lang.java   |   48 +-
 .../solr/client/solrj/io/SolrClientCache.java   |   24 +-
 .../solrj/io/graph/GatherNodesStream.java       |    4 +-
 .../solrj/io/graph/ShortestPathStream.java      |   15 +-
 .../client/solrj/io/ops/GroupOperation.java     |    4 +-
 .../solrj/io/ops/ReplaceWithFieldOperation.java |    2 +-
 .../solrj/io/ops/ReplaceWithValueOperation.java |    2 +-
 .../solrj/io/sql/DatabaseMetaDataImpl.java      |    2 +-
 .../solr/client/solrj/io/sql/ResultSetImpl.java |    2 +-
 .../client/solrj/io/stream/BiJoinStream.java    |    1 +
 .../client/solrj/io/stream/CloudSolrStream.java |    6 +-
 .../client/solrj/io/stream/ExecutorStream.java  |    4 +-
 .../io/stream/FeaturesSelectionStream.java      |   10 +-
 .../client/solrj/io/stream/FetchStream.java     |    6 +-
 .../solr/client/solrj/io/stream/JDBCStream.java |    4 +-
 .../solr/client/solrj/io/stream/KnnStream.java  |    6 +-
 .../solr/client/solrj/io/stream/LetStream.java  |    3 +-
 .../client/solrj/io/stream/RandomStream.java    |    4 +-
 .../solr/client/solrj/io/stream/RankStream.java |    4 +-
 .../solrj/io/stream/ScoreNodesStream.java       |    4 +-
 .../solrj/io/stream/SignificantTermsStream.java |    9 +-
 .../solr/client/solrj/io/stream/SolrStream.java |    7 +-
 .../solr/client/solrj/io/stream/SortStream.java |    2 +-
 .../client/solrj/io/stream/StatsStream.java     |    4 +-
 .../client/solrj/io/stream/TextLogitStream.java |    4 +-
 .../client/solrj/io/stream/TopicStream.java     |   16 +-
 .../solrj/request/AbstractUpdateRequest.java    |    2 +-
 .../solrj/request/CollectionAdminRequest.java   |   29 +-
 .../solrj/request/CollectionApiMapping.java     |   64 +-
 .../solrj/request/ConfigSetAdminRequest.java    |   11 +-
 .../client/solrj/request/CoreAdminRequest.java  |    2 +-
 .../solrj/request/DelegationTokenRequest.java   |    3 +-
 .../client/solrj/request/DirectXmlRequest.java  |    2 +-
 .../solrj/request/DocumentAnalysisRequest.java  |    6 +-
 .../solrj/request/FieldAnalysisRequest.java     |    2 +-
 .../solrj/request/GenericSolrRequest.java       |    2 +-
 .../solrj/request/HealthCheckRequest.java       |   10 +-
 .../request/JavaBinUpdateRequestCodec.java      |    1 -
 .../solr/client/solrj/request/LukeRequest.java  |    2 +-
 .../solr/client/solrj/request/QueryRequest.java |    2 +-
 .../solr/client/solrj/request/SolrPing.java     |    2 +-
 .../client/solrj/request/V1toV2ApiMapper.java   |    7 +-
 .../solr/client/solrj/request/V2Request.java    |   15 +-
 .../solrj/request/schema/SchemaRequest.java     |   26 +-
 .../solrj/response/AnalysisResponseBase.java    |    4 +-
 .../solrj/response/CoreAdminResponse.java       |    1 +
 .../response/DocumentAnalysisResponse.java      |    4 +-
 .../solrj/response/FieldAnalysisResponse.java   |    4 +-
 .../client/solrj/response/FieldStatsInfo.java   |    4 +-
 .../solr/client/solrj/response/Group.java       |    4 +-
 .../solrj/response/SpellCheckResponse.java      |    4 +-
 .../solrj/util/SolrInternalHttpClient.java      |  188 +++
 .../client/solrj/util/SolrQueuedThreadPool.java |   61 +
 .../apache/solr/common/EmptyEntityResolver.java |    5 +-
 .../solr/common/cloud/ClusterStateUtil.java     |    1 -
 .../common/cloud/CollectionStateWatcher.java    |    2 +-
 .../solr/common/cloud/CompositeIdRouter.java    |   10 +-
 .../org/apache/solr/common/cloud/DocRouter.java |   12 +-
 .../solr/common/cloud/HashBasedRouter.java      |    4 +-
 .../solr/common/cloud/ImplicitDocRouter.java    |    9 +-
 .../apache/solr/common/cloud/SolrZkClient.java  |   15 +-
 .../apache/solr/common/cloud/SolrZooKeeper.java |   27 +-
 .../solr/common/cloud/ZkCoreNodeProps.java      |    5 +
 .../apache/solr/common/cloud/ZkStateReader.java |  105 +-
 .../solr/common/params/CollectionParams.java    |    4 +-
 .../apache/solr/common/params/QoSParams.java    |   24 +
 .../solr/common/params/RequiredSolrParams.java  |    4 +-
 .../solr/common/util/CommandOperation.java      |   12 +-
 .../solr/common/util/ContentStreamBase.java     |   29 +-
 .../apache/solr/common/util/ExecutorUtil.java   |   23 +-
 .../solr/common/util/FastInputStream.java       |    5 +-
 .../solr/common/util/FastOutputStream.java      |    5 +-
 .../solr/common/util/JsonRecordReader.java      |   23 +-
 .../solr/common/util/SimpleOrderedMap.java      |    4 +-
 solr/solrj/src/test-files/log4j2.xml            |    3 +-
 .../UsingSolrJRefGuideExamplesTest.java         |    8 +-
 ...ollectionAdminRequestRequiredParamsTest.java |    7 +-
 .../solr/client/solrj/LargeVolumeTestBase.java  |   10 +-
 .../client/solrj/SolrExampleBinaryTest.java     |   13 +-
 .../solr/client/solrj/SolrExampleTests.java     |   32 +-
 .../solr/client/solrj/SolrExampleTestsBase.java |   13 +-
 .../solr/client/solrj/SolrExampleXMLTest.java   |   13 +-
 .../solr/client/solrj/SolrExceptionTest.java    |   28 +-
 .../client/solrj/SolrSchemalessExampleTest.java |   44 +-
 .../solr/client/solrj/TestBatchUpdate.java      |   10 +-
 .../solr/client/solrj/TestLBHttpSolrClient.java |  165 ++-
 .../client/solrj/TestSolrJErrorHandling.java    |   20 +-
 .../solrj/beans/TestDocumentObjectBinder.java   |   17 +-
 .../solrj/embedded/SolrExampleJettyTest.java    |   26 +-
 .../SolrExampleStreamingBinaryTest.java         |    2 +
 .../embedded/SolrExampleStreamingTest.java      |    6 +
 .../solrj/impl/BasicHttp2SolrClientTest.java    |  305 +++++
 .../solrj/impl/BasicHttpSolrClientTest.java     |  835 -------------
 .../solrj/impl/CloudSolrClientBuilderTest.java  |    4 +-
 .../CloudSolrClientMultiConstructorTest.java    |    4 +-
 .../client/solrj/impl/CloudSolrClientTest.java  |   37 +-
 .../ConcurrentUpdateSolrClientBuilderTest.java  |    2 +
 .../impl/ConcurrentUpdateSolrClientTest.java    |   33 +-
 .../client/solrj/impl/HttpClientUtilTest.java   |   13 +-
 .../solrj/impl/HttpSolrClientBuilderTest.java   |   23 +-
 .../solrj/impl/HttpSolrClientConPoolTest.java   |   39 +-
 .../impl/HttpSolrClientSSLAuthConPoolTest.java  |    2 +
 .../solrj/impl/LBHttpSolrClientBuilderTest.java |   23 +-
 .../client/solrj/impl/LBHttpSolrClientTest.java |   43 +-
 .../solrj/io/graph/GraphExpressionTest.java     |    8 +-
 .../solr/client/solrj/io/graph/GraphTest.java   |    2 +
 .../solr/client/solrj/io/sql/JdbcTest.java      |    1 +
 .../client/solrj/io/stream/JDBCStreamTest.java  |    4 +-
 .../solrj/io/stream/MathExpressionTest.java     |    2 +
 .../io/stream/SelectWithEvaluatorsTest.java     |    2 +
 .../solrj/io/stream/StreamDecoratorTest.java    |    6 +-
 .../solrj/io/stream/StreamExpressionTest.java   |    2 +
 .../stream/StreamExpressionToExpessionTest.java |    4 +-
 .../StreamExpressionToExplanationTest.java      |    7 +-
 .../client/solrj/io/stream/StreamingTest.java   |    1 +
 .../solr/client/solrj/request/SchemaTest.java   |   16 +-
 .../solrj/request/TestUpdateRequestCodec.java   |   10 +-
 .../solrj/request/TestV1toV2ApiMapper.java      |    2 +
 .../client/solrj/request/TestV2Request.java     |    4 +-
 .../solrj/response/NoOpResponseParserTest.java  |    4 +-
 .../solrj/response/QueryResponseTest.java       |    7 +-
 .../cloud/TestCloudCollectionsListeners.java    |    6 +
 .../cloud/TestCollectionStateWatchers.java      |   12 +-
 .../solr/common/util/ContentStreamTest.java     |    2 +
 .../apache/solr/common/util/NamedListTest.java  |    4 +-
 .../solr/common/util/TestFastInputStream.java   |   14 +-
 .../solr/common/util/TestNamedListCodec.java    |   20 +-
 solr/test-framework/ivy.xml                     |    5 +
 .../solr/BaseDistributedSearchTestCase.java     |   62 +-
 .../apache/solr/SolrIgnoredThreadsFilter.java   |   23 +-
 .../java/org/apache/solr/SolrJettyTestBase.java |   22 +-
 .../java/org/apache/solr/SolrTestCaseHS.java    |    2 +
 .../java/org/apache/solr/SolrTestCaseJ4.java    |  312 ++++-
 .../solr/cloud/AbstractDistribZkTestBase.java   |   92 +-
 .../cloud/AbstractFullDistribZkTestBase.java    |  170 ++-
 .../java/org/apache/solr/cloud/ChaosMonkey.java |    4 +-
 .../apache/solr/cloud/MiniSolrCloudCluster.java |   36 +-
 .../apache/solr/cloud/SolrCloudTestCase.java    |    6 +-
 .../org/apache/solr/cloud/ZkTestServer.java     |   55 +-
 .../component/TrackingShardHandlerFactory.java  |    4 +
 .../solr/util/BadZookeeperThreadsFilter.java    |   34 -
 .../org/apache/solr/util/DOMUtilTestBase.java   |    5 +-
 .../java/org/apache/solr/util/RestTestBase.java |   18 +-
 .../org/apache/solr/util/RestTestHarness.java   |   64 +-
 .../solr/cloud/MiniSolrCloudClusterTest.java    |   12 +-
 starburst.jpeg                                  |  Bin 0 -> 335095 bytes
 798 files changed, 13099 insertions(+), 6587 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 0dac902..a9bf735 100644
--- a/README.md
+++ b/README.md
@@ -14,98 +14,30 @@
     See the License for the specific language governing permissions and
     limitations under the License.
  -->
+![Star Burst](/starburst.jpeg) 
 
-# Apache Lucene and Solr
+# The Star Burst Upgrade
 
-Apache Lucene is a high-performance, full featured text search engine library
-written in Java.
+The themes of the Star Burst Upgrade are: Communication, Resource Usage, and Performance + Scale.
 
-Apache Solr is an enterprise search platform written using Apache Lucene.
-Major features include full-text search, index replication and sharding, and
-result faceting and highlighting.
+- A full on move from HTTP/1.1 to HTTP/2 resulting in resource usage and stability improvements across the board.
+- A new high performance and more feature packed low level HttpClient capable of non blocking IO as well as HTTP/1.1 and HTTP/2.
+- A brand new and improved HTTP/2 capable SolrJ SolrClient, offering asynchronous requests and performance improvements to the whole SolrJ client family.
+- All external and internal communication takes advantage of the above.
+- Configurable, dynamic and efficient resource usage throttling without massive thread waste or distributed deadlock. 
+- Communication efficiency improvements and hardening across the board.
+- Tuned and improved resource usage across the board.
 
-## Online Documentation
 
-This README file only contains basic setup instructions.  For more
-comprehensive documentation, visit:
+# Dev Notes
 
-- Lucene: <http://lucene.apache.org/core/documentation.html>
-- Solr: <http://lucene.apache.org/solr/guide/>
+Things are still rapidly changing. Don't count on much until more starts to stabilize.
 
-## Building Lucene/Solr
+Tests now need to have test specific timeouts if over 45 seconds might be required.
 
-(You do not need to do this if you downloaded a pre-built package.)
+# Testing State
 
-Lucene and Solr are built using [Apache Ant](http://ant.apache.org/).  To build
-Lucene and Solr, run:
+always run tests with -Dtests.badapples=false
 
-`ant compile`
+ant -Dtests.badapples=false test should be passing and should remain passing
 
-If you see an error about Ivy missing while invoking Ant (e.g., `.ant/lib does
-not exist`), run `ant ivy-bootstrap` and retry.
-
-Sometimes you may face issues with Ivy (e.g., an incompletely downloaded artifact).
-Cleaning up the Ivy cache and retrying is a workaround for most of such issues: 
-
-`rm -rf ~/.ivy2/cache`
-
-The Solr server can then be packaged and prepared for startup by running the
-following command from the `solr/` directory:
-
-`ant server`
-
-## Running Solr
-
-After [building Solr](#building-lucene-solr), the server can be started using
-the `bin/solr` control scripts.  Solr can be run in either standalone or
-distributed (SolrCloud mode).
-
-To run Solr in standalone mode, run the following command from the `solr/`
-directory:
-
-`bin/solr start`
-
-To run Solr in SolrCloud mode, run the following command from the `solr/`
-directory:
-
-`bin/solr start -c`
-
-The `bin/solr` control script allows heavy modification of the started Solr.
-Common options are described in some detail in solr/README.txt.  For an
-exhaustive treatment of options, run `bin/solr start -h` from the `solr/`
-directory.
-
-## Development/IDEs
-
-Ant can be used to generate project files compatible with most common IDEs.
-Run the ant command corresponding to your IDE of choice before attempting to
-import Lucene/Solr.
-
-- *Eclipse* - `ant eclipse`
-- *IntelliJ* - `ant idea`
-- *Netbeans* - `ant netbeans`
-
-## Running Tests
-
-The standard test suite can be run with the command:
-
-`ant test`
-
-Like Solr itself, the test-running can be customized or tailored in a number or
-ways.  For an exhaustive discussion of the options available, run:
-
-`ant test-help`
-
-## Contributing
-
-Please review the [Contributing to Solr
-Guide](https://wiki.apache.org/solr/HowToContribute) for information on
-contributing.
-
-## Discussion and Support
-
-- [Users Mailing List](http://lucene.apache.org/solr/community.html#solr-user-list-solr-userluceneapacheorg)
-- [Developers Mailing List](http://lucene.apache.org/solr/community.html#developer-list-devluceneapacheorg)
-- [Lucene Issue Tracker](https://issues.apache.org/jira/browse/LUCENE)
-- [Solr Issue Tracker](https://issues.apache.org/jira/browse/SOLR)
-- IRC: `#solr` and `#solr-dev` on freenode.net

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/dev-tools/eclipse/run-test-cases.launch
----------------------------------------------------------------------
diff --git a/dev-tools/eclipse/run-test-cases.launch b/dev-tools/eclipse/run-test-cases.launch
index 3fcac78..30f0750 100644
--- a/dev-tools/eclipse/run-test-cases.launch
+++ b/dev-tools/eclipse/run-test-cases.launch
@@ -13,5 +13,5 @@
 	<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
 	<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
 	<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="@ECLIPSEPROJECTNAME@"/>
-	<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+	<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea -Djava.security.egd=file:/dev/./urandom -Dlog4j.configurationFile=/home/mark/solr-log4j2.xml"/>
 </launchConfiguration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteLineDocTask.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteLineDocTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteLineDocTask.java
index 3bf9695..0a8e2e1 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteLineDocTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/WriteLineDocTask.java
@@ -177,7 +177,7 @@ public class WriteLineDocTask extends PerfTask {
     for (int i=0; i<fieldsToWrite.length; i++) {
       IndexableField f = doc.getField(fieldsToWrite[i]);
       String text = f == null ? "" : matcher.reset(f.stringValue()).replaceAll(" ").trim();
-      sb.append(text).append(SEP);
+      sb.append(text.replaceAll(Character.toString(SEP), "")).append(SEP);
       sufficient |= text.length()>0 && sufficientFields[i];
     }
     if (sufficient) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Config.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Config.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Config.java
index b7afcf2..6437ea5 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Config.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Config.java
@@ -28,6 +28,8 @@ import java.util.List;
 import java.util.Properties;
 import java.util.StringTokenizer;
 
+import org.apache.lucene.benchmark.utils.PropertiesUtil;
+
 /**
  * Perf run configuration properties.
  * <p>
@@ -61,12 +63,13 @@ public class Config {
    * @throws IOException If there is a low-level I/O error.
    */
   public Config(Reader algReader) throws IOException {
+    System.out.println("found props:" + System.getProperties().keySet());
     // read alg file to array of lines
     ArrayList<String> lines = new ArrayList<>();
     BufferedReader r = new BufferedReader(algReader);
     int lastConfigLine = 0;
     for (String line = r.readLine(); line != null; line = r.readLine()) {
-      lines.add(line);
+      lines.add(PropertiesUtil.substituteProperty(line, null) );
       if (line.indexOf('=') > 0) {
         lastConfigLine = lines.size();
       }
@@ -182,7 +185,7 @@ public class Config {
    */
   public int get(String name, int dflt) {
     // use value by round if already parsed
-    int vals[] = (int[]) valByRound.get(name);
+    Integer vals[] = (Integer[]) valByRound.get(name);
     if (vals != null) {
       return vals[roundNumber % vals.length];
     }
@@ -213,7 +216,7 @@ public class Config {
    */
   public double get(String name, double dflt) {
     // use value by round if already parsed
-    double vals[] = (double[]) valByRound.get(name);
+    Double vals[] = (Double[]) valByRound.get(name);
     if (vals != null) {
       return vals[roundNumber % vals.length];
     }
@@ -244,7 +247,7 @@ public class Config {
    */
   public boolean get(String name, boolean dflt) {
     // use value by round if already parsed
-    boolean vals[] = (boolean[]) valByRound.get(name);
+    Boolean vals[] = (Boolean[]) valByRound.get(name);
     if (vals != null) {
       return vals[roundNumber % vals.length];
     }
@@ -278,13 +281,13 @@ public class Config {
       sb.append(": ");
       for (final String name : valByRound.keySet()) {
         Object a = valByRound.get(name);
-        if (a instanceof int[]) {
-          int ai[] = (int[]) a;
+        if (a instanceof Integer[]) {
+          Integer ai[] = (Integer[]) a;
           int n1 = (roundNumber - 1) % ai.length;
           int n2 = roundNumber % ai.length;
           sb.append("  ").append(name).append(":").append(ai[n1]).append("-->").append(ai[n2]);
-        } else if (a instanceof double[]) {
-          double ad[] = (double[]) a;
+        } else if (a instanceof Double[]) {
+          Double ad[] = (Double[]) a;
           int n1 = (roundNumber - 1) % ad.length;
           int n2 = roundNumber % ad.length;
           sb.append("  ").append(name).append(":").append(ad[n1]).append("-->").append(ad[n2]);
@@ -294,7 +297,7 @@ public class Config {
           int n2 = roundNumber % ad.length;
           sb.append("  ").append(name).append(":").append(ad[n1]).append("-->").append(ad[n2]);
         } else {
-          boolean ab[] = (boolean[]) a;
+          Boolean ab[] = (Boolean[]) a;
           int n1 = (roundNumber - 1) % ab.length;
           int n2 = roundNumber % ab.length;
           sb.append("  ").append(name).append(":").append(ab[n1]).append("-->").append(ab[n2]);
@@ -324,9 +327,9 @@ public class Config {
   }
 
   // extract properties to array, e.g. for "10:100:5" return int[]{10,100,5}. 
-  private int[] propToIntArray(String s) {
+  private Integer[] propToIntArray(String s) {
     if (s.indexOf(":") < 0) {
-      return new int[]{Integer.parseInt(s)};
+      return new Integer[]{Integer.parseInt(s)};
     }
 
     ArrayList<Integer> a = new ArrayList<>();
@@ -335,7 +338,7 @@ public class Config {
       String t = st.nextToken();
       a.add(Integer.valueOf(t));
     }
-    int res[] = new int[a.size()];
+    Integer res[] = new Integer[a.size()];
     for (int i = 0; i < a.size(); i++) {
       res[i] = a.get(i).intValue();
     }
@@ -343,9 +346,9 @@ public class Config {
   }
 
   // extract properties to array, e.g. for "10.7:100.4:-2.3" return int[]{10.7,100.4,-2.3}. 
-  private double[] propToDoubleArray(String s) {
+  private Double[] propToDoubleArray(String s) {
     if (s.indexOf(":") < 0) {
-      return new double[]{Double.parseDouble(s)};
+      return new Double[]{Double.parseDouble(s)};
     }
 
     ArrayList<Double> a = new ArrayList<>();
@@ -354,7 +357,7 @@ public class Config {
       String t = st.nextToken();
       a.add(Double.valueOf(t));
     }
-    double res[] = new double[a.size()];
+    Double res[] = new Double[a.size()];
     for (int i = 0; i < a.size(); i++) {
       res[i] = a.get(i).doubleValue();
     }
@@ -362,9 +365,9 @@ public class Config {
   }
 
   // extract properties to array, e.g. for "true:true:false" return boolean[]{true,false,false}. 
-  private boolean[] propToBooleanArray(String s) {
+  private Boolean[] propToBooleanArray(String s) {
     if (s.indexOf(":") < 0) {
-      return new boolean[]{Boolean.valueOf(s).booleanValue()};
+      return new Boolean[]{Boolean.valueOf(s).booleanValue()};
     }
 
     ArrayList<Boolean> a = new ArrayList<>();
@@ -373,7 +376,7 @@ public class Config {
       String t = st.nextToken();
       a.add(new Boolean(t));
     }
-    boolean res[] = new boolean[a.size()];
+    Boolean res[] = new Boolean[a.size()];
     for (int i = 0; i < a.size(); i++) {
       res[i] = a.get(i).booleanValue();
     }
@@ -390,8 +393,22 @@ public class Config {
     StringBuilder sb = new StringBuilder();
     for (final String name : colForValByRound.keySet()) {
       String colName = colForValByRound.get(name);
-      sb.append(" ").append(colName);
+      
+      Object a = valByRound.get(name);
+      Object ad[] = null;
+
+      ad = (Object[]) a;
+
+      int longestVal = colName.length() + 1;
+      for (Object val : ad) {
+        if (val.toString().length() > longestVal) {
+          longestVal = val.toString().length();
+        }
+      }
+
+      sb.append(" ").append(Format.format(colName, longestVal));
     }
+    
     return sb.toString();
   }
 
@@ -408,24 +425,39 @@ public class Config {
       String template = " " + colName;
       if (roundNum < 0) {
         // just append blanks
-        sb.append(Format.formatPaddLeft("-", template));
+        Object a = valByRound.get(name);
+        Object ad[] = (Object[]) a;
+        int longestVal = colName.length() + 1;
+        for (Object val : ad) {
+          if (val.toString().length() > longestVal) {
+            longestVal = val.toString().length();
+          }
+        }
+        
+        sb.append(" ").append(Format.formatPaddLeft("-", longestVal));
       } else {
         // append actual values, for that round
         Object a = valByRound.get(name);
-        if (a instanceof int[]) {
-          int ai[] = (int[]) a;
+        if (a instanceof Integer[]) {
+          Integer ai[] = (Integer[]) a;
           int n = roundNum % ai.length;
           sb.append(Format.format(ai[n], template));
-        } else if (a instanceof double[]) {
-          double ad[] = (double[]) a;
+        } else if (a instanceof Double[]) {
+          Double ad[] = (Double[]) a;
           int n = roundNum % ad.length;
           sb.append(Format.format(2, ad[n], template));
         } else if (a instanceof String[]) {
           String ad[] = (String[]) a;
+          int longestVal = 0;
+          for (String val : ad) {
+            if (val.length() > longestVal) {
+              longestVal = val.length();
+            }
+          }
           int n = roundNum % ad.length;
-          sb.append(ad[n]);
+          sb.append(" ").append(Format.format(ad[n], longestVal));
         } else {
-          boolean ab[] = (boolean[]) a;
+          Boolean ab[] = (Boolean[]) a;
           int n = roundNum % ab.length;
           sb.append(Format.formatPaddLeft("" + ab[n], template));
         }
@@ -448,4 +480,11 @@ public class Config {
     return algorithmText;
   }
 
+  /**
+   * @return props used.
+   */
+  public Properties getProps() {
+    return props;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java
index a4636de..0fb72a3 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java
@@ -96,6 +96,17 @@ public class Format {
     String s1 = (s + padd);
     return s1.substring(0, Math.min(col.length(), s1.length()));
   }
+  
+  /**
+   * Pad a string from right.
+   * @param s string to be formatted.
+   * @param len length.
+   * @return formatted string.
+   */
+  public static String format(String s, int len) {
+    String s1 = (s + padd);
+    return s1.substring(0, Math.min(len, s1.length()));
+  }
 
   /**
    * Pad a string from left.
@@ -107,5 +118,16 @@ public class Format {
     String res = padd + s;
     return res.substring(res.length() - col.length());
   }
+  
+  /**
+   * Pad a string from left.
+   * @param s string to be formatted.
+   * @param len length of to padd to.
+   * @return formatted string.
+   */
+  public static String formatPaddLeft(String s, int len) {
+    String res = padd + s;
+    return res.substring(res.length() - len);
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/lucene/benchmark/src/java/org/apache/lucene/benchmark/utils/PropertiesUtil.java
----------------------------------------------------------------------
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/utils/PropertiesUtil.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/utils/PropertiesUtil.java
new file mode 100644
index 0000000..fbf803c
--- /dev/null
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/utils/PropertiesUtil.java
@@ -0,0 +1,145 @@
+/*
+ * 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.lucene.benchmark.utils;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class PropertiesUtil {
+  /*
+   * This method borrowed from Ant's PropertyHelper.replaceProperties:
+   * http://svn.apache.org/repos/asf/ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java
+   */
+  public static String substituteProperty(String value, Map<Object,Object> additionalProperties) {
+    if (value == null || value.indexOf('$') == -1) {
+      return value;
+    }
+
+    List<String> fragments = new ArrayList<>();
+    List<String> propertyRefs = new ArrayList<>();
+    parsePropertyString(value, fragments, propertyRefs);
+
+    StringBuilder sb = new StringBuilder();
+    Iterator<String> i = fragments.iterator();
+    Iterator<String> j = propertyRefs.iterator();
+
+    while (i.hasNext()) {
+      String fragment = i.next();
+      if (fragment == null) {
+        String propertyName = j.next();
+        String defaultValue = null;
+        int colon_index = propertyName.indexOf(':');
+        if (colon_index > -1) {
+          defaultValue = propertyName.substring(colon_index + 1);
+          propertyName = propertyName.substring(0, colon_index);
+        }
+        if (additionalProperties != null) {
+          fragment = additionalProperties.get(propertyName).toString();
+        }
+        if (fragment == null) {
+          fragment = System.getProperty(propertyName, defaultValue);
+        }
+        if (fragment == null) {
+          throw new IllegalArgumentException("No system property or default value specified for " + propertyName + " value:" + value);
+        }
+      }
+      sb.append(fragment);
+    }
+    return sb.toString();
+  }
+
+  /*
+   * This method borrowed from Ant's PropertyHelper.parsePropertyStringDefault:
+   * http://svn.apache.org/repos/asf/ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java
+   */
+  private static void parsePropertyString(String value, List<String> fragments, List<String> propertyRefs) {
+    int prev = 0;
+    int pos;
+    // search for the next instance of $ from the 'prev' position
+    while ((pos = value.indexOf("$", prev)) >= 0) {
+
+      // if there was any text before this, add it as a fragment
+      // TODO, this check could be modified to go if pos>prev;
+      // seems like this current version could stick empty strings
+      // into the list
+      if (pos > 0) {
+        fragments.add(value.substring(prev, pos));
+      }
+      // if we are at the end of the string, we tack on a $
+      // then move past it
+      if (pos == (value.length() - 1)) {
+        fragments.add("$");
+        prev = pos + 1;
+      } else if (value.charAt(pos + 1) != '{') {
+        // peek ahead to see if the next char is a property or not
+        // not a property: insert the char as a literal
+        /*
+         * fragments.addElement(value.substring(pos + 1, pos + 2)); prev = pos + 2;
+         */
+        if (value.charAt(pos + 1) == '$') {
+          // backwards compatibility two $ map to one mode
+          fragments.add("$");
+          prev = pos + 2;
+        } else {
+          // new behaviour: $X maps to $X for all values of X!='$'
+          fragments.add(value.substring(pos, pos + 2));
+          prev = pos + 2;
+        }
+
+      } else {
+        // property found, extract its name or bail on a typo
+        int endName = value.indexOf('}', pos);
+        if (endName < 0) {
+          throw new RuntimeException("Syntax error in property: " + value);
+        }
+        String propertyName = value.substring(pos + 2, endName);
+        fragments.add(null);
+        propertyRefs.add(propertyName);
+        prev = endName + 1;
+      }
+    }
+    // no more $ signs found
+    // if there is any tail to the string, append it
+    if (prev < value.length()) {
+      fragments.add(value.substring(prev));
+    }
+  }
+
+  /**
+   * Parse the given String value as an integer. If the string cannot be parsed, returns the default
+   * 
+   * @param value
+   *          the value to parse
+   * @param defValue
+   *          the default to return if the value cannot be parsed
+   * @return an integer version of the passed in value
+   */
+  public static Integer toInteger(String value, Integer defValue) {
+    try {
+      return Integer.parseInt(value);
+    } catch (NumberFormatException e) {
+      return defValue;
+    }
+  }
+
+  public static boolean toBoolean(String value) {
+    return "true".equalsIgnoreCase(value) || "on".equalsIgnoreCase(value);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/lucene/common-build.xml
----------------------------------------------------------------------
diff --git a/lucene/common-build.xml b/lucene/common-build.xml
index dafe935..5ac55d7 100644
--- a/lucene/common-build.xml
+++ b/lucene/common-build.xml
@@ -1008,6 +1008,7 @@
         <property name="tests.useSecurityManager"  value="true" />
 
         <property name="tests.heapdump.args" value=""/>
+      
 
         <!-- turn on security manager? -->
         <condition property="java.security.manager" value="org.apache.lucene.util.TestSecurityManager">
@@ -1159,6 +1160,7 @@
             <sysproperty key="tests.LUCENE_VERSION" value="${version.base}"/>
 
             <sysproperty key="jetty.testMode" value="1"/>
+            <sysproperty key="log4j2.contextSelector" value="org.apache.logging.log4j.core.async.AsyncLoggerContextSelector"/>
             <sysproperty key="jetty.insecurerandom" value="1"/>
             <sysproperty key="solr.directoryFactory" value="org.apache.solr.core.MockDirectoryFactory"/>
             

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/lucene/ivy-versions.properties
----------------------------------------------------------------------
diff --git a/lucene/ivy-versions.properties b/lucene/ivy-versions.properties
index 49a1190..aad53d4 100644
--- a/lucene/ivy-versions.properties
+++ b/lucene/ivy-versions.properties
@@ -252,12 +252,22 @@ org.codehaus.janino.version = 2.7.6
 /org.codehaus.woodstox/woodstox-core-asl = 4.4.1
 
 org.eclipse.jetty.version = 9.4.10.v20180503
+/org.eclipse.jetty.http2/http2-client = ${org.eclipse.jetty.version}
+/org.eclipse.jetty.http2/http2-common = ${org.eclipse.jetty.version}
+/org.eclipse.jetty.http2/http2-server = ${org.eclipse.jetty.version}
+/org.eclipse.jetty.http2/http2-hpack = ${org.eclipse.jetty.version}
+/org.eclipse.jetty.http2/http2-http-client-transport = ${org.eclipse.jetty.version}
+/org.eclipse.jetty/jetty-alpn-client = ${org.eclipse.jetty.version}
+/org.eclipse.jetty/jetty-alpn-conscrypt-client = ${org.eclipse.jetty.version}
+/org.eclipse.jetty/jetty-alpn-conscrypt-server = ${org.eclipse.jetty.version}
+/org.eclipse.jetty/jetty-alpn-server = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-continuation = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-deploy = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-http = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-io = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-jmx = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-rewrite = ${org.eclipse.jetty.version}
+/org.eclipse.jetty/jetty-proxy = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-security = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-server = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-servlet = ${org.eclipse.jetty.version}
@@ -266,6 +276,7 @@ org.eclipse.jetty.version = 9.4.10.v20180503
 /org.eclipse.jetty/jetty-util = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-webapp = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-xml = ${org.eclipse.jetty.version}
+/org.eclipse.jetty/jetty-client = ${org.eclipse.jetty.version}
 
 org.gagravarr.vorbis.java.version = 0.8
 /org.gagravarr/vorbis-java-core = ${org.gagravarr.vorbis.java.version}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/lucene/tools/junit4/solr-tests.policy
----------------------------------------------------------------------
diff --git a/lucene/tools/junit4/solr-tests.policy b/lucene/tools/junit4/solr-tests.policy
index 1c46a78..1b810b0 100644
--- a/lucene/tools/junit4/solr-tests.policy
+++ b/lucene/tools/junit4/solr-tests.policy
@@ -76,6 +76,11 @@ grant {
   // SSL related properties for Solr tests
   permission java.security.SecurityPermission "getProperty.ssl.*";
   permission javax.net.ssl.SSLPermission "setDefaultSSLContext";
+  permission java.security.SecurityPermission "insertProvider.*";
+  permission java.security.SecurityPermission "putProviderProperty.*";
+  permission java.security.SecurityPermission "getProviderProperty.*";
+  permission java.security.SecurityPermission "getProperty.conscrypt.*";
+  permission java.security.SecurityPermission "putProperty.conscrypt.*";
 
   // SASL/Kerberos related properties for Solr tests
   permission javax.security.auth.PrivateCredentialPermission "javax.security.auth.kerberos.KerberosTicket * \"*\"", "read";

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/solr/benchmark/.gitignore
----------------------------------------------------------------------
diff --git a/solr/benchmark/.gitignore b/solr/benchmark/.gitignore
new file mode 100644
index 0000000..a20524a
--- /dev/null
+++ b/solr/benchmark/.gitignore
@@ -0,0 +1,2 @@
+/temp
+/work
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/solr/benchmark/build.xml
----------------------------------------------------------------------
diff --git a/solr/benchmark/build.xml b/solr/benchmark/build.xml
new file mode 100644
index 0000000..422eaa7
--- /dev/null
+++ b/solr/benchmark/build.xml
@@ -0,0 +1,86 @@
+<!--
+ 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.
+-->
+
+<project name="solr-benchmark" default="run-task" xmlns:ivy="antlib:org.apache.ivy.ant">
+  <description>
+    System for benchmarking Solr
+  </description>
+
+  <property name="build.dir" location="../build/solr-benchmark"/>
+  
+  <import file="../common-build.xml"/>
+
+  <available file="${common-solr.dir}/server/solr-webapp/webapp" property="abc.present"/>
+  
+  <path id="classpath">
+    <pathelement location="${build.dir}/classes/java" />
+    <pathelement location="${common-solr.dir}/../lucene/build/benchmark/classes/java" />
+    <pathelement location="${common-solr.dir}/../lucene/build/core/classes/java" />
+    <pathelement location="${common-solr.dir}/build/solr-solrj/classes/java" />
+    <pathelement location="${common-solr.dir}/build/solr-core/classes/java" />
+    <fileset dir="${common-solr.dir}/solrj/lib" excludes="${common.classpath.excludes}" />
+    <fileset dir="${common-solr.dir}/../lucene/benchmark/lib" excludes="${common.classpath.excludes}" erroronmissingdir="false" />
+  </path>
+  <path id="run.classpath">
+    <path refid="classpath" />
+    <pathelement location="${build.dir}/classes/java" />
+    <pathelement path="${benchmark.ext.classpath}" />
+  </path>
+  
+  <target name="server-if-needed" unless="abc.present">
+    <antcall target="server" />
+  </target>
+    
+  <target name="server">
+    <ant antfile="${common-solr.dir}/build.xml" target="server" useNativeBasedir="true" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties" />
+    </ant>
+  </target>
+
+  <target name="check-and-get-files">
+    <ant antfile="${common-solr.dir}/../lucene/benchmark/build.xml" inheritAll="false">
+      <target name="check-files"/>
+      <target name="get-files"/>
+    </ant>
+  </target>
+  
+  <target name="compile-solr">
+    <!-- running this target takes forever, so it's on the user currently to run this first and then to pick up changes
+    <ant antfile="${common-solr.dir}/../build.xml" target="server" useNativeBasedir="true" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    -->
+    <ant antfile="${common-solr.dir}/../lucene/benchmark/build.xml" target="compile" useNativeBasedir="true" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties" />
+    </ant>
+    <ant antfile="${common-solr.dir}/solrj/build.xml" target="compile" dir="../solrj" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties" />
+    </ant>
+  </target>
+
+  <target name="run-task" depends="compile-solr,compile,check-and-get-files,server-if-needed" description="Run compound penalty perf test (optional: -Dtask.alg=your-algorithm-file -Dtask.mem=java-max-mem)">
+    <echo>Working Directory: ${working.dir}</echo>
+    <java classname="org.apache.lucene.benchmark.byTask.Benchmark" maxmemory="${task.mem}" fork="true">
+      <syspropertyset> 
+        <propertyref builtin="commandline"/> 
+      </syspropertyset> 
+      <classpath refid="run.classpath" />
+      <arg file="${task.alg}" />
+    </java>
+  </target>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/solr/benchmark/conf/concurrent-vs-serial.alg
----------------------------------------------------------------------
diff --git a/solr/benchmark/conf/concurrent-vs-serial.alg b/solr/benchmark/conf/concurrent-vs-serial.alg
new file mode 100644
index 0000000..15a054a
--- /dev/null
+++ b/solr/benchmark/conf/concurrent-vs-serial.alg
@@ -0,0 +1,80 @@
+#/**
+# * 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.
+# */
+# -------------------------------------------------------------------------------------
+# multi val params are iterated by NewRound's, added to reports, start with column name.
+#
+
+
+alt.tasks.packages=org.apache.solr.benchmark.byTask.tasks
+log.step=5000
+
+docs.file=${docs.file:temp/enwiki-20070527-pages-articles.xml}
+content.source=${content.source:org.apache.lucene.benchmark.byTask.feeds.EnwikiContentSource}
+
+solr.server=solrserver:org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient:org.apache.solr.client.solrj.impl.HttpSolrClient
+solr.streaming.server.queue.size=10
+solr.streaming.server.threadcount=4
+
+solr.internal.server.xmx=1000m
+
+# for remote instance testing
+#solr.url=http://localhost:8901/solr
+
+#solr.configs.home=conf/solr/configs/filters
+#solr.schema=schema:schema_no_filter.xml
+
+solr.field.mappings=doctitle>title_txt_en,docid>id,docname>docname_txt_en,docdate>date_txt_en,docdatenum>datenum_txt_en,doctimesecnum>time_txt_en,body>body_txt_en
+
+query.maker=org.apache.lucene.benchmark.byTask.feeds.EnwikiQueryMaker
+
+# task at this depth or less would print when they start
+task.max.depth.log=2
+
+log.queries=false
+# -------------------------------------------------------------------------------------
+
+{ "Bench"
+
+    StopSolrServer
+    StartSolrServer(log)
+	
+	InitSolrBench
+
+  { "Rounds"
+
+    ResetSystemErase
+ 
+    SolrClearIndex
+    
+    {"AddDocs"
+      [ 
+          { "MAddDocs" SolrAddDoc > : 8000
+ 
+      ] : 1
+      { "BlockTillFinish" BlockSolrServerTillFinish >
+    }
+    
+	SolrCommit
+		
+    NewRound
+  } : 2
+  
+  StopSolrServer
+}
+
+
+RepSumByPrefRound AddDocs

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/solr/benchmark/ivy.xml
----------------------------------------------------------------------
diff --git a/solr/benchmark/ivy.xml b/solr/benchmark/ivy.xml
new file mode 100644
index 0000000..5cb8ccd
--- /dev/null
+++ b/solr/benchmark/ivy.xml
@@ -0,0 +1,28 @@
+<!--
+   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.    
+-->
+<ivy-module version="2.0">
+  <info organisation="org.apache.solr" module="benchmark"/>
+  <configurations defaultconfmapping="compile->master">
+    <conf name="compile" transitive="false"/>
+  </configurations>
+  <dependencies>
+    <dependency org="org.apache.commons" name="commons-compress" rev="${/org.apache.commons/commons-compress}" conf="compile"/>
+    <exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}"/> 
+  </dependencies>
+</ivy-module>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/74a9b54c/solr/benchmark/src/java/org/apache/solr/benchmark/byTask/tasks/BlockSolrServerTillFinishTask.java
----------------------------------------------------------------------
diff --git a/solr/benchmark/src/java/org/apache/solr/benchmark/byTask/tasks/BlockSolrServerTillFinishTask.java b/solr/benchmark/src/java/org/apache/solr/benchmark/byTask/tasks/BlockSolrServerTillFinishTask.java
new file mode 100644
index 0000000..c25786f
--- /dev/null
+++ b/solr/benchmark/src/java/org/apache/solr/benchmark/byTask/tasks/BlockSolrServerTillFinishTask.java
@@ -0,0 +1,47 @@
+/*
+ * 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.benchmark.byTask.tasks;
+
+import org.apache.lucene.benchmark.byTask.PerfRunData;
+import org.apache.lucene.benchmark.byTask.tasks.PerfTask;
+import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient;
+
+
+public class BlockSolrServerTillFinishTask extends PerfTask {
+
+  public BlockSolrServerTillFinishTask(PerfRunData runData) {
+    super(runData);
+  }
+
+
+  @Override
+  protected String getLogMessage(int recsCount) {
+    return "block solrserver till finished";
+  }
+  
+  @Override
+  public int doLogic() throws Exception {
+    SolrClient solrServer = (SolrClient) getRunData().getPerfObject("solr.client");
+    if (solrServer instanceof ConcurrentUpdateSolrClient) {
+      ((ConcurrentUpdateSolrClient)solrServer).blockUntilFinished();
+    }
+
+    return 1;
+  }
+  
+}
\ No newline at end of file


Mime
View raw message