You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by cp...@apache.org on 2024/03/01 13:24:51 UTC

(solr) branch jira/solr-13350 updated (026395805af -> cc04058c9f7)

This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a change to branch jira/solr-13350
in repository https://gitbox.apache.org/repos/asf/solr.git


    from 026395805af mark SolrIndexSearcher.SearchResult.result Object[] private
     new 34c7db09e08 tentative: replace ThreadSafeBitSet[Collector] with FixedBitSet[Collector]
     add b3c6212995a SOLR-16138: Throw when streaming and all cores are down (#784)
     add 2e0966062db SOLR-17017: Reset the collection as part of running the example when starting Solr... (#2261)
     add 9cdc8151419 Clean up docker-faq.adoc (#2277)
     add 5c69a1edf09 Introduce the "start" command in all the places where it used to be implicit and was omitted. (#2296)
     add 710c66b16ed SOLR-17163: Only load the films.json file when running the bin/solr start -e films (#2295)
     add 437144d2ad9 Remove the deprecated bin/post and bin/postlogs (#2282)
     add e7f3a79c63c Track changes
     add 0d9a1da0166 Link Solr Operator for learning on Solr in Kubernetes, and better exp… (#1114)
     add b1875958327 SOLR-17058: fix TestDistribIDF.testDisableDistribStats failure on LRUStatsCache (#2299)
     add c5709bd4135 SOLR-17066: Switch "LB" clients away from core URLs (#2283)
     add f63b937ec35 SOLR-16780: Prevent ZK subcommands from being run without the bin/solr zk prefix (#2297)
     add d3a5908517b SOLR-17181: Using apache commons implementation for wildcard matching for glob patterns (#2301)
     add bdd6ea69f09 SOLR-17156: introducing RandomNoReverseMergePolicyFactory (#2289)
     add 63bc62b5a2b Update dependency org.bitbucket.b_c:jose4j to v0.9.5 (#2306)
     add bead9bbaacb Describe in README how to build solr from source (#2294)
     add 627849d6b3c Update dependency com.jayway.jsonpath:json-path to v2.9.0 (#2222)
     add 146f9b03881 Update dependency org.apache.commons:commons-exec to v1.4.0 (#2181)
     add ccd5ede68bf SOLR-14410: switch from SysV to systemd service (#428)
     add d0ced20ab41 SOLR-15444 Document the SwedishMinimalStemmer (#380)
     add f7a5c5eeb20 Update org.slf4j:* to v2.0.12 (#2195)
     add 8209c322c3e Update dependency org.immutables:value-annotations to v2.10.1 (#2307)
     add a4b50868667 Update io.grpc:grpc-* to v1.61.1 (#2133)
     add 00e13338acc Update io.dropwizard.metrics:* to v4.2.25 (#2132)
     add 9fe6e1639a3 .github/workflows: clarify display name: gradle precommit--->check w/ Java 11 (#2089)
     add 77f994c5af9 SOLR-17184: Fixing sorting order of documents for comparison in PeerSyncTest to avoid random failures (#2317)
     add 2ff3dc61668 SOLR-17172: Add QueryLimits termination to existing heavy SearchComponent-s (#2290)
     add 8b9d924debe Update tutorial-five-minutes.adoc (#2319)
     add ede40a0eb1e Update org.eclipse.jetty*:* to v10.0.20 (#2267)
     add 8bfab45afa4 Tests: JettyConfig.Builder.sslConfig now self inits (#2318)
     new cc04058c9f7 Merge remote-tracking branch 'origin/main' into jira/solr-13350

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:
 .github/workflows/gradle-precommit.yml             |    2 +-
 README.md                                          |   23 +-
 dev-docs/running-in-docker.adoc                    |    6 +-
 solr/.gitattributes                                |    1 -
 solr/CHANGES.txt                                   |   14 +
 solr/bin/init.d/solr                               |   78 --
 solr/bin/install_solr_service.sh                   |   63 +-
 solr/bin/post                                      |  240 ----
 solr/bin/postlogs                                  |   37 -
 solr/bin/solr                                      |    6 +
 solr/bin/solr.cmd                                  |    2 +-
 solr/{.gitattributes => bin/systemd/solr.service}  |   49 +-
 .../src/java/org/apache/solr/cli/PostTool.java     |   22 +-
 .../java/org/apache/solr/cli/RunExampleTool.java   |   26 +-
 .../java/org/apache/solr/cli/SimplePostTool.java   | 1427 --------------------
 .../apache/solr/handler/MoreLikeThisHandler.java   |    3 +
 .../apache/solr/handler/RequestHandlerBase.java    |   10 +-
 .../solr/handler/component/ExpandComponent.java    |    8 +
 .../solr/handler/component/FacetComponent.java     |   13 +-
 .../solr/handler/component/HighlightComponent.java |    3 +
 .../handler/component/HttpShardHandlerFactory.java |    6 +-
 .../handler/component/MoreLikeThisComponent.java   |   10 +
 .../solr/handler/component/QueryComponent.java     |    7 +-
 .../solr/handler/component/ResponseBuilder.java    |    4 +-
 .../solr/handler/component/SearchHandler.java      |    9 +-
 .../handler/component/SpellCheckComponent.java     |   21 +-
 .../solr/handler/component/SuggestComponent.java   |   30 +-
 .../org/apache/solr/request/SolrRequestInfo.java   |    5 +-
 .../apache/solr/response/SolrQueryResponse.java    |   43 +-
 .../java/org/apache/solr/search/QueryLimits.java   |  104 +-
 .../solr/search/QueryLimitsExceededException.java  |   26 +
 .../org/apache/solr/search/SolrIndexSearcher.java  |   94 +-
 .../org/apache/solr/search/ThreadSafeBitSet.java   |  465 -------
 .../solr/search/ThreadSafeBitSetCollector.java     |   90 --
 .../org/apache/solr/search/facet/FacetModule.java  |    5 +-
 .../SearchGroupShardResponseProcessor.java         |    6 +-
 .../TopGroupsShardResponseProcessor.java           |    6 +-
 .../apache/solr/spelling/SpellCheckCollator.java   |    6 +
 .../java/org/apache/solr/util/TestInjection.java   |    4 +
 .../test/org/apache/solr/TestGroupingSearch.java   |   22 +-
 .../org/apache/solr/TestSolrCoreProperties.java    |    3 +-
 .../src/test/org/apache/solr/cli/PostToolTest.java |   62 +-
 .../org/apache/solr/cli/SimplePostToolTest.java    |  286 ----
 .../org/apache/solr/cli/TestSolrCLIRunExample.java |    2 +-
 .../cloud/ConcurrentCreateRoutedAliasTest.java     |    3 +-
 .../solr/cloud/NestedShardedAtomicUpdateTest.java  |    6 +
 .../org/apache/solr/cloud/SSLMigrationTest.java    |    2 +-
 .../solr/cloud/TestConfigSetsAPIExclusivity.java   |    3 +-
 .../solr/cloud/TestConfigSetsAPIZkFailure.java     |    3 +-
 .../apache/solr/cloud/TestRequestForwarding.java   |    3 +-
 .../cloud/TestWaitForStateWithJettyShutdowns.java  |    5 +-
 .../ConcurrentDeleteAndCreateCollectionTest.java   |    3 +-
 .../org/apache/solr/handler/JsonLoaderTest.java    |    6 +
 .../solr/handler/PingRequestHandlerTest.java       |    3 +-
 .../org/apache/solr/handler/V2StandaloneTest.java  |    3 +-
 .../solr/handler/admin/CoreAdminHandlerTest.java   |   10 +-
 .../solr/handler/admin/DaemonStreamApiTest.java    |    3 +-
 .../component/DistributedDebugComponentTest.java   |    2 +-
 .../solr/handler/component/SearchHandlerTest.java  |    7 +-
 .../component/TestHttpShardHandlerFactory.java     |    2 +-
 .../apache/solr/response/TestRawTransformer.java   |    3 +-
 .../transform/TestChildDocTransformer.java         |    6 +
 .../TestChildDocTransformerHierarchy.java          |    6 +
 .../solr/search/CallerSpecificQueryLimit.java      |  105 ++
 .../org/apache/solr/search/TestQueryLimits.java    |   92 ++
 .../facet/TestJsonFacetsWithNestedObjects.java     |    6 +
 .../org/apache/solr/search/join/BJQParserTest.java |    6 +
 .../solr/search/join/TestCloudNestedDocsSort.java  |    8 +-
 .../solr/search/join/TestNestedDocsSort.java       |    6 +
 .../join/another/BJQFilterAccessibleTest.java      |    6 +
 .../apache/solr/search/stats/TestDistribIDF.java   |   14 +-
 .../solr/security/BasicAuthStandaloneTest.java     |    4 +-
 .../org/apache/solr/update/AddBlockUpdateTest.java |    6 +
 .../solr/update/DeleteByIdWithRouterFieldTest.java |   17 +-
 .../test/org/apache/solr/update/PeerSyncTest.java  |    4 +-
 .../test/org/apache/solr/update/RootFieldTest.java |    7 +
 .../solr/update/TestNestedUpdateProcessor.java     |    6 +
 .../solr/update/processor/AtomicUpdatesTest.java   |    6 +
 .../update/processor/NestedAtomicUpdateTest.java   |    6 +
 solr/example/README.md                             |    4 +-
 solr/licenses/commons-exec-1.3.jar.sha1            |    1 -
 solr/licenses/commons-exec-1.4.0.jar.sha1          |    1 +
 solr/licenses/grpc-alts-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-alts-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-api-1.59.0.jar.sha1             |    1 -
 solr/licenses/grpc-api-1.61.1.jar.sha1             |    1 +
 solr/licenses/grpc-auth-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-auth-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-context-1.59.0.jar.sha1         |    1 -
 solr/licenses/grpc-context-1.61.1.jar.sha1         |    1 +
 solr/licenses/grpc-core-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-core-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-googleapis-1.59.0.jar.sha1      |    1 -
 solr/licenses/grpc-googleapis-1.61.1.jar.sha1      |    1 +
 solr/licenses/grpc-grpclb-1.59.0.jar.sha1          |    1 -
 solr/licenses/grpc-grpclb-1.61.1.jar.sha1          |    1 +
 solr/licenses/grpc-netty-1.59.0.jar.sha1           |    1 -
 solr/licenses/grpc-netty-1.61.1.jar.sha1           |    1 +
 solr/licenses/grpc-netty-shaded-1.59.0.jar.sha1    |    1 -
 solr/licenses/grpc-netty-shaded-1.61.1.jar.sha1    |    1 +
 solr/licenses/grpc-protobuf-1.59.0.jar.sha1        |    1 -
 solr/licenses/grpc-protobuf-1.61.1.jar.sha1        |    1 +
 solr/licenses/grpc-protobuf-lite-1.59.0.jar.sha1   |    1 -
 solr/licenses/grpc-protobuf-lite-1.61.1.jar.sha1   |    1 +
 solr/licenses/grpc-rls-1.59.0.jar.sha1             |    1 -
 solr/licenses/grpc-rls-1.61.1.jar.sha1             |    1 +
 solr/licenses/grpc-services-1.59.0.jar.sha1        |    1 -
 solr/licenses/grpc-services-1.61.1.jar.sha1        |    1 +
 solr/licenses/grpc-stub-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-stub-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-util-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-util-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-xds-1.59.0.jar.sha1             |    1 -
 solr/licenses/grpc-xds-1.61.1.jar.sha1             |    1 +
 solr/licenses/http2-client-10.0.19.jar.sha1        |    1 -
 solr/licenses/http2-client-10.0.20.jar.sha1        |    1 +
 solr/licenses/http2-common-10.0.19.jar.sha1        |    1 -
 solr/licenses/http2-common-10.0.20.jar.sha1        |    1 +
 solr/licenses/http2-hpack-10.0.19.jar.sha1         |    1 -
 solr/licenses/http2-hpack-10.0.20.jar.sha1         |    1 +
 .../http2-http-client-transport-10.0.19.jar.sha1   |    1 -
 .../http2-http-client-transport-10.0.20.jar.sha1   |    1 +
 solr/licenses/http2-server-10.0.19.jar.sha1        |    1 -
 solr/licenses/http2-server-10.0.20.jar.sha1        |    1 +
 solr/licenses/jcl-over-slf4j-2.0.10.jar.sha1       |    1 -
 solr/licenses/jcl-over-slf4j-2.0.11.jar.sha1       |    1 +
 solr/licenses/jcl-over-slf4j-2.0.12.jar.sha1       |    1 +
 solr/licenses/jetty-alpn-client-10.0.19.jar.sha1   |    1 -
 solr/licenses/jetty-alpn-client-10.0.20.jar.sha1   |    1 +
 .../jetty-alpn-java-client-10.0.19.jar.sha1        |    1 -
 .../jetty-alpn-java-client-10.0.20.jar.sha1        |    1 +
 .../jetty-alpn-java-server-10.0.19.jar.sha1        |    1 -
 .../jetty-alpn-java-server-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-alpn-server-10.0.19.jar.sha1   |    1 -
 solr/licenses/jetty-alpn-server-10.0.20.jar.sha1   |    1 +
 solr/licenses/jetty-client-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-client-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-deploy-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-deploy-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-http-10.0.19.jar.sha1          |    1 -
 solr/licenses/jetty-http-10.0.20.jar.sha1          |    1 +
 solr/licenses/jetty-io-10.0.19.jar.sha1            |    1 -
 solr/licenses/jetty-io-10.0.20.jar.sha1            |    1 +
 solr/licenses/jetty-jmx-10.0.19.jar.sha1           |    1 -
 solr/licenses/jetty-jmx-10.0.20.jar.sha1           |    1 +
 solr/licenses/jetty-rewrite-10.0.19.jar.sha1       |    1 -
 solr/licenses/jetty-rewrite-10.0.20.jar.sha1       |    1 +
 solr/licenses/jetty-security-10.0.19.jar.sha1      |    1 -
 solr/licenses/jetty-security-10.0.20.jar.sha1      |    1 +
 solr/licenses/jetty-server-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-server-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-servlet-10.0.19.jar.sha1       |    1 -
 solr/licenses/jetty-servlet-10.0.20.jar.sha1       |    1 +
 solr/licenses/jetty-servlets-10.0.19.jar.sha1      |    1 -
 solr/licenses/jetty-servlets-10.0.20.jar.sha1      |    1 +
 solr/licenses/jetty-start-10.0.19-shaded.jar.sha1  |    1 -
 solr/licenses/jetty-start-10.0.20-shaded.jar.sha1  |    1 +
 solr/licenses/jetty-util-10.0.19.jar.sha1          |    1 -
 solr/licenses/jetty-util-10.0.20.jar.sha1          |    1 +
 solr/licenses/jetty-webapp-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-webapp-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-xml-10.0.19.jar.sha1           |    1 -
 solr/licenses/jetty-xml-10.0.20.jar.sha1           |    1 +
 solr/licenses/jose4j-0.9.4.jar.sha1                |    1 -
 solr/licenses/jose4j-0.9.5.jar.sha1                |    1 +
 solr/licenses/json-path-2.8.0.jar.sha1             |    1 -
 solr/licenses/json-path-2.9.0.jar.sha1             |    1 +
 solr/licenses/jul-to-slf4j-2.0.10.jar.sha1         |    1 -
 solr/licenses/jul-to-slf4j-2.0.11.jar.sha1         |    1 +
 solr/licenses/jul-to-slf4j-2.0.12.jar.sha1         |    1 +
 solr/licenses/metrics-annotation-4.2.21.jar.sha1   |    1 -
 solr/licenses/metrics-annotation-4.2.25.jar.sha1   |    1 +
 solr/licenses/metrics-core-4.2.21.jar.sha1         |    1 -
 solr/licenses/metrics-core-4.2.25.jar.sha1         |    1 +
 solr/licenses/metrics-graphite-4.2.21.jar.sha1     |    1 -
 solr/licenses/metrics-graphite-4.2.25.jar.sha1     |    1 +
 solr/licenses/metrics-jetty10-4.2.21.jar.sha1      |    1 -
 solr/licenses/metrics-jetty10-4.2.25.jar.sha1      |    1 +
 solr/licenses/metrics-jmx-4.2.21.jar.sha1          |    1 -
 solr/licenses/metrics-jmx-4.2.25.jar.sha1          |    1 +
 solr/licenses/metrics-jvm-4.2.21.jar.sha1          |    1 -
 solr/licenses/metrics-jvm-4.2.25.jar.sha1          |    1 +
 .../proto-google-common-protos-2.24.0.jar.sha1     |    1 -
 .../proto-google-common-protos-2.29.0.jar.sha1     |    1 +
 solr/licenses/protobuf-java-3.24.0.jar.sha1        |    1 -
 solr/licenses/protobuf-java-3.25.1.jar.sha1        |    1 +
 solr/licenses/slf4j-api-2.0.10.jar.sha1            |    1 -
 solr/licenses/slf4j-api-2.0.11.jar.sha1            |    1 +
 solr/licenses/slf4j-api-2.0.12.jar.sha1            |    1 +
 solr/licenses/value-annotations-2.10.0.jar.sha1    |    1 -
 solr/licenses/value-annotations-2.10.1.jar.sha1    |    1 +
 .../handler/clustering/ClusteringComponent.java    |   10 +-
 .../hadoop/TestSolrCloudWithDelegationTokens.java  |    4 +-
 .../TestSolrCloudWithSecureImpersonation.java      |    4 +-
 .../org/apache/solr/ltr/TestLTROnSolrCloud.java    |    4 +-
 solr/packaging/build.gradle                        |    4 +-
 solr/packaging/test/test_postlogs.bats             |   12 -
 solr/packaging/test/test_zk.bats                   |    9 +-
 .../pages/configuring-solr-xml.adoc                |    2 +-
 .../pages/managed-resources.adoc                   |    2 +-
 .../pages/package-manager-internals.adoc           |    2 +-
 .../configuration-guide/pages/package-manager.adoc |    2 +-
 .../configuration-guide/pages/realtime-get.adoc    |    2 +-
 .../modules/deployment-guide/deployment-nav.adoc   |    1 -
 .../pages/collection-management.adoc               |    2 +-
 .../modules/deployment-guide/pages/docker-faq.adoc |  206 +--
 .../deployment-guide/pages/docker-networking.adoc  |  279 ----
 .../deployment-guide/pages/enabling-ssl.adoc       |    4 +-
 .../deployment-guide/pages/installing-solr.adoc    |    2 +-
 .../pages/kerberos-authentication-plugin.adoc      |    2 +-
 .../deployment-guide/pages/replica-management.adoc |    2 +-
 .../deployment-guide/pages/shard-management.adoc   |    2 +-
 .../deployment-guide/pages/solr-in-docker.adoc     |   55 +-
 .../modules/deployment-guide/pages/solrj.adoc      |   63 +-
 .../pages/taking-solr-to-production.adoc           |   55 +-
 .../pages/zookeeper-file-management.adoc           |    4 +-
 .../pages/zookeeper-utilities.adoc                 |    2 +-
 .../getting-started/pages/about-this-guide.adoc    |    2 +-
 .../pages/tutorial-five-minutes.adoc               |    4 +-
 .../getting-started/pages/tutorial-solrcloud.adoc  |    6 +-
 .../indexing-guide/pages/analysis-screen.adoc      |    2 +-
 .../indexing-guide/pages/language-analysis.adoc    |   16 +-
 .../indexing-guide/pages/luke-request-handler.adoc |    2 +-
 .../modules/indexing-guide/pages/post-tool.adoc    |    3 -
 .../modules/indexing-guide/pages/schema-api.adoc   |    2 +-
 .../query-guide/pages/common-query-parameters.adoc |   24 +-
 .../query-guide/pages/dismax-query-parser.adoc     |    2 +-
 .../query-guide/pages/edismax-query-parser.adoc    |    2 +-
 .../modules/query-guide/pages/faceting.adoc        |    2 +-
 .../pages/query-elevation-component.adoc           |    4 +-
 .../modules/query-guide/pages/result-grouping.adoc |    2 +-
 .../modules/query-guide/pages/spell-checking.adoc  |    2 +-
 .../modules/query-guide/pages/stats-component.adoc |    2 +-
 .../query-guide/pages/term-vector-component.adoc   |    2 +-
 .../modules/query-guide/pages/terms-component.adoc |    2 +-
 .../pages/major-changes-in-solr-10.adoc            |   11 +-
 .../client/solrj/io/stream/CloudSolrStream.java    |   16 +-
 .../client/solrj/io/stream/BadClusterTest.java     |  141 ++
 .../org/apache/solr/client/solrj/SolrQuery.java    |   23 +
 .../solr/client/solrj/impl/CloudSolrClient.java    |   48 +-
 .../impl/ConcurrentUpdateHttp2SolrClient.java      |   38 +
 .../solrj/impl/ConcurrentUpdateSolrClient.java     |   24 +-
 .../solr/client/solrj/impl/Http2SolrClient.java    |   15 +
 .../solr/client/solrj/impl/HttpSolrClient.java     |   51 +-
 .../solr/client/solrj/impl/LBHttp2SolrClient.java  |   74 +-
 .../solr/client/solrj/impl/LBHttpSolrClient.java   |  201 +--
 .../solr/client/solrj/impl/LBSolrClient.java       |  312 +++--
 .../solr/client/solrj/request/UpdateRequest.java   |   15 +-
 .../apache/solr/common/params/CommonParams.java    |    6 +
 .../apache/solr/common/util/GlobPatternUtil.java   |  163 ++-
 .../solr/client/solrj/TestLBHttp2SolrClient.java   |   47 +-
 .../solr/client/solrj/TestLBHttpSolrClient.java    |   23 +-
 .../client/solrj/impl/BasicHttpSolrClientTest.java |    1 -
 .../solrj/impl/CloudHttp2SolrClientTest.java       |    4 +-
 .../solrj/impl/CloudSolrClientCacheTest.java       |    2 +-
 .../client/solrj/impl/CloudSolrClientTest.java     |    4 +-
 ...oncurrentUpdateHttp2SolrClientBadInputTest.java |    4 +-
 .../impl/ConcurrentUpdateHttp2SolrClientTest.java  |    1 -
 .../ConcurrentUpdateSolrClientBadInputTest.java    |    4 +-
 .../solrj/impl/ConcurrentUpdateSolrClientTest.java |    5 +-
 .../solrj/impl/Http2SolrClientProxyTest.java       |    5 +-
 .../client/solrj/impl/Http2SolrClientTest.java     |    1 -
 .../solrj/impl/HttpSolrClientBadInputTest.java     |    4 +-
 .../solrj/impl/HttpSolrClientConPoolTest.java      |    7 +-
 .../client/solrj/impl/LBHttp2SolrClientTest.java   |    3 +-
 .../solrj/impl/LBHttpSolrClientBadInputTest.java   |    9 +-
 .../solrj/impl/LBHttpSolrClientBuilderTest.java    |   10 +-
 .../client/solrj/impl/LBHttpSolrClientTest.java    |    6 +-
 .../solr/client/solrj/impl/LBSolrClientTest.java   |  134 +-
 .../solrj/impl/TestCloudSolrClientConnections.java |    9 +-
 .../apache/solr/BaseDistributedSearchTestCase.java |    1 -
 .../java/org/apache/solr/SolrJettyTestBase.java    |   11 +-
 .../src/java/org/apache/solr/SolrTestCaseHS.java   |    7 +-
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   |    5 -
 .../solr/cloud/AbstractFullDistribZkTestBase.java  |    3 -
 .../apache/solr/cloud/MiniSolrCloudCluster.java    |    4 -
 .../java/org/apache/solr/embedded/JettyConfig.java |    4 +-
 .../org/apache/solr/util/RandomMergePolicy.java    |   11 +
 .../util/RandomNoReverseMergePolicyFactory.java    |   53 +
 .../org/apache/solr/util/SolrJettyTestRule.java    |    8 +-
 .../apache/solr/embedded/TestJettySolrRunner.java  |    2 +-
 versions.lock                                      |  116 +-
 versions.props                                     |   16 +-
 283 files changed, 2244 insertions(+), 4077 deletions(-)
 delete mode 100644 solr/bin/init.d/solr
 delete mode 100755 solr/bin/post
 delete mode 100755 solr/bin/postlogs
 copy solr/{.gitattributes => bin/systemd/solr.service} (52%)
 delete mode 100644 solr/core/src/java/org/apache/solr/cli/SimplePostTool.java
 create mode 100644 solr/core/src/java/org/apache/solr/search/QueryLimitsExceededException.java
 delete mode 100644 solr/core/src/java/org/apache/solr/search/ThreadSafeBitSet.java
 delete mode 100644 solr/core/src/java/org/apache/solr/search/ThreadSafeBitSetCollector.java
 delete mode 100644 solr/core/src/test/org/apache/solr/cli/SimplePostToolTest.java
 create mode 100644 solr/core/src/test/org/apache/solr/search/CallerSpecificQueryLimit.java
 create mode 100644 solr/core/src/test/org/apache/solr/search/TestQueryLimits.java
 delete mode 100644 solr/licenses/commons-exec-1.3.jar.sha1
 create mode 100644 solr/licenses/commons-exec-1.4.0.jar.sha1
 delete mode 100644 solr/licenses/grpc-alts-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-alts-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-api-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-api-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-auth-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-auth-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-context-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-context-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-core-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-core-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-googleapis-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-googleapis-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-grpclb-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-grpclb-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-netty-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-netty-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-netty-shaded-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-netty-shaded-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-protobuf-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-protobuf-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-protobuf-lite-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-protobuf-lite-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-rls-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-rls-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-services-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-services-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-stub-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-stub-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-util-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-util-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/grpc-xds-1.59.0.jar.sha1
 create mode 100644 solr/licenses/grpc-xds-1.61.1.jar.sha1
 delete mode 100644 solr/licenses/http2-client-10.0.19.jar.sha1
 create mode 100644 solr/licenses/http2-client-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/http2-common-10.0.19.jar.sha1
 create mode 100644 solr/licenses/http2-common-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/http2-hpack-10.0.19.jar.sha1
 create mode 100644 solr/licenses/http2-hpack-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/http2-http-client-transport-10.0.19.jar.sha1
 create mode 100644 solr/licenses/http2-http-client-transport-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/http2-server-10.0.19.jar.sha1
 create mode 100644 solr/licenses/http2-server-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jcl-over-slf4j-2.0.10.jar.sha1
 create mode 100644 solr/licenses/jcl-over-slf4j-2.0.11.jar.sha1
 create mode 100644 solr/licenses/jcl-over-slf4j-2.0.12.jar.sha1
 delete mode 100644 solr/licenses/jetty-alpn-client-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-alpn-client-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-alpn-java-client-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-alpn-java-client-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-alpn-java-server-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-alpn-java-server-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-alpn-server-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-alpn-server-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-client-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-client-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-deploy-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-deploy-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-http-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-http-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-io-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-io-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-jmx-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-jmx-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-rewrite-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-rewrite-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-security-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-security-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-server-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-server-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-servlet-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-servlet-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-servlets-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-servlets-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-start-10.0.19-shaded.jar.sha1
 create mode 100644 solr/licenses/jetty-start-10.0.20-shaded.jar.sha1
 delete mode 100644 solr/licenses/jetty-util-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-util-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-webapp-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-webapp-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jetty-xml-10.0.19.jar.sha1
 create mode 100644 solr/licenses/jetty-xml-10.0.20.jar.sha1
 delete mode 100644 solr/licenses/jose4j-0.9.4.jar.sha1
 create mode 100644 solr/licenses/jose4j-0.9.5.jar.sha1
 delete mode 100644 solr/licenses/json-path-2.8.0.jar.sha1
 create mode 100644 solr/licenses/json-path-2.9.0.jar.sha1
 delete mode 100644 solr/licenses/jul-to-slf4j-2.0.10.jar.sha1
 create mode 100644 solr/licenses/jul-to-slf4j-2.0.11.jar.sha1
 create mode 100644 solr/licenses/jul-to-slf4j-2.0.12.jar.sha1
 delete mode 100644 solr/licenses/metrics-annotation-4.2.21.jar.sha1
 create mode 100644 solr/licenses/metrics-annotation-4.2.25.jar.sha1
 delete mode 100644 solr/licenses/metrics-core-4.2.21.jar.sha1
 create mode 100644 solr/licenses/metrics-core-4.2.25.jar.sha1
 delete mode 100644 solr/licenses/metrics-graphite-4.2.21.jar.sha1
 create mode 100644 solr/licenses/metrics-graphite-4.2.25.jar.sha1
 delete mode 100644 solr/licenses/metrics-jetty10-4.2.21.jar.sha1
 create mode 100644 solr/licenses/metrics-jetty10-4.2.25.jar.sha1
 delete mode 100644 solr/licenses/metrics-jmx-4.2.21.jar.sha1
 create mode 100644 solr/licenses/metrics-jmx-4.2.25.jar.sha1
 delete mode 100644 solr/licenses/metrics-jvm-4.2.21.jar.sha1
 create mode 100644 solr/licenses/metrics-jvm-4.2.25.jar.sha1
 delete mode 100644 solr/licenses/proto-google-common-protos-2.24.0.jar.sha1
 create mode 100644 solr/licenses/proto-google-common-protos-2.29.0.jar.sha1
 delete mode 100644 solr/licenses/protobuf-java-3.24.0.jar.sha1
 create mode 100644 solr/licenses/protobuf-java-3.25.1.jar.sha1
 delete mode 100644 solr/licenses/slf4j-api-2.0.10.jar.sha1
 create mode 100644 solr/licenses/slf4j-api-2.0.11.jar.sha1
 create mode 100644 solr/licenses/slf4j-api-2.0.12.jar.sha1
 delete mode 100644 solr/licenses/value-annotations-2.10.0.jar.sha1
 create mode 100644 solr/licenses/value-annotations-2.10.1.jar.sha1
 delete mode 100644 solr/solr-ref-guide/modules/deployment-guide/pages/docker-networking.adoc
 create mode 100644 solr/solrj-streaming/src/test/org/apache/solr/client/solrj/io/stream/BadClusterTest.java
 create mode 100644 solr/test-framework/src/java/org/apache/solr/util/RandomNoReverseMergePolicyFactory.java


(solr) 01/02: tentative: replace ThreadSafeBitSet[Collector] with FixedBitSet[Collector]

Posted by cp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch jira/solr-13350
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 34c7db09e08693a79d87eaa6e43ad6f5aacbc342
Author: Christine Poerschke <cp...@apache.org>
AuthorDate: Fri Mar 1 13:20:32 2024 +0000

    tentative: replace ThreadSafeBitSet[Collector] with FixedBitSet[Collector]
---
 .../org/apache/solr/search/SolrIndexSearcher.java  |  73 ++--
 .../org/apache/solr/search/ThreadSafeBitSet.java   | 465 ---------------------
 .../solr/search/ThreadSafeBitSetCollector.java     |  90 ----
 3 files changed, 37 insertions(+), 591 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index bd78a7b8789..31220d2530b 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -2070,40 +2070,24 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
       int maxDoc = rawReader.maxDoc();
       log.error("raw read max={}", rawReader.maxDoc());
 
-      LeafSlice[] leaves = getSlices();
-      int[] docBase = new int[1];
-
-      //   DocSetCollector collector = new DocSetCollector(maxDoc);
-
-      ThreadSafeBitSet bits = new ThreadSafeBitSet(14, 2);
-
       collectors.add(
           new CollectorManager<>() {
             @Override
             public Collector newCollector() throws IOException {
-              int numDocs = 0;
-
-              if (leaves != null) {
-                LeafSlice leaf = leaves[docBase[0]++];
-
-                for (LeafReaderContext reader : leaf.leaves) {
-                  numDocs += reader.reader().maxDoc();
-                }
-              } else {
-                numDocs = maxDoc();
-              }
-              log.error("new docset collector for {} max={}", numDocs, maxDoc());
-
               // TODO: add to firstCollectors here? or if not have comment w.r.t. why not adding
-              return new ThreadSafeBitSetCollector(bits, maxDoc);
+              return new FixedBitSetCollector(maxDoc);
             }
 
             @Override
             @SuppressWarnings({"rawtypes"})
             public Object reduce(Collection collectors) throws IOException {
-
-              return new DocSetResult(
-                  ((ThreadSafeBitSetCollector) collectors.iterator().next()).getDocSet());
+              final FixedBitSet reduced = new FixedBitSet(maxDoc);
+              for (Object collector : collectors) {
+                if (collector instanceof FixedBitSetCollector) {
+                  reduced.or(((FixedBitSetCollector) collector).bitSet);
+                }
+              }
+              return reduced;
             }
           });
     }
@@ -2131,6 +2115,31 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     return new SearchResult(scoreMode, ret);
   }
 
+  static class FixedBitSetCollector extends SimpleCollector {
+    final FixedBitSet bitSet;
+
+    private int docBase;
+
+    FixedBitSetCollector(int maxDoc) {
+      this.bitSet = new FixedBitSet(maxDoc);
+    }
+
+    @Override
+    protected void doSetNextReader(LeafReaderContext context) throws IOException {
+      this.docBase = context.docBase;
+    }
+
+    @Override
+    public void collect(int doc) throws IOException {
+      this.bitSet.set(this.docBase + doc);
+    }
+
+    @Override
+    public ScoreMode scoreMode() {
+      return ScoreMode.COMPLETE_NO_SCORES;
+    }
+  }
+
   static class TopDocsResult {
     final TopDocs topDocs;
     final int totalHits;
@@ -2149,14 +2158,6 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     }
   }
 
-  static class DocSetResult {
-    final DocSet docSet;
-
-    public DocSetResult(DocSet docSet) {
-      this.docSet = docSet;
-    }
-  }
-
   static class SearchResult {
     final ScoreMode scoreMode;
     private final Object[] result;
@@ -2188,10 +2189,10 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
       }
     }
 
-    public DocSet getDocSet() {
+    public FixedBitSet getFixedBitSet() {
       for (Object res : result) {
-        if (res instanceof DocSetResult) {
-          return ((DocSetResult) res).docSet;
+        if (res instanceof FixedBitSet) {
+          return (FixedBitSet) res;
         }
       }
       return null;
@@ -2304,7 +2305,7 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
         totalHits = topDocsResult.totalHits;
         topDocs = topDocsResult.topDocs;
         maxScore = searchResult.getMaxScore(totalHits);
-        set = searchResult.getDocSet();
+        set = new BitDocSet(searchResult.getFixedBitSet());
 
         // TODO: Is this correct?
         // hitsRelation = populateScoresIfNeeded(cmd, needScores, topDocs, query,
diff --git a/solr/core/src/java/org/apache/solr/search/ThreadSafeBitSet.java b/solr/core/src/java/org/apache/solr/search/ThreadSafeBitSet.java
deleted file mode 100644
index 5285da44b9e..00000000000
--- a/solr/core/src/java/org/apache/solr/search/ThreadSafeBitSet.java
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- *  Copyright 2016-2019 Netflix, Inc.
- *
- *     Licensed 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.search;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.concurrent.atomic.AtomicLongArray;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * This is a lock-free, thread-safe version of a {@link java.util.BitSet}.
- *
- * <p>Instead of a long array to hold the bits, this implementation uses an AtomicLongArray, then
- * does the appropriate compare-and-swap operations when setting the bits.
- */
-public class ThreadSafeBitSet {
-
-  public static final int DEFAULT_LOG2_SEGMENT_SIZE_IN_BITS = 14;
-
-  private final int numLongsPerSegment;
-  private final int log2SegmentSize;
-  private final int segmentMask;
-  private final AtomicReference<ThreadSafeBitSetSegments> segments;
-
-  public ThreadSafeBitSet() {
-    this(DEFAULT_LOG2_SEGMENT_SIZE_IN_BITS); // / 16384 bits, 2048 bytes, 256 longs per segment
-  }
-
-  public ThreadSafeBitSet(int log2SegmentSizeInBits) {
-    this(log2SegmentSizeInBits, 0);
-  }
-
-  public ThreadSafeBitSet(int log2SegmentSizeInBits, int numBitsToPreallocate) {
-    if (log2SegmentSizeInBits < 6)
-      throw new IllegalArgumentException("Cannot specify fewer than 64 bits in each segment!");
-
-    this.log2SegmentSize = log2SegmentSizeInBits;
-    this.numLongsPerSegment = (1 << (log2SegmentSizeInBits - 6));
-    this.segmentMask = numLongsPerSegment - 1;
-
-    long numBitsPerSegment = ((long) numLongsPerSegment) * 64;
-    int numSegmentsToPreallocate =
-        numBitsToPreallocate == 0
-            ? 1
-            : (int) (((numBitsToPreallocate - 1) / numBitsPerSegment) + 1);
-
-    segments = new AtomicReference<ThreadSafeBitSetSegments>();
-    segments.set(new ThreadSafeBitSetSegments(numSegmentsToPreallocate, numLongsPerSegment));
-  }
-
-  public void set(int position) {
-    int segmentPosition =
-        position >>> log2SegmentSize; // / which segment -- div by num bits per segment
-    int longPosition =
-        (position >>> 6)
-            & segmentMask; /// which long in the segment -- remainder of div by num bits per segment
-    int bitPosition =
-        position & 0x3F; // / which bit in the long -- remainder of div by num bits in long (64)
-
-    AtomicLongArray segment = getSegment(segmentPosition);
-
-    long mask = 1L << bitPosition;
-
-    // Thread safety: we need to loop until we win the race to set the long value.
-    while (true) {
-      // determine what the new long value will be after we set the appropriate bit.
-      long currentLongValue = segment.get(longPosition);
-      long newLongValue = currentLongValue | mask;
-
-      // if no other thread has modified the value since we read it, we won the race and we are
-      // done.
-      if (segment.compareAndSet(longPosition, currentLongValue, newLongValue)) break;
-    }
-  }
-
-  public void clear(int position) {
-    int segmentPosition =
-        position >>> log2SegmentSize; // / which segment -- div by num bits per segment
-    int longPosition =
-        (position >>> 6)
-            & segmentMask; /// which long in the segment -- remainder of div by num bits per segment
-    int bitPosition =
-        position & 0x3F; // / which bit in the long -- remainder of div by num bits in long (64)
-
-    AtomicLongArray segment = getSegment(segmentPosition);
-
-    long mask = ~(1L << bitPosition);
-
-    // Thread safety: we need to loop until we win the race to set the long value.
-    while (true) {
-      // determine what the new long value will be after we set the appropriate bit.
-      long currentLongValue = segment.get(longPosition);
-      long newLongValue = currentLongValue & mask;
-
-      // if no other thread has modified the value since we read it, we won the race and we are
-      // done.
-      if (segment.compareAndSet(longPosition, currentLongValue, newLongValue)) break;
-    }
-  }
-
-  public boolean get(int position) {
-    int segmentPosition =
-        position >>> log2SegmentSize; // / which segment -- div by num bits per segment
-    int longPosition =
-        (position >>> 6)
-            & segmentMask; /// which long in the segment -- remainder of div by num bits per segment
-    int bitPosition =
-        position & 0x3F; // / which bit in the long -- remainder of div by num bits in long (64)
-
-    AtomicLongArray segment = getSegment(segmentPosition);
-
-    long mask = 1L << bitPosition;
-
-    return ((segment.get(longPosition) & mask) != 0);
-  }
-
-  public long maxSetBit() {
-    ThreadSafeBitSetSegments segments = this.segments.get();
-
-    int segmentIdx = segments.numSegments() - 1;
-
-    for (; segmentIdx >= 0; segmentIdx--) {
-      AtomicLongArray segment = segments.getSegment(segmentIdx);
-      for (int longIdx = segment.length() - 1; longIdx >= 0; longIdx--) {
-        long l = segment.get(longIdx);
-        if (l != 0)
-          return (segmentIdx << log2SegmentSize)
-              + (((long) longIdx) * 64)
-              + (63 - Long.numberOfLeadingZeros(l));
-      }
-    }
-
-    return -1;
-  }
-
-  public int nextSetBit(int fromIndex) {
-    if (fromIndex < 0) throw new IndexOutOfBoundsException("fromIndex < 0: " + fromIndex);
-
-    int segmentPosition =
-        fromIndex >>> log2SegmentSize; // / which segment -- div by num bits per segment
-
-    ThreadSafeBitSetSegments segments = this.segments.get();
-
-    if (segmentPosition >= segments.numSegments()) return -1;
-
-    int longPosition =
-        (fromIndex >>> 6)
-            & segmentMask; /// which long in the segment -- remainder of div by num bits per segment
-    int bitPosition =
-        fromIndex & 0x3F; // / which bit in the long -- remainder of div by num bits in long (64)
-    AtomicLongArray segment = segments.getSegment(segmentPosition);
-
-    long word = segment.get(longPosition) & (0xffffffffffffffffL << bitPosition);
-
-    while (true) {
-      if (word != 0)
-        return (segmentPosition << (log2SegmentSize))
-            + (longPosition << 6)
-            + Long.numberOfTrailingZeros(word);
-      if (++longPosition > segmentMask) {
-        segmentPosition++;
-        if (segmentPosition >= segments.numSegments()) return -1;
-        segment = segments.getSegment(segmentPosition);
-        longPosition = 0;
-      }
-
-      word = segment.get(longPosition);
-    }
-  }
-
-  /**
-   * @return the number of bits which are set in this bit set.
-   */
-  public int cardinality() {
-    ThreadSafeBitSetSegments segments = this.segments.get();
-
-    int numSetBits = 0;
-
-    for (int i = 0; i < segments.numSegments(); i++) {
-      AtomicLongArray segment = segments.getSegment(i);
-      for (int j = 0; j < segment.length(); j++) {
-        numSetBits += Long.bitCount(segment.get(j));
-      }
-    }
-
-    return numSetBits;
-  }
-
-  /**
-   * @return the number of bits which are current specified by this bit set. This is the maximum
-   *     value to which you might need to iterate, if you were to iterate over all bits in this set.
-   */
-  public int currentCapacity() {
-    return segments.get().numSegments() * (1 << log2SegmentSize);
-  }
-
-  /** Clear all bits to 0. */
-  public void clearAll() {
-    ThreadSafeBitSetSegments segments = this.segments.get();
-
-    for (int i = 0; i < segments.numSegments(); i++) {
-      AtomicLongArray segment = segments.getSegment(i);
-
-      for (int j = 0; j < segment.length(); j++) {
-        segment.set(j, 0L);
-      }
-    }
-  }
-
-  /**
-   * Return a new bit set which contains all bits which are contained in this bit set, and which are
-   * NOT contained in the <code>other</code> bit set.
-   *
-   * <p>In other words, return a new bit set, which is a bitwise and with the bitwise not of the
-   * other bit set.
-   *
-   * @param other the other bit set
-   * @return the resulting bit set
-   */
-  public ThreadSafeBitSet andNot(ThreadSafeBitSet other) {
-    if (other.log2SegmentSize != log2SegmentSize)
-      throw new IllegalArgumentException("Segment sizes must be the same");
-
-    ThreadSafeBitSetSegments thisSegments = this.segments.get();
-    ThreadSafeBitSetSegments otherSegments = other.segments.get();
-    ThreadSafeBitSetSegments newSegments =
-        new ThreadSafeBitSetSegments(thisSegments.numSegments(), numLongsPerSegment);
-
-    for (int i = 0; i < thisSegments.numSegments(); i++) {
-      AtomicLongArray thisArray = thisSegments.getSegment(i);
-      AtomicLongArray otherArray =
-          (i < otherSegments.numSegments()) ? otherSegments.getSegment(i) : null;
-      AtomicLongArray newArray = newSegments.getSegment(i);
-
-      for (int j = 0; j < thisArray.length(); j++) {
-        long thisLong = thisArray.get(j);
-        long otherLong = (otherArray == null) ? 0 : otherArray.get(j);
-
-        newArray.set(j, thisLong & ~otherLong);
-      }
-    }
-
-    ThreadSafeBitSet andNot = new ThreadSafeBitSet(log2SegmentSize);
-    andNot.segments.set(newSegments);
-    return andNot;
-  }
-
-  /**
-   * Return a new bit set which contains all bits which are contained in *any* of the specified bit
-   * sets.
-   *
-   * @param bitSets the other bit sets
-   * @return the resulting bit set
-   */
-  public static ThreadSafeBitSet orAll(ThreadSafeBitSet... bitSets) {
-    if (bitSets.length == 0) return new ThreadSafeBitSet();
-
-    int log2SegmentSize = bitSets[0].log2SegmentSize;
-    int numLongsPerSegment = bitSets[0].numLongsPerSegment;
-
-    ThreadSafeBitSetSegments segments[] = new ThreadSafeBitSetSegments[bitSets.length];
-    int maxNumSegments = 0;
-
-    for (int i = 0; i < bitSets.length; i++) {
-      if (bitSets[i].log2SegmentSize != log2SegmentSize)
-        throw new IllegalArgumentException("Segment sizes must be the same");
-
-      segments[i] = bitSets[i].segments.get();
-      if (segments[i].numSegments() > maxNumSegments) maxNumSegments = segments[i].numSegments();
-    }
-
-    ThreadSafeBitSetSegments newSegments =
-        new ThreadSafeBitSetSegments(maxNumSegments, numLongsPerSegment);
-
-    AtomicLongArray segment[] = new AtomicLongArray[segments.length];
-
-    for (int i = 0; i < maxNumSegments; i++) {
-      for (int j = 0; j < segments.length; j++) {
-        segment[j] = i < segments[j].numSegments() ? segments[j].getSegment(i) : null;
-      }
-
-      AtomicLongArray newSegment = newSegments.getSegment(i);
-
-      for (int j = 0; j < numLongsPerSegment; j++) {
-        long value = 0;
-        for (int k = 0; k < segments.length; k++) {
-          if (segment[k] != null) value |= segment[k].get(j);
-        }
-        newSegment.set(j, value);
-      }
-    }
-
-    ThreadSafeBitSet or = new ThreadSafeBitSet(log2SegmentSize);
-    or.segments.set(newSegments);
-    return or;
-  }
-
-  /**
-   * Get the segment at <code>segmentIndex</code>. If this segment does not yet exist, create it.
-   *
-   * @param segmentIndex the segment index
-   * @return the segment
-   */
-  private AtomicLongArray getSegment(int segmentIndex) {
-    ThreadSafeBitSetSegments visibleSegments = segments.get();
-
-    while (visibleSegments.numSegments() <= segmentIndex) {
-      /// Thread safety:  newVisibleSegments contains all of the segments from the currently visible
-      // segments, plus extra.
-      /// all of the segments in the currently visible segments are canonical and will not change.
-      ThreadSafeBitSetSegments newVisibleSegments =
-          new ThreadSafeBitSetSegments(visibleSegments, segmentIndex + 1, numLongsPerSegment);
-
-      /// because we are using a compareAndSet, if this thread "wins the race" and successfully sets
-      // this variable, then the segments
-      /// which are newly defined in newVisibleSegments become canonical.
-      if (segments.compareAndSet(visibleSegments, newVisibleSegments)) {
-        visibleSegments = newVisibleSegments;
-      } else {
-        /// If we "lose the race" and are growing the ThreadSafeBitSet segments larger,
-        /// then we will gather the new canonical sets from the update which we missed on the next
-        // iteration of this loop.
-        /// Newly defined segments in newVisibleSegments will be discarded, they do not get to
-        // become canonical.
-        visibleSegments = segments.get();
-      }
-    }
-
-    return visibleSegments.getSegment(segmentIndex);
-  }
-
-  private static class ThreadSafeBitSetSegments {
-
-    private final AtomicLongArray segments[];
-
-    private ThreadSafeBitSetSegments(int numSegments, int segmentLength) {
-      AtomicLongArray segments[] = new AtomicLongArray[numSegments];
-
-      for (int i = 0; i < numSegments; i++) {
-        segments[i] = new AtomicLongArray(segmentLength);
-      }
-
-      /// Thread safety: Because this.segments is final, the preceding operations in this
-      // constructor are guaranteed to be visible to any
-      /// other thread which accesses this.segments.
-      this.segments = segments;
-    }
-
-    private ThreadSafeBitSetSegments(
-        ThreadSafeBitSetSegments copyFrom, int numSegments, int segmentLength) {
-      AtomicLongArray segments[] = new AtomicLongArray[numSegments];
-
-      for (int i = 0; i < numSegments; i++) {
-        segments[i] =
-            i < copyFrom.numSegments()
-                ? copyFrom.getSegment(i)
-                : new AtomicLongArray(segmentLength);
-      }
-
-      /// see above re: thread-safety of this assignment
-      this.segments = segments;
-    }
-
-    public int numSegments() {
-      return segments.length;
-    }
-
-    public AtomicLongArray getSegment(int index) {
-      return segments[index];
-    }
-  }
-
-  public void serializeBitsTo(DataOutputStream os) throws IOException {
-    ThreadSafeBitSetSegments segments = this.segments.get();
-
-    os.writeInt(segments.numSegments() * numLongsPerSegment);
-
-    for (int i = 0; i < segments.numSegments(); i++) {
-      AtomicLongArray arr = segments.getSegment(i);
-
-      for (int j = 0; j < arr.length(); j++) {
-        os.writeLong(arr.get(j));
-      }
-    }
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (!(obj instanceof ThreadSafeBitSet)) return false;
-
-    ThreadSafeBitSet other = (ThreadSafeBitSet) obj;
-
-    if (other.log2SegmentSize != log2SegmentSize)
-      throw new IllegalArgumentException("Segment sizes must be the same");
-
-    ThreadSafeBitSetSegments thisSegments = this.segments.get();
-    ThreadSafeBitSetSegments otherSegments = other.segments.get();
-
-    for (int i = 0; i < thisSegments.numSegments(); i++) {
-      AtomicLongArray thisArray = thisSegments.getSegment(i);
-      AtomicLongArray otherArray =
-          (i < otherSegments.numSegments()) ? otherSegments.getSegment(i) : null;
-
-      for (int j = 0; j < thisArray.length(); j++) {
-        long thisLong = thisArray.get(j);
-        long otherLong = (otherArray == null) ? 0 : otherArray.get(j);
-
-        if (thisLong != otherLong) return false;
-      }
-    }
-
-    for (int i = thisSegments.numSegments(); i < otherSegments.numSegments(); i++) {
-      AtomicLongArray otherArray = otherSegments.getSegment(i);
-
-      for (int j = 0; j < otherArray.length(); j++) {
-        long l = otherArray.get(j);
-
-        if (l != 0) return false;
-      }
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = log2SegmentSize;
-    result = 31 * result + Arrays.hashCode(segments.get().segments);
-    return result;
-  }
-
-  /**
-   * @return a new BitSet with same bits set
-   */
-  public BitSet toBitSet() {
-    BitSet resultSet = new BitSet();
-    int ordinal = this.nextSetBit(0);
-    while (ordinal != -1) {
-      resultSet.set(ordinal);
-      ordinal = this.nextSetBit(ordinal + 1);
-    }
-    return resultSet;
-  }
-
-  @Override
-  public String toString() {
-    return toBitSet().toString();
-  }
-}
diff --git a/solr/core/src/java/org/apache/solr/search/ThreadSafeBitSetCollector.java b/solr/core/src/java/org/apache/solr/search/ThreadSafeBitSetCollector.java
deleted file mode 100644
index 426d3b64788..00000000000
--- a/solr/core/src/java/org/apache/solr/search/ThreadSafeBitSetCollector.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.search;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.search.Scorable;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.SimpleCollector;
-import org.apache.lucene.util.FixedBitSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/** */
-public class ThreadSafeBitSetCollector extends SimpleCollector {
-  private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  final ThreadSafeBitSet bits;
-  final int maxDoc;
-
-  int base;
-
-  public ThreadSafeBitSetCollector(ThreadSafeBitSet bits, int maxDoc) {
-    this.bits = bits;
-    this.maxDoc = maxDoc;
-  }
-
-  @Override
-  public void collect(int doc) throws IOException {
-
-    doc += base;
-    if (log.isErrorEnabled()) {
-      log.error("collect doc: {}, base: {}", doc, base, this);
-    }
-    bits.set(doc);
-  }
-
-  /** The number of documents that have been collected */
-  public int size() {
-    return maxDoc;
-  }
-
-  public DocSet getDocSet() {
-    log.error("Max Set Bit {}", bits.maxSetBit());
-
-    FixedBitSet fixedBitSet = new FixedBitSet(maxDoc + 1);
-    int cnt = 0;
-    int i = -1;
-    while (true) {
-      i = bits.nextSetBit(i + 1);
-      if (i == -1) {
-        break;
-      }
-      cnt++;
-      fixedBitSet.set(i);
-    }
-
-    return new BitDocSet(fixedBitSet, cnt);
-  }
-
-  @Override
-  public void setScorer(Scorable scorer) throws IOException {}
-
-  @Override
-  public ScoreMode scoreMode() {
-    return ScoreMode.COMPLETE_NO_SCORES;
-  }
-
-  @Override
-  protected void doSetNextReader(LeafReaderContext context) throws IOException {
-    this.base = context.docBase;
-    if (log.isErrorEnabled()) {
-      log.error("next reader base={}", base);
-    }
-  }
-}


(solr) 02/02: Merge remote-tracking branch 'origin/main' into jira/solr-13350

Posted by cp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch jira/solr-13350
in repository https://gitbox.apache.org/repos/asf/solr.git

commit cc04058c9f774a43365259f420a3ac7dd6c7cf75
Merge: 34c7db09e08 8bfab45afa4
Author: Christine Poerschke <cp...@apache.org>
AuthorDate: Fri Mar 1 13:22:21 2024 +0000

    Merge remote-tracking branch 'origin/main' into jira/solr-13350

 .github/workflows/gradle-precommit.yml             |    2 +-
 README.md                                          |   23 +-
 dev-docs/running-in-docker.adoc                    |    6 +-
 solr/.gitattributes                                |    1 -
 solr/CHANGES.txt                                   |   14 +
 solr/bin/init.d/solr                               |   78 --
 solr/bin/install_solr_service.sh                   |   63 +-
 solr/bin/post                                      |  240 ----
 solr/bin/postlogs                                  |   37 -
 solr/bin/solr                                      |    6 +
 solr/bin/solr.cmd                                  |    2 +-
 solr/{.gitattributes => bin/systemd/solr.service}  |   49 +-
 .../src/java/org/apache/solr/cli/PostTool.java     |   22 +-
 .../java/org/apache/solr/cli/RunExampleTool.java   |   26 +-
 .../java/org/apache/solr/cli/SimplePostTool.java   | 1427 --------------------
 .../apache/solr/handler/MoreLikeThisHandler.java   |    3 +
 .../apache/solr/handler/RequestHandlerBase.java    |   10 +-
 .../solr/handler/component/ExpandComponent.java    |    8 +
 .../solr/handler/component/FacetComponent.java     |   13 +-
 .../solr/handler/component/HighlightComponent.java |    3 +
 .../handler/component/HttpShardHandlerFactory.java |    6 +-
 .../handler/component/MoreLikeThisComponent.java   |   10 +
 .../solr/handler/component/QueryComponent.java     |    7 +-
 .../solr/handler/component/ResponseBuilder.java    |    4 +-
 .../solr/handler/component/SearchHandler.java      |    9 +-
 .../handler/component/SpellCheckComponent.java     |   21 +-
 .../solr/handler/component/SuggestComponent.java   |   30 +-
 .../org/apache/solr/request/SolrRequestInfo.java   |    5 +-
 .../apache/solr/response/SolrQueryResponse.java    |   43 +-
 .../java/org/apache/solr/search/QueryLimits.java   |  104 +-
 .../solr/search/QueryLimitsExceededException.java  |   26 +
 .../org/apache/solr/search/SolrIndexSearcher.java  |   21 +-
 .../org/apache/solr/search/facet/FacetModule.java  |    5 +-
 .../SearchGroupShardResponseProcessor.java         |    6 +-
 .../TopGroupsShardResponseProcessor.java           |    6 +-
 .../apache/solr/spelling/SpellCheckCollator.java   |    6 +
 .../java/org/apache/solr/util/TestInjection.java   |    4 +
 .../test/org/apache/solr/TestGroupingSearch.java   |   22 +-
 .../org/apache/solr/TestSolrCoreProperties.java    |    3 +-
 .../src/test/org/apache/solr/cli/PostToolTest.java |   62 +-
 .../org/apache/solr/cli/SimplePostToolTest.java    |  286 ----
 .../org/apache/solr/cli/TestSolrCLIRunExample.java |    2 +-
 .../cloud/ConcurrentCreateRoutedAliasTest.java     |    3 +-
 .../solr/cloud/NestedShardedAtomicUpdateTest.java  |    6 +
 .../org/apache/solr/cloud/SSLMigrationTest.java    |    2 +-
 .../solr/cloud/TestConfigSetsAPIExclusivity.java   |    3 +-
 .../solr/cloud/TestConfigSetsAPIZkFailure.java     |    3 +-
 .../apache/solr/cloud/TestRequestForwarding.java   |    3 +-
 .../cloud/TestWaitForStateWithJettyShutdowns.java  |    5 +-
 .../ConcurrentDeleteAndCreateCollectionTest.java   |    3 +-
 .../org/apache/solr/handler/JsonLoaderTest.java    |    6 +
 .../solr/handler/PingRequestHandlerTest.java       |    3 +-
 .../org/apache/solr/handler/V2StandaloneTest.java  |    3 +-
 .../solr/handler/admin/CoreAdminHandlerTest.java   |   10 +-
 .../solr/handler/admin/DaemonStreamApiTest.java    |    3 +-
 .../component/DistributedDebugComponentTest.java   |    2 +-
 .../solr/handler/component/SearchHandlerTest.java  |    7 +-
 .../component/TestHttpShardHandlerFactory.java     |    2 +-
 .../apache/solr/response/TestRawTransformer.java   |    3 +-
 .../transform/TestChildDocTransformer.java         |    6 +
 .../TestChildDocTransformerHierarchy.java          |    6 +
 .../solr/search/CallerSpecificQueryLimit.java      |  105 ++
 .../org/apache/solr/search/TestQueryLimits.java    |   92 ++
 .../facet/TestJsonFacetsWithNestedObjects.java     |    6 +
 .../org/apache/solr/search/join/BJQParserTest.java |    6 +
 .../solr/search/join/TestCloudNestedDocsSort.java  |    8 +-
 .../solr/search/join/TestNestedDocsSort.java       |    6 +
 .../join/another/BJQFilterAccessibleTest.java      |    6 +
 .../apache/solr/search/stats/TestDistribIDF.java   |   14 +-
 .../solr/security/BasicAuthStandaloneTest.java     |    4 +-
 .../org/apache/solr/update/AddBlockUpdateTest.java |    6 +
 .../solr/update/DeleteByIdWithRouterFieldTest.java |   17 +-
 .../test/org/apache/solr/update/PeerSyncTest.java  |    4 +-
 .../test/org/apache/solr/update/RootFieldTest.java |    7 +
 .../solr/update/TestNestedUpdateProcessor.java     |    6 +
 .../solr/update/processor/AtomicUpdatesTest.java   |    6 +
 .../update/processor/NestedAtomicUpdateTest.java   |    6 +
 solr/example/README.md                             |    4 +-
 solr/licenses/commons-exec-1.3.jar.sha1            |    1 -
 solr/licenses/commons-exec-1.4.0.jar.sha1          |    1 +
 solr/licenses/grpc-alts-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-alts-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-api-1.59.0.jar.sha1             |    1 -
 solr/licenses/grpc-api-1.61.1.jar.sha1             |    1 +
 solr/licenses/grpc-auth-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-auth-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-context-1.59.0.jar.sha1         |    1 -
 solr/licenses/grpc-context-1.61.1.jar.sha1         |    1 +
 solr/licenses/grpc-core-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-core-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-googleapis-1.59.0.jar.sha1      |    1 -
 solr/licenses/grpc-googleapis-1.61.1.jar.sha1      |    1 +
 solr/licenses/grpc-grpclb-1.59.0.jar.sha1          |    1 -
 solr/licenses/grpc-grpclb-1.61.1.jar.sha1          |    1 +
 solr/licenses/grpc-netty-1.59.0.jar.sha1           |    1 -
 solr/licenses/grpc-netty-1.61.1.jar.sha1           |    1 +
 solr/licenses/grpc-netty-shaded-1.59.0.jar.sha1    |    1 -
 solr/licenses/grpc-netty-shaded-1.61.1.jar.sha1    |    1 +
 solr/licenses/grpc-protobuf-1.59.0.jar.sha1        |    1 -
 solr/licenses/grpc-protobuf-1.61.1.jar.sha1        |    1 +
 solr/licenses/grpc-protobuf-lite-1.59.0.jar.sha1   |    1 -
 solr/licenses/grpc-protobuf-lite-1.61.1.jar.sha1   |    1 +
 solr/licenses/grpc-rls-1.59.0.jar.sha1             |    1 -
 solr/licenses/grpc-rls-1.61.1.jar.sha1             |    1 +
 solr/licenses/grpc-services-1.59.0.jar.sha1        |    1 -
 solr/licenses/grpc-services-1.61.1.jar.sha1        |    1 +
 solr/licenses/grpc-stub-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-stub-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-util-1.59.0.jar.sha1            |    1 -
 solr/licenses/grpc-util-1.61.1.jar.sha1            |    1 +
 solr/licenses/grpc-xds-1.59.0.jar.sha1             |    1 -
 solr/licenses/grpc-xds-1.61.1.jar.sha1             |    1 +
 solr/licenses/http2-client-10.0.19.jar.sha1        |    1 -
 solr/licenses/http2-client-10.0.20.jar.sha1        |    1 +
 solr/licenses/http2-common-10.0.19.jar.sha1        |    1 -
 solr/licenses/http2-common-10.0.20.jar.sha1        |    1 +
 solr/licenses/http2-hpack-10.0.19.jar.sha1         |    1 -
 solr/licenses/http2-hpack-10.0.20.jar.sha1         |    1 +
 .../http2-http-client-transport-10.0.19.jar.sha1   |    1 -
 .../http2-http-client-transport-10.0.20.jar.sha1   |    1 +
 solr/licenses/http2-server-10.0.19.jar.sha1        |    1 -
 solr/licenses/http2-server-10.0.20.jar.sha1        |    1 +
 solr/licenses/jcl-over-slf4j-2.0.10.jar.sha1       |    1 -
 solr/licenses/jcl-over-slf4j-2.0.11.jar.sha1       |    1 +
 solr/licenses/jcl-over-slf4j-2.0.12.jar.sha1       |    1 +
 solr/licenses/jetty-alpn-client-10.0.19.jar.sha1   |    1 -
 solr/licenses/jetty-alpn-client-10.0.20.jar.sha1   |    1 +
 .../jetty-alpn-java-client-10.0.19.jar.sha1        |    1 -
 .../jetty-alpn-java-client-10.0.20.jar.sha1        |    1 +
 .../jetty-alpn-java-server-10.0.19.jar.sha1        |    1 -
 .../jetty-alpn-java-server-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-alpn-server-10.0.19.jar.sha1   |    1 -
 solr/licenses/jetty-alpn-server-10.0.20.jar.sha1   |    1 +
 solr/licenses/jetty-client-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-client-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-deploy-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-deploy-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-http-10.0.19.jar.sha1          |    1 -
 solr/licenses/jetty-http-10.0.20.jar.sha1          |    1 +
 solr/licenses/jetty-io-10.0.19.jar.sha1            |    1 -
 solr/licenses/jetty-io-10.0.20.jar.sha1            |    1 +
 solr/licenses/jetty-jmx-10.0.19.jar.sha1           |    1 -
 solr/licenses/jetty-jmx-10.0.20.jar.sha1           |    1 +
 solr/licenses/jetty-rewrite-10.0.19.jar.sha1       |    1 -
 solr/licenses/jetty-rewrite-10.0.20.jar.sha1       |    1 +
 solr/licenses/jetty-security-10.0.19.jar.sha1      |    1 -
 solr/licenses/jetty-security-10.0.20.jar.sha1      |    1 +
 solr/licenses/jetty-server-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-server-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-servlet-10.0.19.jar.sha1       |    1 -
 solr/licenses/jetty-servlet-10.0.20.jar.sha1       |    1 +
 solr/licenses/jetty-servlets-10.0.19.jar.sha1      |    1 -
 solr/licenses/jetty-servlets-10.0.20.jar.sha1      |    1 +
 solr/licenses/jetty-start-10.0.19-shaded.jar.sha1  |    1 -
 solr/licenses/jetty-start-10.0.20-shaded.jar.sha1  |    1 +
 solr/licenses/jetty-util-10.0.19.jar.sha1          |    1 -
 solr/licenses/jetty-util-10.0.20.jar.sha1          |    1 +
 solr/licenses/jetty-webapp-10.0.19.jar.sha1        |    1 -
 solr/licenses/jetty-webapp-10.0.20.jar.sha1        |    1 +
 solr/licenses/jetty-xml-10.0.19.jar.sha1           |    1 -
 solr/licenses/jetty-xml-10.0.20.jar.sha1           |    1 +
 solr/licenses/jose4j-0.9.4.jar.sha1                |    1 -
 solr/licenses/jose4j-0.9.5.jar.sha1                |    1 +
 solr/licenses/json-path-2.8.0.jar.sha1             |    1 -
 solr/licenses/json-path-2.9.0.jar.sha1             |    1 +
 solr/licenses/jul-to-slf4j-2.0.10.jar.sha1         |    1 -
 solr/licenses/jul-to-slf4j-2.0.11.jar.sha1         |    1 +
 solr/licenses/jul-to-slf4j-2.0.12.jar.sha1         |    1 +
 solr/licenses/metrics-annotation-4.2.21.jar.sha1   |    1 -
 solr/licenses/metrics-annotation-4.2.25.jar.sha1   |    1 +
 solr/licenses/metrics-core-4.2.21.jar.sha1         |    1 -
 solr/licenses/metrics-core-4.2.25.jar.sha1         |    1 +
 solr/licenses/metrics-graphite-4.2.21.jar.sha1     |    1 -
 solr/licenses/metrics-graphite-4.2.25.jar.sha1     |    1 +
 solr/licenses/metrics-jetty10-4.2.21.jar.sha1      |    1 -
 solr/licenses/metrics-jetty10-4.2.25.jar.sha1      |    1 +
 solr/licenses/metrics-jmx-4.2.21.jar.sha1          |    1 -
 solr/licenses/metrics-jmx-4.2.25.jar.sha1          |    1 +
 solr/licenses/metrics-jvm-4.2.21.jar.sha1          |    1 -
 solr/licenses/metrics-jvm-4.2.25.jar.sha1          |    1 +
 .../proto-google-common-protos-2.24.0.jar.sha1     |    1 -
 .../proto-google-common-protos-2.29.0.jar.sha1     |    1 +
 solr/licenses/protobuf-java-3.24.0.jar.sha1        |    1 -
 solr/licenses/protobuf-java-3.25.1.jar.sha1        |    1 +
 solr/licenses/slf4j-api-2.0.10.jar.sha1            |    1 -
 solr/licenses/slf4j-api-2.0.11.jar.sha1            |    1 +
 solr/licenses/slf4j-api-2.0.12.jar.sha1            |    1 +
 solr/licenses/value-annotations-2.10.0.jar.sha1    |    1 -
 solr/licenses/value-annotations-2.10.1.jar.sha1    |    1 +
 .../handler/clustering/ClusteringComponent.java    |   10 +-
 .../hadoop/TestSolrCloudWithDelegationTokens.java  |    4 +-
 .../TestSolrCloudWithSecureImpersonation.java      |    4 +-
 .../org/apache/solr/ltr/TestLTROnSolrCloud.java    |    4 +-
 solr/packaging/build.gradle                        |    4 +-
 solr/packaging/test/test_postlogs.bats             |   12 -
 solr/packaging/test/test_zk.bats                   |    9 +-
 .../pages/configuring-solr-xml.adoc                |    2 +-
 .../pages/managed-resources.adoc                   |    2 +-
 .../pages/package-manager-internals.adoc           |    2 +-
 .../configuration-guide/pages/package-manager.adoc |    2 +-
 .../configuration-guide/pages/realtime-get.adoc    |    2 +-
 .../modules/deployment-guide/deployment-nav.adoc   |    1 -
 .../pages/collection-management.adoc               |    2 +-
 .../modules/deployment-guide/pages/docker-faq.adoc |  206 +--
 .../deployment-guide/pages/docker-networking.adoc  |  279 ----
 .../deployment-guide/pages/enabling-ssl.adoc       |    4 +-
 .../deployment-guide/pages/installing-solr.adoc    |    2 +-
 .../pages/kerberos-authentication-plugin.adoc      |    2 +-
 .../deployment-guide/pages/replica-management.adoc |    2 +-
 .../deployment-guide/pages/shard-management.adoc   |    2 +-
 .../deployment-guide/pages/solr-in-docker.adoc     |   55 +-
 .../modules/deployment-guide/pages/solrj.adoc      |   63 +-
 .../pages/taking-solr-to-production.adoc           |   55 +-
 .../pages/zookeeper-file-management.adoc           |    4 +-
 .../pages/zookeeper-utilities.adoc                 |    2 +-
 .../getting-started/pages/about-this-guide.adoc    |    2 +-
 .../pages/tutorial-five-minutes.adoc               |    4 +-
 .../getting-started/pages/tutorial-solrcloud.adoc  |    6 +-
 .../indexing-guide/pages/analysis-screen.adoc      |    2 +-
 .../indexing-guide/pages/language-analysis.adoc    |   16 +-
 .../indexing-guide/pages/luke-request-handler.adoc |    2 +-
 .../modules/indexing-guide/pages/post-tool.adoc    |    3 -
 .../modules/indexing-guide/pages/schema-api.adoc   |    2 +-
 .../query-guide/pages/common-query-parameters.adoc |   24 +-
 .../query-guide/pages/dismax-query-parser.adoc     |    2 +-
 .../query-guide/pages/edismax-query-parser.adoc    |    2 +-
 .../modules/query-guide/pages/faceting.adoc        |    2 +-
 .../pages/query-elevation-component.adoc           |    4 +-
 .../modules/query-guide/pages/result-grouping.adoc |    2 +-
 .../modules/query-guide/pages/spell-checking.adoc  |    2 +-
 .../modules/query-guide/pages/stats-component.adoc |    2 +-
 .../query-guide/pages/term-vector-component.adoc   |    2 +-
 .../modules/query-guide/pages/terms-component.adoc |    2 +-
 .../pages/major-changes-in-solr-10.adoc            |   11 +-
 .../client/solrj/io/stream/CloudSolrStream.java    |   16 +-
 .../client/solrj/io/stream/BadClusterTest.java     |  141 ++
 .../org/apache/solr/client/solrj/SolrQuery.java    |   23 +
 .../solr/client/solrj/impl/CloudSolrClient.java    |   48 +-
 .../impl/ConcurrentUpdateHttp2SolrClient.java      |   38 +
 .../solrj/impl/ConcurrentUpdateSolrClient.java     |   24 +-
 .../solr/client/solrj/impl/Http2SolrClient.java    |   15 +
 .../solr/client/solrj/impl/HttpSolrClient.java     |   51 +-
 .../solr/client/solrj/impl/LBHttp2SolrClient.java  |   74 +-
 .../solr/client/solrj/impl/LBHttpSolrClient.java   |  201 +--
 .../solr/client/solrj/impl/LBSolrClient.java       |  312 +++--
 .../solr/client/solrj/request/UpdateRequest.java   |   15 +-
 .../apache/solr/common/params/CommonParams.java    |    6 +
 .../apache/solr/common/util/GlobPatternUtil.java   |  163 ++-
 .../solr/client/solrj/TestLBHttp2SolrClient.java   |   47 +-
 .../solr/client/solrj/TestLBHttpSolrClient.java    |   23 +-
 .../client/solrj/impl/BasicHttpSolrClientTest.java |    1 -
 .../solrj/impl/CloudHttp2SolrClientTest.java       |    4 +-
 .../solrj/impl/CloudSolrClientCacheTest.java       |    2 +-
 .../client/solrj/impl/CloudSolrClientTest.java     |    4 +-
 ...oncurrentUpdateHttp2SolrClientBadInputTest.java |    4 +-
 .../impl/ConcurrentUpdateHttp2SolrClientTest.java  |    1 -
 .../ConcurrentUpdateSolrClientBadInputTest.java    |    4 +-
 .../solrj/impl/ConcurrentUpdateSolrClientTest.java |    5 +-
 .../solrj/impl/Http2SolrClientProxyTest.java       |    5 +-
 .../client/solrj/impl/Http2SolrClientTest.java     |    1 -
 .../solrj/impl/HttpSolrClientBadInputTest.java     |    4 +-
 .../solrj/impl/HttpSolrClientConPoolTest.java      |    7 +-
 .../client/solrj/impl/LBHttp2SolrClientTest.java   |    3 +-
 .../solrj/impl/LBHttpSolrClientBadInputTest.java   |    9 +-
 .../solrj/impl/LBHttpSolrClientBuilderTest.java    |   10 +-
 .../client/solrj/impl/LBHttpSolrClientTest.java    |    6 +-
 .../solr/client/solrj/impl/LBSolrClientTest.java   |  134 +-
 .../solrj/impl/TestCloudSolrClientConnections.java |    9 +-
 .../apache/solr/BaseDistributedSearchTestCase.java |    1 -
 .../java/org/apache/solr/SolrJettyTestBase.java    |   11 +-
 .../src/java/org/apache/solr/SolrTestCaseHS.java   |    7 +-
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   |    5 -
 .../solr/cloud/AbstractFullDistribZkTestBase.java  |    3 -
 .../apache/solr/cloud/MiniSolrCloudCluster.java    |    4 -
 .../java/org/apache/solr/embedded/JettyConfig.java |    4 +-
 .../org/apache/solr/util/RandomMergePolicy.java    |   11 +
 .../util/RandomNoReverseMergePolicyFactory.java    |   53 +
 .../org/apache/solr/util/SolrJettyTestRule.java    |    8 +-
 .../apache/solr/embedded/TestJettySolrRunner.java  |    2 +-
 versions.lock                                      |  116 +-
 versions.props                                     |   16 +-
 281 files changed, 2207 insertions(+), 3486 deletions(-)