diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 4bfb7b7f4cfe..de16f5034dbe 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -35,3 +35,6 @@ c99af207c761ec34812ef1cc3054eb2804b7448b # Gradle reformat PR #4037 92792f735615c1f628da6cf7fa408f29ca1f7485 + +# SOLR-18296 [google java formatter applied] +b0d9ce0e7005a6dd782fe95046c27623397a40f4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cc055fa48f2..2238be45abc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,69 +13,266 @@ This file lists Solr's raw release notes with details of every change to Solr. M [unreleased] ------------ -### Added (12 changes) +### Added (44 changes) +- New SolrJ CollectionScopedSolrClient [PR#4418](https://github.com/apache/solr/pull/4418) (David Smiley) +- Add V2 "System Info" API and SolrJ request 'SystemApi.GetNodeSystemInfo' [PR#4078](https://github.com/apache/solr/pull/4078) (Isabelle Giguère) - Create new v2 APIs for listing and reading collection properties ("collprops") [SOLR-12224](https://issues.apache.org/jira/browse/SOLR-12224) (Jason Gerlowski) +- Introduce new `DoubleRangeField` field type for storing and querying double-based ranges [SOLR-13309](https://issues.apache.org/jira/browse/SOLR-13309) (Jason Gerlowski) +- Introduce new `FloatRangeField` field type for storing and querying float-based ranges [SOLR-13309](https://issues.apache.org/jira/browse/SOLR-13309) (Jason Gerlowski) +- Introduce new `IntRangeField` field type and (experimental) `{!numericRange}` query parser for storing and querying integer ranges. [SOLR-13309](https://issues.apache.org/jira/browse/SOLR-13309) (Jason Gerlowski) +- Introduce new `LongRangeField` field type and (experimental) `{!numericRange}` query parser for storing and querying long ranges [SOLR-13309](https://issues.apache.org/jira/browse/SOLR-13309) (Jason Gerlowski) +- The {!parent} and {!child} query parsers now support a parentPath local param that automatically derives the correct parent filter using the _nest_path_ field, making nested document queries easier to write correctly. childPath is also added. [SOLR-14687](https://issues.apache.org/jira/browse/SOLR-14687) (David Smiley) (hossman) +- Add ConfigSets.Download and ConfigSets.GetFile to SolrJ [SOLR-15701](https://issues.apache.org/jira/browse/SOLR-15701) (Eric Pugh) +- SolrJ now offers a SolrRequest class allowing users to perform v2 single-node healthchecks: NodeApi.Healthcheck [SOLR-16458](https://issues.apache.org/jira/browse/SOLR-16458) (Eric Pugh) (Jason Gerlowski) - Introduce new SolrJ SolrRequest classes for metrics and "system info" requests. [SOLR-17136](https://issues.apache.org/jira/browse/SOLR-17136) (Isabelle Giguère) (Pierre Salagnac) -- New CombinedQuerySearchHandler etc. for implementing hybrid search with reciprocal rank fusion (RRF). [SOLR-17319](https://issues.apache.org/jira/browse/SOLR-17319) (Sonu Sharma) (David Smiley) +- New CombinedQuerySearchHandler etc. for implementing hybrid search with reciprocal rank fusion (RRF). [SOLR-17319](https://issues.apache.org/jira/browse/SOLR-17319) [SOLR-18290](https://issues.apache.org/jira/browse/SOLR-18290) (Sonu Sharma) (David Smiley) - Create a v2 equivalent for /admin/metrics [SOLR-17436](https://issues.apache.org/jira/browse/SOLR-17436) (Isabelle Giguère) - Introducing support for nested vector search, enabling the retrieval of nested documents diversified by parent. This enables multi valued vectors scenarios and best child retrieval per parent. [SOLR-17736](https://issues.apache.org/jira/browse/SOLR-17736) (Alessandro Benedetti) +- SOLR 17845 - Implement OAuth support in new UI [SOLR-17845](https://issues.apache.org/jira/browse/SOLR-17845) ([Christos Malliaridis](https://home.apache.org/phonebook.html?uid=malliaridis) @malliaridis) +- SOLR 17845 - Implement Configset Creation and Importing in New UI [SOLR-17924](https://issues.apache.org/jira/browse/SOLR-17924) [PR#4166](https://github.com/apache/solr/pull/4166) (Christos Malliaridis @malliaridis) +- Optimize re-ranking based on "functions" [SOLR-17951](https://issues.apache.org/jira/browse/SOLR-17951) (hossman) +- Add alwaysStopwords option to edismax so its "all stopwords" behaviour can be controlled [SOLR-17959](https://issues.apache.org/jira/browse/SOLR-17959) (Andy Webb) - New StrFloatLateInteractionVectorField suitable for re-ranking documents using multi-vector values for late interaction models [SOLR-17975](https://issues.apache.org/jira/browse/SOLR-17975) (hossman) - Added new ConcurrentUpdateJdkSolrClient that works with HttpJdkSolrClient [SOLR-18065](https://issues.apache.org/jira/browse/SOLR-18065) (James Dyer) - Support including stored fields in Export Writer output. [SOLR-18071](https://issues.apache.org/jira/browse/SOLR-18071) (Luke Kot-Zaniewski) - Introducing support for multi valued dense vector representation in documents through nested vectors [SOLR-18074](https://issues.apache.org/jira/browse/SOLR-18074) (Alessandro Benedetti) -- CoreAdmin API (/admin/cores?action=UPGRADEINDEX) to upgrade an index in-place [SOLR-18096](https://issues.apache.org/jira/browse/SOLR-18096) (Rahul Goswami) +- Add top-level "queries" support to JsonQueryRequest in SolrJ [SOLR-18093](https://issues.apache.org/jira/browse/SOLR-18093) (Sonu Sharma @ercsonusharma) +- Provide NoOpRequestWriter and NoOpRequestHandler that can be used to disable implicitly configured equivalents. [SOLR-18095](https://issues.apache.org/jira/browse/SOLR-18095) (Eric Pugh) +- CoreAdmin API (/admin/cores?action=UPGRADECOREINDEX) to upgrade an index in-place [SOLR-18096](https://issues.apache.org/jira/browse/SOLR-18096) (Rahul Goswami) +- Script creating a cluster using bin/solr start -e cloud with --prompt-inputs option. [SOLR-18118](https://issues.apache.org/jira/browse/SOLR-18118) (Eric Pugh) (Rahul Goswami) +- Add --solr-connection option to Solr CLI tools, enabling HTTP(S)-based communication without requiring direct ZooKeeper access [SOLR-18130](https://issues.apache.org/jira/browse/SOLR-18130) (vyatkin.v) +- Add HTTP(S)-based SolrCloud connection support for the Solr SQL JDBC driver [SOLR-18130](https://issues.apache.org/jira/browse/SOLR-18130) (vyatkin.v) +- Add 'solrConnection' parameter to cross-collection joins in the Join Query Parser, expanding use to HTTP based SolrCloud coordinates. [SOLR-18130](https://issues.apache.org/jira/browse/SOLR-18130) (vyatkin.v) +- Added solrConnection param to solrj-streaming module, expanding use to HTTP based SolrCloud coordinates. zkHost is deprecated. [SOLR-18130](https://issues.apache.org/jira/browse/SOLR-18130) (vyatkin.v) +- Added a universal connection string (ZK/HTTP) to CloudSolrClient.Builder [SOLR-18130](https://issues.apache.org/jira/browse/SOLR-18130) (Vladimir Vyatkin) +- Add new metric jvm_system_memory_bytes [SOLR-18159](https://issues.apache.org/jira/browse/SOLR-18159) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) (Matthew Biscocho) +- New ContentHashVersionProcessor to avoid index churn when adding same-content documents. [SOLR-18189](https://issues.apache.org/jira/browse/SOLR-18189) (Francois Huaulme) (David Smiley) +- Support for using {!collapse} with CombinedQueryComponent (RRF) [SOLR-18195](https://issues.apache.org/jira/browse/SOLR-18195) (Sonu Sharma @ercsonusharma) +- Support 'missing' stats count in rollup function for streaming expressions [SOLR-18198](https://issues.apache.org/jira/browse/SOLR-18198) (khushjain) +- Support 'countDist' (count distinct) metric in rollup for streaming expressions [SOLR-18220](https://issues.apache.org/jira/browse/SOLR-18220) (khushjain) +- Support 'percentile' (per) metric in rollup for streaming expressions [SOLR-18221](https://issues.apache.org/jira/browse/SOLR-18221) (khushjain) +- Add `name` local parameter support and `MatchedQueriesComponent` to identify which named sub-queries matched each document. [SOLR-18227](https://issues.apache.org/jira/browse/SOLR-18227) (Dmitrii Tikhonov) +- Optional reRankCutoff field returned in responseHeader. Used to return main sort value(s) from the lowest ranked document eligible for inclusion in rerank. [SOLR-18245](https://issues.apache.org/jira/browse/SOLR-18245) (Darren Shaw @shawdm) +- Support for using Query Elevation with CombinedQueryComponent (RRF) [SOLR-18271](https://issues.apache.org/jira/browse/SOLR-18271) (Sonu Sharma @ercsonusharma) +- Luke handler now aggregates results across multiple shards and does this by default in SolrCloud mode. [SOLR-8127](https://issues.apache.org/jira/browse/SOLR-8127) (Luke Kot-Zaniewski) - CrossDC Consumer - add Prometheus metrics [SOLR-18060](https://issues.apache.org/jira/browse/SOLR-18060) (Andrzej Bialecki @ab) +- CrossDC Consumer: add /health endpoint [SOLR-18061](https://issues.apache.org/jira/browse/SOLR-18061) (Andrzej Bialecki @ab) - CrossDC - support arbitrary Kafka properties [SOLR-18062](https://issues.apache.org/jira/browse/SOLR-18062) (Andrzej Bialecki @ab) -### Changed (2 changes) +### Changed (22 changes) -- Add alwaysStopwords option to edismax so its "all stopwords" behaviour can be controlled #17959 [SOLR-17959](https://issues.apache.org/jira/browse/SOLR-17959) (Andy Webb) +- Dropdowns for collection/core, for fields on the schema-page and for field-types on the analyze page are now using a contains-filtering [GITHUB#4121](https://github.com/apache/solr/pull/4121) (Renato Haeberli) +- Refactor of the language-model module to accomodate new upcoming LLM oriented features avoiding code duplication. [PR#4375](https://github.com/apache/solr/pull/4375) (Nicolò Rinaldi) (Anna Ruggero) (Alessandro benedetti) +- add percentage and threshold based minimum match functionality, as we know it from ExtendedDismaxQParser, to BoolQParserPlugin [PR#4406](https://github.com/apache/solr/pull/4406) (Renato Haeberli) +- HttpSolrClient: made error messages more consistent, avoiding complaining about the content-type when it's text/html [PR#4526](https://github.com/apache/solr/pull/4526) (David Smiley) +- Parallelize Backup and Restore File Operations [SOLR-1092](https://issues.apache.org/jira/browse/SOLR-1092) (Samuel Verstraete @elangelo) (David Smiley @dsmiley) +- VersionTool (bin/solr version) now reports remote server version when `--solr-url` is provided [SOLR-17318](https://issues.apache.org/jira/browse/SOLR-17318) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) +- QueryRequest.java in SolrJ no longer sends the 'qt' parameter to the server. [SOLR-17715](https://issues.apache.org/jira/browse/SOLR-17715) [PR#4397](https://github.com/apache/solr/pull/4397) (r4mercur @r4mercur) +- HttpJdkSolrClient & HttpJettySolrClient now send headers that enable Solr's rate limiting to work. [SOLR-17810](https://issues.apache.org/jira/browse/SOLR-17810) (David Smiley) (Gaurav Tuli) - CloudSolrClient/LBSolrClient should consider a retry-able request that times out as another condition to internally mark that replica as a "zombie". [SOLR-18002](https://issues.apache.org/jira/browse/SOLR-18002) (James Vanneman) - -### Fixed (9 changes) - +- Add solr.cloud.delete.unknown.cores.enabled setting for removing unknown but existing core data when a core is created in SolrCloud mode. [SOLR-18008](https://issues.apache.org/jira/browse/SOLR-18008) (Eric Pugh) (David Smiley) +- Improved CloudSolrClient's http/https (SSL) detection by using the scheme of provided Solr URLs, or looking at the "solr.ssl.enabled" system property. Likewise improved Solr itself to consider this property as an alternative to the urlScheme cluster property. [SOLR-18056](https://issues.apache.org/jira/browse/SOLR-18056) [SOLR-18055](https://issues.apache.org/jira/browse/SOLR-18055) (Vishnu Priya Chandra Sekar) +- Optimize the size of the internal buffer of JavaBin codec to reduce the number of allocations. This reduces GC pressure on SolrJ client under high indexing load. [SOLR-18157](https://issues.apache.org/jira/browse/SOLR-18157) (Pierre Salagnac) +- Complete dot-separated metric name migration [SOLR-18165](https://issues.apache.org/jira/browse/SOLR-18165) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) +- Use dot-separated OTel metric names for OTLP export. This is a back-compat break from version 10.0 [SOLR-18165](https://issues.apache.org/jira/browse/SOLR-18165) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) (Matthew Biscocho) +- Increased query throughput by removing a call to ZooKeeper for cluster state that should have been cached. Happens when Solr does distributed search over multiple collections, and when the coordinator has no local replica for some of them. [SOLR-18176](https://issues.apache.org/jira/browse/SOLR-18176) [SOLR-15352](https://issues.apache.org/jira/browse/SOLR-15352) (Matthew Biscocho) +- Move cluster concepts into Getting Started in Ref Guide [SOLR-18179](https://issues.apache.org/jira/browse/SOLR-18179) (Eric Pugh) +- Fix nested docs detection false positive [SOLR-18194](https://issues.apache.org/jira/browse/SOLR-18194) (Luke Kot-Zaniewski) +- JWT Authentication `blockUnknown` now defaults to `true`, blocking unauthenticated requests by default. Previously the code defaulted to `false` despite the reference guide documenting `true`. Users relying on pass-through must explicitly set `blockUnknown` to `false` in their security.json. [SOLR-18215](https://issues.apache.org/jira/browse/SOLR-18215) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) +- Restore -c option as a no-op to bin/solr start script to simplify scripts that interact with both Solr 10 and previous versions of Solr. [SOLR-18269](https://issues.apache.org/jira/browse/SOLR-18269) (Eric Pugh) +- Change JettySolrRunner's use of GracefulHandler to be opt-in [SOLR-18285](https://issues.apache.org/jira/browse/SOLR-18285) (hossman) +- Allow locked Admin APIs to call other locked AdminAPIs. These locked Admin APIs can only call other APIs on the same resource tree (Collection > Shard > Replica) to protect against deadlocks. [SOLR-18011](https://issues.apache.org/jira/browse/SOLR-18011) (Houston Putman @HoustonPutman) +- CrossDC Producer - add more detailed metrics. [SOLR-18064](https://issues.apache.org/jira/browse/SOLR-18064) (Andrzej Bialecki @ab) + +### Fixed (47 changes) + +- Fix getFirstLiveDoc so it returns the first live doc. Previously it would often return nothing resulting in missing index flags in /admin/luke response. [SOLR-18125](https://issues.apache.org/jira/browse/SOLR-18125) (Luke Kot-Zaniewski) +- using window.location.origin rather than hard coded URL [PR#4281](https://github.com/apache/solr/pull/4281) (Renato Haeberli) +- Filestore metadata API no longer returns HTTP 500 when a file is deleted concurrently with a metadata read; the response now matches the not-found case (null entry). [PR#4367](https://github.com/apache/solr/pull/4367) (Eric Pugh) +- Refactor the tests of the language-model module to accomodate new upcoming LLM oriented features avoiding code duplication. [PR#4419](https://github.com/apache/solr/pull/4419) (Nicolò Rinaldi) (Anna Ruggero) (Alessandro benedetti) +- HttpJettySolrClient could throw IllegalStateException on connection lost, which foiled LBSolrClient's attempts to classify a request as retry-able. [PR#4490](https://github.com/apache/solr/pull/4490) (David Smiley) +- Support blank/zero-byte files in configset zip uploads [SOLR-16341](https://issues.apache.org/jira/browse/SOLR-16341) (Eric Pugh) - Fix disk space check in shard split operation [SOLR-17437](https://issues.apache.org/jira/browse/SOLR-17437) (Matthew Biscocho) (David Smiley) +- SOLR-17549 - v2 SolrRequest/SolrResponse classes now report errors identically to their v1 counterparts [SOLR-17549](https://issues.apache.org/jira/browse/SOLR-17549) (Jason Gerlowski) +- SolrMetricsContext is now reliably closed (once), and thus some components possessing one are too. Fixes double-close of OTEL, yielding warnings. [SOLR-17857](https://issues.apache.org/jira/browse/SOLR-17857) (David Smiley) (Houston Putman) - OTEL metrics - SplitShardCmd.checkDiskSpace needs conversion [SOLR-17955](https://issues.apache.org/jira/browse/SOLR-17955) (Matthew Biscocho) (David Smiley) +- SOLR-17973: Fix `shards.preference` not respected for cross-collection join queries [SOLR-17973](https://issues.apache.org/jira/browse/SOLR-17973) (khushjain) - Fix the Text to Vector Managed Model Store Initialization in LLM Module [SOLR-17999](https://issues.apache.org/jira/browse/SOLR-17999) (Ilaria Petreti) (Alessandro Benedetti) - Solr response writing now correctly delegates to FieldType implementations to determine how internal binary field values are represented externally [SOLR-18033](https://issues.apache.org/jira/browse/SOLR-18033) (hossman) - Improve HttpJettySolrClient.requestAsync (used in sharded/distributed-search and more) to increase throughput and prevent a rare deadlock. [SOLR-18051](https://issues.apache.org/jira/browse/SOLR-18051) (James Vanneman) +- V2 APIs now properly respect the hideStackTrace config setting [SOLR-18066](https://issues.apache.org/jira/browse/SOLR-18066) (Utsav Parmar) - JWT Authentication plugin now supports matching non-string claims such as boolean [SOLR-18073](https://issues.apache.org/jira/browse/SOLR-18073) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) (Tony Panza) +- Fix replication failure for files with exact MB sizes [SOLR-18098](https://issues.apache.org/jira/browse/SOLR-18098) (Shubham Ranjan) +- The /admin/info/logging endpoint (or just a tests) could yield partial logging hierarchies after log4j was upgraded. It should now be robust. [SOLR-18107](https://issues.apache.org/jira/browse/SOLR-18107) (David Smiley) +- Improve footer UI of Solr Cloud - Graph when you have large numbers of collections. Plus code refactor. [SOLR-18113](https://issues.apache.org/jira/browse/SOLR-18113) (Eric Pugh) +- Fixed CloudSolrClient deleteById failure when routing info is not passed with compositeId router, router.field, and directUpdatesToLeadersOnly enabled [SOLR-18114](https://issues.apache.org/jira/browse/SOLR-18114) (Matthew Biscocho) +- Fix ArrayStoreException when combining rerank with sort under multi-threaded segment-parallel search [SOLR-18136](https://issues.apache.org/jira/browse/SOLR-18136) (Shiming Li) +- CloudSolrClient- fixed state refresh race; didn't refresh. Regression from 9.10.1/10.0. [SOLR-18142](https://issues.apache.org/jira/browse/SOLR-18142) (David Smiley) +- Fix race conditions in "global" CircuitBreaker registration [SOLR-18146](https://issues.apache.org/jira/browse/SOLR-18146) (Jason Gerlowski) +- Fixed file upload in the Documents tab of Admin UI. [SOLR-18153](https://issues.apache.org/jira/browse/SOLR-18153) (Eric Pugh) +- Abort shard leader election if container shutdown sequence has started, so we don't have leaders elected very late and not properly closed. [SOLR-18155](https://issues.apache.org/jira/browse/SOLR-18155) (Pierre Salagnac) +- Fix ClassCastException when using join queries with query-limits (like timeAllowed) [SOLR-18156](https://issues.apache.org/jira/browse/SOLR-18156) (hossman) +- Solr 9 to 10 upgrade: old JWT property solr.auth.jwt.allowOutboundHttp set via SOLR_OPTS now correctly maps to solr.auth.jwt.outbound.http.enabled, fixing a startup failure when connecting to an HTTP identity provider. [SOLR-18167](https://issues.apache.org/jira/browse/SOLR-18167) (Utsav Parmar) +- Add validation for configset names at API layer in line with what Admin UI enforces. [SOLR-18170](https://issues.apache.org/jira/browse/SOLR-18170) (Eric Pugh) +- solr-test-framework isn't usable outside Solr, a 10.0 regression. [SOLR-18092](https://issues.apache.org/jira/browse/SOLR-18092) (Dawid Weiss) (David Smiley) (Eric Pugh) (hossman) +- Fix semaphore permit leaks in HttpJettySolrClient's AsyncTracker. Avoid IO-thread deadlock on connection failure retries. Add a new metric gauge solr.http.client.async_permits [SOLR-18174](https://issues.apache.org/jira/browse/SOLR-18174) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) +- Published POMs now include resolved dependency versions, fixing ambiguous/missing version problems. [SOLR-18185](https://issues.apache.org/jira/browse/SOLR-18185) (David Smiley) +- Fixed Admin UI to use max heap (-Xmx) value instead of committed heap to compute heap used percentage. [SOLR-18186](https://issues.apache.org/jira/browse/SOLR-18186) (Ravi Ranjan Jha) +- Fix for GPU vector indexing silently falling back to using CPU instead [SOLR-18210](https://issues.apache.org/jira/browse/SOLR-18210) (Rahul Goswami) +- Strengthen Basic Authentication password policy (password must differ from username) and harden template users created by bin/solr auth enable. The check can be temporarily disabled with -Dsolr.security.auth.basicauth.allowuseraspassword=true (env SOLR_SECURITY_AUTH_BASICAUTH_ALLOWUSERASPASSWORD) as an upgrade escape hatch. [SOLR-18233](https://issues.apache.org/jira/browse/SOLR-18233) (Jan Høydahl) +- Avoid OOMs when deserializing collection states by not copying full data for UTF8 to Java string conversion. [SOLR-18237](https://issues.apache.org/jira/browse/SOLR-18237) (Pierre Salagnac) +- Fixed NPE in size estimator for null valued fields [SOLR-18239](https://issues.apache.org/jira/browse/SOLR-18239) (Jalaz Kumar) +- Fix several concurrency bugs in HttpShardHandler / ParallelHttpShardHandler that could cause search threads to hang in take() or return HTTP 500 instead of honoring shards.tolerant under thread-pool saturation [SOLR-18244](https://issues.apache.org/jira/browse/SOLR-18244) (Mark Miller) +- Solr Admin UI properly supports multiple facet.field parameters [SOLR-18246](https://issues.apache.org/jira/browse/SOLR-18246) (Umut Saribiyik) +- LoadAverageCircuitBreaker now caches its sampled value for a short TTL, so it stops re-polling the OS load average per request at high RPS. [SOLR-18284](https://issues.apache.org/jira/browse/SOLR-18284) (Mark Robert Miller) +- MemoryCircuitBreaker now measures post-GC live heap data, so it no longer trips when the heap is full of collectible garbage. Earlier versions sampled MemoryMXBean.getHeapMemoryUsage().getUsed() on a 30-second moving average (6 samples), which trends toward max between collections during normal operation; if you tuned a threshold against that behavior you may need to revisit it. This breaks subclasses of MemoryCircuitBreaker: the deprecated MemoryCircuitBreaker(int, int) constructor is removed, and the protected getAvgMemoryUsage() hook is renamed to getCurrentMemoryUsage() (it no longer averages anything). The now-unused public AveragingMetricProvider class is also removed. [SOLR-18284](https://issues.apache.org/jira/browse/SOLR-18284) (Mark Robert Miller) +- Support repeated parents.preFilter values in nested vector knn queries [SOLR-18039](https://issues.apache.org/jira/browse/SOLR-18039) (Arup Chauhan @arup-chauhan) +- Don't buffer updates on replicas without update log (e.g. PULL). #17231 [SOLR-17231](https://issues.apache.org/jira/browse/SOLR-17231) (Andrzej Bialecki) +- Fix error scenario in InstallShardData and Restore [SOLR-17821](https://issues.apache.org/jira/browse/SOLR-17821) (Houston Putman @HoustonPutman) - SOLR-18063 - NPE when resubmitting to DLQ [SOLR-18063](https://issues.apache.org/jira/browse/SOLR-18063) (Andrzej Bialecki @ab) +- CrossDC Consumer: fix potential out-of-order Kafka partition processing [SOLR-18077](https://issues.apache.org/jira/browse/SOLR-18077) (Andrzej Bialecki @ab) - ShardRequestTracker now indexes Admin API results by node and replica rather than just node. This fixes situations where multiple sub-requests are sent to a single node. [SOLR-18081](https://issues.apache.org/jira/browse/SOLR-18081) (Houston Putman @HoustonPutman) - Fix operational issues with readOnly collections, such as restarting SolrNodes and replicating from the leader. [SOLR-18083](https://issues.apache.org/jira/browse/SOLR-18083) (Houston Putman @HoustonPutman) -### Removed (5 changes) +### Removed (18 changes) - Remove deprecated streamFunctions in GraphHandler for registering streaming expressions. [PR#4100](https://github.com/apache/solr/pull/4100) (Eric Pugh) +- Remove gosu from the Docker image. The Solr Docker image no longer installs the gosu binary. [SOLR-17353](https://issues.apache.org/jira/browse/SOLR-17353) (Jan Høydahl) +- Remove Dropwizard Metrics as a *direct* Solr dependency. The `OVERSEERSTATUS` response no longer includes per-operation timing metrics, albeit the counters `requests` and `errors` remain. Users needing per-operation timing can use distributed tracing as a substitute. Nonetheless, Solr still includes dropwizard-metrics for embedding ZooKeeper. [SOLR-17855](https://issues.apache.org/jira/browse/SOLR-17855) (Matthew Biscocho) (Eric Pugh) (David Smiley) - Remove deprecated DirectSolrConnection use [SOLR-17933](https://issues.apache.org/jira/browse/SOLR-17933) (Eric Pugh) +- Remove deprecated LocalSolrQueryRequest in favour of SolrQueryRequestBase. [SOLR-18038](https://issues.apache.org/jira/browse/SOLR-18038) (Eric Pugh) - Remove deprecated EmbeddedSolrServerTestBase from test-framework, tests updated to use EmbeddedSolrServerTestRule. [SOLR-18067](https://issues.apache.org/jira/browse/SOLR-18067) (Eric Pugh) - Removed the wt=standard concept that was used internally by Solr. [SOLR-18085](https://issues.apache.org/jira/browse/SOLR-18085) (Eric Pugh) -- Remove Request ID based tracing. #17934 [SOLR-17934](https://issues.apache.org/jira/browse/SOLR-17934) (Eric Pugh) - -### Dependency Upgrades (8 changes) - +- Remove deprecated hiddenSysProps setting under "metrics" in solr.xml. It remains a standard top level config setting. [SOLR-18103](https://issues.apache.org/jira/browse/SOLR-18103) (Eric Pugh) +- Remove deprecated StandardRequestHandler in favor of SearchHandler [SOLR-18105](https://issues.apache.org/jira/browse/SOLR-18105) (Eric Pugh) +- Remove the deprecated getRequestUrl method from AuditEvent [SOLR-18108](https://issues.apache.org/jira/browse/SOLR-18108) (Eric Pugh) +- Remove deprecated http.status_code and http.method telemetry tags from TraceUtils; use http.response.status_code and http.request.method instead. [SOLR-18110](https://issues.apache.org/jira/browse/SOLR-18110) (Utsav Parmar) +- Remove broken disk-space optimization on "full-recovery" [SOLR-18121](https://issues.apache.org/jira/browse/SOLR-18121) (Jason Gerlowski) +- Remove deprecated VMParamsAllAndReadonlyDigestZkACLProvider; use a combination of DigestZkACLProvider and VMParamsZkCredentialsInjector instead. [SOLR-18122](https://issues.apache.org/jira/browse/SOLR-18122) (Utsav Parmar) +- Remove experimental 'solr.api.v2.enabled' sysprop, formerly used to disable the v2 API. [SOLR-18163](https://issues.apache.org/jira/browse/SOLR-18163) (Jason Gerlowski) +- Remove outmoded and misleading 'bin/solr zk linkconfig' tool. [SOLR-18166](https://issues.apache.org/jira/browse/SOLR-18166) (Jason Gerlowski) +- Remove support for PKI Authentication v1. The system properties solr.pki.sendVersion and solr.pki.acceptVersions are no longer recognized. [SOLR-18235](https://issues.apache.org/jira/browse/SOLR-18235) (Jan Høydahl) +- Remove Request ID based tracing. [SOLR-17934](https://issues.apache.org/jira/browse/SOLR-17934) (Eric Pugh) +- Remove dead code related to the V2 RenameCore API. Add additional tests. [PR#4172](https://github.com/apache/solr/pull/4172) (Eric Pugh) + +### Dependency Upgrades (87 changes) + +- Update swagger3 [PR#3077](https://github.com/apache/solr/pull/3077) (solrbot) +- Update com.fasterxml.woodstox:woodstox-core to v7.2.1 [PR#3083](https://github.com/apache/solr/pull/3083) (solrbot) - Update com.github.ben-manes.versions to v0.53.0 [PR#3085](https://github.com/apache/solr/pull/3085) (solrbot) +- Update org.checkerframework:checker-qual to v3.54.0 [PR#3105](https://github.com/apache/solr/pull/3105) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update com.lmax:disruptor to v4 [PR#3127](https://github.com/apache/solr/pull/3127) (solrbot) +- Update jakarta.annotation:jakarta.annotation-api to v3 [PR#3129](https://github.com/apache/solr/pull/3129) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update jakarta.ws.rs:jakarta.ws.rs-api to v4 [PR#3130](https://github.com/apache/solr/pull/3130) (solrbot) +- Update net.ltgt.errorprone to v5 [PR#3131](https://github.com/apache/solr/pull/3131) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update no.nav.security:mock-oauth2-server to v5 [PR#3133](https://github.com/apache/solr/pull/3133) (solrbot) +- Update org.glassfish.jaxb:jaxb-runtime to v4 [PR#3136](https://github.com/apache/solr/pull/3136) (solrbot) +- Update io.ktor:ktor-bom to v3.5.0 [PR#3218](https://github.com/apache/solr/pull/3218) (solrbot) +- Update nl.littlerobots.version-catalog-update to v1 [PR#3293](https://github.com/apache/solr/pull/3293) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) - Update jakarta.servlet:jakarta.servlet-api to v6.1.0 [PR#3366](https://github.com/apache/solr/pull/3366) (solrbot) -- Update org.openapi.generator to v7.18.0 [PR#3601](https://github.com/apache/solr/pull/3601) (solrbot) -- Update bytebuddy to v1.18.3 [PR#3764](https://github.com/apache/solr/pull/3764) (solrbot) -- Update net.java.dev.jna:jna to v5.18.1 [PR#3781](https://github.com/apache/solr/pull/3781) (solrbot) -- Update org.testcontainers:testcontainers to v2 [PR#3795](https://github.com/apache/solr/pull/3795) (solrbot) +- Update kotlin to v2.4.0 [PR#3475](https://github.com/apache/solr/pull/3475) (solrbot) +- Update com.google.code.gson:gson to v2.14.0 [PR#3661](https://github.com/apache/solr/pull/3661) (solrbot) +- Update bouncycastle to v1.84 [PR#3677](https://github.com/apache/solr/pull/3677) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update com.google.guava:guava to v33.6.0-jre [PR#3681](https://github.com/apache/solr/pull/3681) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update mockito to v5.23.0 [PR#3697](https://github.com/apache/solr/pull/3697) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update com.diffplug.spotless to v8 [PR#3715](https://github.com/apache/solr/pull/3715) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update org.junit.jupiter:junit-jupiter to v6 [PR#3733](https://github.com/apache/solr/pull/3733) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update ow2.asm to v9.10.1 [PR#3749](https://github.com/apache/solr/pull/3749) (solrbot) +- Update com.microsoft.onnxruntime:onnxruntime to v1.26.0 [PR#3790](https://github.com/apache/solr/pull/3790) (solrbot) +- Update com.github.spotbugs:spotbugs-annotations to v4.9.8 [PR#3796](https://github.com/apache/solr/pull/3796) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update com.github.ben-manes.caffeine:caffeine to v3.2.3 [PR#3827](https://github.com/apache/solr/pull/3827) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update com.ibm.icu:icu4j to v78 [PR#3836](https://github.com/apache/solr/pull/3836) (solrbot) +- Update jersey to v4 [PR#3853](https://github.com/apache/solr/pull/3853) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update com.nimbusds:nimbus-jose-jwt to v10.9.1 [PR#3857](https://github.com/apache/solr/pull/3857) (solrbot) +- Update commons-cli:commons-cli to v1.11.0 [PR#3861](https://github.com/apache/solr/pull/3861) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update com.google.auto.value:auto-value-annotations to v1.11.1 [PR#3868](https://github.com/apache/solr/pull/3868) (solrbot) +- Update actions/setup-python action to v6 [PR#3870](https://github.com/apache/solr/pull/3870) (solrbot) +- Update org.apache.commons:commons-configuration2 to v2.13.0 [PR#3894](https://github.com/apache/solr/pull/3894) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update org.apache.commons:commons-exec to v1.6.0 [PR#3917](https://github.com/apache/solr/pull/3917) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) - Update actions/upload-artifact action to v6 [PR#3959](https://github.com/apache/solr/pull/3959) (solrbot) +- Update com.nvidia.cuvs.lucene:cuvs-lucene to v25.12.0 [PR#3979](https://github.com/apache/solr/pull/3979) (solrbot) +- Update dev.langchain4j:langchain4j-bom to v1.16.3 [PR#3990](https://github.com/apache/solr/pull/3990) (solrbot) +- Update actions/setup-java action to v5 [PR#4001](https://github.com/apache/solr/pull/4001) (solrbot) +- Update gradle/actions action to v5 [PR#4002](https://github.com/apache/solr/pull/4002) (solrbot) +- Update bytebuddy to v1.18.8-jdk5 [PR#4092](https://github.com/apache/solr/pull/4092) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update AWS SDK to v2.42.37 [PR#4094](https://github.com/apache/solr/pull/4094) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update org.jetbrains.kotlinx:atomicfu to v0.33.0 [PR#4096](https://github.com/apache/solr/pull/4096) (solrbot) +- Update de.undercouch.download to v5.7.0 [PR#4118](https://github.com/apache/solr/pull/4118) (solrbot) +- Update com.nvidia.cuvs:cuvs-java to v26 [PR#4133](https://github.com/apache/solr/pull/4133) (solrbot) +- Update com.carrotsearch.randomizedtesting:randomizedtesting-runner to v2.8.4 [PR#4155](https://github.com/apache/solr/pull/4155) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Update apache.kafka to v3.9.2 [PR#4158](https://github.com/apache/solr/pull/4158) [PR#4305](https://github.com/apache/solr/pull/4305) (solrbot) +- Bump dependencies of New UI [PR#4283](https://github.com/apache/solr/pull/4283) (malliaridis) +- Resolve Google cloud dependencies using google-cloud-bom. Bump it to 0.261.0 and grpc-bom to 1.80.0 [PR#4323](https://github.com/apache/solr/pull/4323) (solrbot) (Jan Høydahl) +- Update apache.log4j to v2.26.0 [PR#4339](https://github.com/apache/solr/pull/4339) (solrbot) +- Update apache.zookeeper to v3.9.5 [PR#4340](https://github.com/apache/solr/pull/4340) (solrbot) +- Update dev.logchange to v1.19.15 [PR#4341](https://github.com/apache/solr/pull/4341) (solrbot) +- Update netty.tcnative to v2.0.79.Final [PR#4342](https://github.com/apache/solr/pull/4342) (solrbot) +- Update Admin UI libraries [PR#4343](https://github.com/apache/solr/pull/4343) (solrbot) +- Update com.squareup.okio:okio to v3.17.0 [PR#4346](https://github.com/apache/solr/pull/4346) (solrbot) +- Update commons-codec:commons-codec to v1.22.0 [PR#4347](https://github.com/apache/solr/pull/4347) (solrbot) +- Update commons-io:commons-io to v2.22.0 [PR#4348](https://github.com/apache/solr/pull/4348) (solrbot) +- Update org.codehaus.woodstox:stax2-api to v4.3.0 [PR#4350](https://github.com/apache/solr/pull/4350) (solrbot) +- Update com.jayway.jsonpath:json-path to v3 [PR#4353](https://github.com/apache/solr/pull/4353) (solrbot) +- Update joda-time:joda-time to v2.14.2 [PR#4359](https://github.com/apache/solr/pull/4359) (solrbot) +- Update org.jctools:jctools-core to v4.0.6 [PR#4362](https://github.com/apache/solr/pull/4362) (solrbot) +- Update org.testcontainers:testcontainers to v2.0.5 [PR#4363](https://github.com/apache/solr/pull/4363) (solrbot) +- Update google.protobuf to v4.35.1 [PR#4364](https://github.com/apache/solr/pull/4364) (solrbot) +- Update hk2 to v4 [PR#4365](https://github.com/apache/solr/pull/4365) (solrbot) +- Update io.nlopez.compose.rules:ktlint to v0.6.2 [PR#4389](https://github.com/apache/solr/pull/4389) (solrbot) +- Update org.openapi.generator to v7.23.0 [PR#4392](https://github.com/apache/solr/pull/4392) (solrbot) +- Update com.fasterxml.jackson:jackson-bom to v2.22.0 [PR#4395](https://github.com/apache/solr/pull/4395) (solrbot) +- Update io.github.oshai:kotlin-logging to v8.0.4 [PR#4409](https://github.com/apache/solr/pull/4409) (solrbot) +- Update org.jetbrains.androidx.navigation3:navigation3-ui to v1.1.1 [PR#4410](https://github.com/apache/solr/pull/4410) (solrbot) +- Update netty to v4.2.15.Final [PR#4411](https://github.com/apache/solr/pull/4411) (solrbot) +- Update org.threeten:threetenbp to v1.7.3 [PR#4434](https://github.com/apache/solr/pull/4434) (solrbot) +- Update org.jetbrains.kotlinx:kotlinx-datetime to v0.8.0-0.6.x-compat [PR#4436](https://github.com/apache/solr/pull/4436) (solrbot) +- Update kotlinx.coroutines to v1.11.0 [PR#4437](https://github.com/apache/solr/pull/4437) (solrbot) +- Update org.immutables:value-annotations to v2.12.2 [PR#4459](https://github.com/apache/solr/pull/4459) (solrbot) +- Update io.dropwizard.metrics:metrics-core to v4.2.39 [PR#4482](https://github.com/apache/solr/pull/4482) (solrbot) +- Update com.google.cloud:google-cloud-bom to v0.265.0 [PR#4491](https://github.com/apache/solr/pull/4491) (solrbot) +- Update net.java.dev.jna:jna to v5.19.1 [PR#4508](https://github.com/apache/solr/pull/4508) (solrbot) +- Update org.eclipse.jgit:org.eclipse.jgit to v7.7.0.202606012155-r [PR#4540](https://github.com/apache/solr/pull/4540) (solrbot) +- Update grpc to v1.82.0 [PR#4542](https://github.com/apache/solr/pull/4542) (solrbot) +- Update apache.opennlp to v2.5.10 [PR#4557](https://github.com/apache/solr/pull/4557) (solrbot) +- Update squareup.okhttp3.okhttp to v5 [PR#4559](https://github.com/apache/solr/pull/4559) (solrbot) +- Update actions/setup-java action to v5.4.0 [PR#4564](https://github.com/apache/solr/pull/4564) (solrbot) +- Update actions/setup-python action to v6.3.0 [PR#4565](https://github.com/apache/solr/pull/4565) (solrbot) +- Update org.apache.tika:tika-core to v3.3.0 [PR#4349](https://github.com/apache/solr/pull/4349) (solrbot) - Update langchain4j version to 1.9.1 and fasterxml to 2.20.1 [SOLR-18000](https://issues.apache.org/jira/browse/SOLR-18000) (Ilaria Petreti) (Alessandro Benedetti) +- Introduce jersey BOM and align jersey dependencies to 3.1.11 [PR#4244](https://github.com/apache/solr/pull/4244) [SOLR-18082](https://issues.apache.org/jira/browse/SOLR-18082) (Christos Malliaridis) +- Upgrade to Lucene 10.4 [SOLR-18143](https://issues.apache.org/jira/browse/SOLR-18143) (Rahul Goswami) +- Replace abandoned com.cybozu.labs:langdetect with maintained io.github.azagniotov:language-detection in the langid module [SOLR-18208](https://issues.apache.org/jira/browse/SOLR-18208) ([Jan Høydahl](https://home.apache.org/phonebook.html?uid=janhoy)) +- Upgrade google-java-format to 1.35.0 (fixes JDK 24/25 build break) [SOLR-18296](https://issues.apache.org/jira/browse/SOLR-18296) (Serhiy Bzhezytskyy) +- Update eclipse.jetty to v12.0.34 [PR#4305](https://github.com/apache/solr/pull/4305) (Jan Høydahl) -### Other (10 changes) +### Other (25 changes) - Reformat gradle files with IntelliJ / .editorconfig [PR#4037](https://github.com/apache/solr/pull/4037) (David Smiley) +- Gradle now syncs dependency versions across more configurations, forcing the choosing of one version in most cases [PR#4140](https://github.com/apache/solr/pull/4140) (Jan Høydahl) (David Smiley) (Christos Malliaridis) +- Simplify SolrJ ResponseParser.getContentType processing. getContentType must now return a Set. [PR#4528](https://github.com/apache/solr/pull/4528) (David Smiley) +- Replace MapSerializable with MapWriter [SOLR-17600](https://issues.apache.org/jira/browse/SOLR-17600) (Ivan Šarić) - CborResponseWriter should use content-typ- application/cbor [SOLR-17787](https://issues.apache.org/jira/browse/SOLR-17787) (Sanjay Kumar Yadav) +- Introduce org.apache.solr.client.solrj.HttpSolrClient, implemented by the Jetty & JDK HttpClient based SolrClients. It's builder will use Jetty if available, otherwise JDK. [SOLR-17968](https://issues.apache.org/jira/browse/SOLR-17968) (David Smiley) - Provide an internal API to force distributed search (even when one shard). Also, refactor/reorganize SearchHandler for clarity & extensibility. [SOLR-17982](https://issues.apache.org/jira/browse/SOLR-17982) (David Smiley) (Sonu Sharma) - Optimize existence queries for non-docValued FloatPointField and DoublePointField [SOLR-18019](https://issues.apache.org/jira/browse/SOLR-18019) ([Houston Putman](https://home.apache.org/phonebook.html?uid=houston) @HoustonPutman) -- SOLR 18041 - Path exclusions for the admin UI are now defined in a separate servlet filter [SOLR-18041](https://issues.apache.org/jira/browse/SOLR-18041) (Gus Heck) +- Path exclusions for the admin UI no longer need bespoke Solr code. [SOLR-18041](https://issues.apache.org/jira/browse/SOLR-18041) [SOLR-18168](https://issues.apache.org/jira/browse/SOLR-18168) (Gus Heck) (David Smiley) - EssentialSolrRequestFilter has been added to perform non-optional request wrapping operations required for proper functioning of Solr [SOLR-18044](https://issues.apache.org/jira/browse/SOLR-18044) (Gus Heck) - Ratelimiting now exists in it's own Servlet filter which can be customized or removed. [SOLR-18046](https://issues.apache.org/jira/browse/SOLR-18046) (Gus Heck) +- Initialization of tracing spans has moved to TracingFilter [SOLR-18047](https://issues.apache.org/jira/browse/SOLR-18047) (Gus Heck) +- Authentication checks have been moved to a Servlet Filter [SOLR-18048](https://issues.apache.org/jira/browse/SOLR-18048) (Gus Heck) +- solrj-zookeeper depended on jetty, although not in practice. Not any longer. [SOLR-18075](https://issues.apache.org/jira/browse/SOLR-18075) (David Smiley) +- Provide seperate request handler SystemInfoHandler for /solr/admin/info/system from CoreInfoHandler for /solr//admin/info [SOLR-18091](https://issues.apache.org/jira/browse/SOLR-18091) (Eric Pugh) +- SolrDispatchFilter is now SolrServlet; isn't a Filter [SOLR-18112](https://issues.apache.org/jira/browse/SOLR-18112) (David Smiley) +- solr-test-framework: New SolrBackend abstraction for use by solr/benchmark and SolrClientTestRule. Useful for anyone using other test frameworks or higher JUnit versions. [SOLR-18150](https://issues.apache.org/jira/browse/SOLR-18150) (David Smiley) +- Tests updated to NOT use org.apache.solr.client.solrj.apache which is now also removed. solr-test-framework doesn't use/depend on Apache HttpClient/httpcomponents anymore. [SOLR-18188](https://issues.apache.org/jira/browse/SOLR-18188) (David Smiley) +- The build now uses Gradle 9.6.0 (upgraded from 8.10). [SOLR-18289](https://issues.apache.org/jira/browse/SOLR-18289) (Serhiy Bzhezytskyy) - Introduce minimal set of request writers for node/container-level requests. Core-specific request writers now leverage ImplicitPlugins.json for creation. [PR#4073](https://github.com/apache/solr/pull/4073) (Eric Pugh) (David Smiley) +- CLI configSet upload no longer blocks certain file types. The user of the CLI tool must already have permissions to touch ZooKeeper. Enforcement of such remains at Solr's ConfigSet HTTP endpoint. [PR#4193](https://github.com/apache/solr/pull/4193) (David Smiley) - Refactor CollectionApiCommands to add easily expandable AdminCmdContext argument [SOLR-18072](https://issues.apache.org/jira/browse/SOLR-18072) (Houston Putman @HoustonPutman) (David Smiley) (Jason Gerlowski) +- ShardTerms can now induce a leader election if needed [SOLR-18080](https://issues.apache.org/jira/browse/SOLR-18080) (Houston Putman @HoustonPutman) - Always reset ShardTerms when deleting and recreating a collection [SOLR-18090](https://issues.apache.org/jira/browse/SOLR-18090) (Houston Putman @HoustonPutman) +- web.xml & webdefault.xml were synchronized with Jetty 12 / Jakarta EE10 [PR#4153](https://github.com/apache/solr/pull/4153) (David Smiley) [10.0.0] @@ -358,7 +555,7 @@ This file lists Solr's raw release notes with details of every change to Solr. M - Remove obsolete overseer internal work queue. This queue was read-only since Solr 8. [SOLR-17929](https://issues.apache.org/jira/browse/SOLR-17929) (Pierre Salagnac) - Raising the per ramPerThreadHardLimit to be configurable >2GB [SOLR-17942](https://issues.apache.org/jira/browse/SOLR-17942) (Puneet Ahuja) - Removed TikaLanguageIdentifierUpdateProcessor. Use LangDetectLanguageIdentifierUpdateProcessor or OpenNLPLangDetectUpdateProcessor instead. [SOLR-17960](https://issues.apache.org/jira/browse/SOLR-17960) (janhoy) -- The deprecated SolrClient implementations based on Apache HttpClient are removed from Solrj, thus the related dependencies are no longer present. They temporarily live on in the test framework. #17962 [SOLR-17962](https://issues.apache.org/jira/browse/SOLR-17962) (David Smiley) +- The deprecated SolrClient implementations based on Apache HttpClient are removed from Solrj, thus the related dependencies are no longer present. They temporarily live on in the test framework in different packages & names. #17962 [SOLR-17962](https://issues.apache.org/jira/browse/SOLR-17962) (David Smiley) - These SolrCloud commands no longer aquire locks (waiting or blocking on other commands that do): COLLECTIONPROP, ADDREPLICAPROP, DELETEREPLICAPROP. [SOLR-17963](https://issues.apache.org/jira/browse/SOLR-17963) (David Smiley) - Rename HttpClientBuilderFactory to SolrClientCustomizer, and property solr.httpclient.builder.factory to solr.solrj.http.jetty.customizer [SOLR-17994](https://issues.apache.org/jira/browse/SOLR-17994) (David Smiley) - New SolrJ SolrRequest.processWithBaseUrl, new HttpSolrClientBase.requestWithBaseUrl. Existing callers will require updates due to a signature change. [SOLR-17996](https://issues.apache.org/jira/browse/SOLR-17996) (David Smiley) diff --git a/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java b/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java index 823e86d21b8d..d46b231865e4 100644 --- a/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java +++ b/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java @@ -230,8 +230,8 @@ private void check(Element element) { case PACKAGE: checkComment(element); break; - // class-like elements, check them, then recursively check their children (fields and - // methods) + // class-like elements, check them, then recursively check their children (fields and + // methods) case CLASS: case INTERFACE: case ENUM: @@ -251,7 +251,7 @@ private void check(Element element) { } } break; - // method-like elements, check them if we are configured to do so + // method-like elements, check them if we are configured to do so case METHOD: case CONSTRUCTOR: case FIELD: diff --git a/changelog/unreleased/gjf-SOLR-18296.yml b/changelog/unreleased/gjf-SOLR-18296.yml new file mode 100644 index 000000000000..97120872d964 --- /dev/null +++ b/changelog/unreleased/gjf-SOLR-18296.yml @@ -0,0 +1,7 @@ +title: Upgrade google-java-format to 1.35.0 (fixes JDK 24/25 build break) +type: dependency_update +authors: + - name: Serhiy Bzhezytskyy +links: +- name: SOLR-18296 + url: https://issues.apache.org/jira/browse/SOLR-18296 diff --git a/changelog/v10.0.0/version-summary.md b/changelog/v10.0.0/version-summary.md index dc25c584e03b..b6571d3b8cb3 100644 --- a/changelog/v10.0.0/version-summary.md +++ b/changelog/v10.0.0/version-summary.md @@ -287,7 +287,7 @@ - Remove obsolete overseer internal work queue. This queue was read-only since Solr 8. [SOLR-17929](https://issues.apache.org/jira/browse/SOLR-17929) (Pierre Salagnac) - Raising the per ramPerThreadHardLimit to be configurable >2GB [SOLR-17942](https://issues.apache.org/jira/browse/SOLR-17942) (Puneet Ahuja) - Removed TikaLanguageIdentifierUpdateProcessor. Use LangDetectLanguageIdentifierUpdateProcessor or OpenNLPLangDetectUpdateProcessor instead. [SOLR-17960](https://issues.apache.org/jira/browse/SOLR-17960) (janhoy) -- The deprecated SolrClient implementations based on Apache HttpClient are removed from Solrj, thus the related dependencies are no longer present. They temporarily live on in the test framework. #17962 [SOLR-17962](https://issues.apache.org/jira/browse/SOLR-17962) (David Smiley) +- The deprecated SolrClient implementations based on Apache HttpClient are removed from Solrj, thus the related dependencies are no longer present. They temporarily live on in the test framework in different packages & names. #17962 [SOLR-17962](https://issues.apache.org/jira/browse/SOLR-17962) (David Smiley) - These SolrCloud commands no longer aquire locks (waiting or blocking on other commands that do): COLLECTIONPROP, ADDREPLICAPROP, DELETEREPLICAPROP. [SOLR-17963](https://issues.apache.org/jira/browse/SOLR-17963) (David Smiley) - Rename HttpClientBuilderFactory to SolrClientCustomizer, and property solr.httpclient.builder.factory to solr.solrj.http.jetty.customizer [SOLR-17994](https://issues.apache.org/jira/browse/SOLR-17994) (David Smiley) - New SolrJ SolrRequest.processWithBaseUrl, new HttpSolrClientBase.requestWithBaseUrl. Existing callers will require updates due to a signature change. [SOLR-17996](https://issues.apache.org/jira/browse/SOLR-17996) (David Smiley) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0494670cf530..453442a14cbd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -103,7 +103,7 @@ google-guava = "33.6.0-jre" # @keep for version alignment google-j2objc = "3.1" # @keep This is GJF version for spotless/ tidy. -google-javaformat = "1.18.1" +google-javaformat = "1.35.0" # @keep for version alignment google-protobuf = "4.35.1" # @keep Gradle version to run the build diff --git a/solr/core/src/java/org/apache/solr/blockcache/BlockDirectory.java b/solr/core/src/java/org/apache/solr/blockcache/BlockDirectory.java index c1ef93b790ef..87466127260d 100644 --- a/solr/core/src/java/org/apache/solr/blockcache/BlockDirectory.java +++ b/solr/core/src/java/org/apache/solr/blockcache/BlockDirectory.java @@ -323,21 +323,21 @@ boolean useReadCache(String name, IOContext context) { return false; } switch (context.context()) { - // depending on params, we don't cache on merges or when only reading once + // depending on params, we don't cache on merges or when only reading once case MERGE: { return cacheMerges; } - /* TODO - case READ: - { - if (context.readOnce) { - return cacheReadOnce; - } else { - return true; - } + /* TODO + case READ: + { + if (context.readOnce) { + return cacheReadOnce; + } else { + return true; } - */ + } + */ default: { return true; diff --git a/solr/core/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java index 85073e37fc77..ae4ba8d96448 100644 --- a/solr/core/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java @@ -279,7 +279,7 @@ SolrInputDocument readDocument(XMLStreamReader reader, IndexSchema schema) while (true) { int event = reader.next(); switch (event) { - // Add everything to the text + // Add everything to the text case XMLStreamConstants.SPACE: case XMLStreamConstants.CDATA: case XMLStreamConstants.CHARACTERS: diff --git a/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java b/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java index 71ea48eac82f..6c94d6955a5b 100644 --- a/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java +++ b/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java @@ -275,8 +275,9 @@ private BackupStats incrementalCopy(Collection indexFiles, Directory dir case Error err -> throw err; case IOException ioe -> throw ioe; case RuntimeException re -> throw re; - default -> throw new SolrException( - SolrException.ErrorCode.UNKNOWN, "Error during parallel backup upload", cause); + default -> + throw new SolrException( + SolrException.ErrorCode.UNKNOWN, "Error during parallel backup upload", cause); } } catch (InterruptedException e) { uploadFutures.forEach(f -> f.cancel(true)); diff --git a/solr/core/src/java/org/apache/solr/handler/RestoreCore.java b/solr/core/src/java/org/apache/solr/handler/RestoreCore.java index 244a50e78277..2d5e1f2fa92d 100644 --- a/solr/core/src/java/org/apache/solr/handler/RestoreCore.java +++ b/solr/core/src/java/org/apache/solr/handler/RestoreCore.java @@ -195,8 +195,9 @@ public boolean doRestore() throws Exception { case Error err -> throw err; case IOException ioe -> throw ioe; case RuntimeException re -> throw re; - default -> throw new SolrException( - SolrException.ErrorCode.UNKNOWN, "Error during parallel restore download", cause); + default -> + throw new SolrException( + SolrException.ErrorCode.UNKNOWN, "Error during parallel restore download", cause); } } catch (InterruptedException e) { downloadFutures.forEach(f -> f.cancel(true)); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java index 1f0eb6c2fb32..7f6c334cf9bd 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java @@ -461,9 +461,10 @@ private FilterType extractFilterType(SolrParams params) { case "none" -> FilterType.none; case "name" -> FilterType.name; case "status" -> FilterType.status; - default -> throw new SolrException( - ErrorCode.BAD_REQUEST, - "Invalid filterType '" + filterType + "'. Allowed values are: none, name, status"); + default -> + throw new SolrException( + ErrorCode.BAD_REQUEST, + "Invalid filterType '" + filterType + "'. Allowed values are: none, name, status"); }; } return FilterType.none; diff --git a/solr/core/src/java/org/apache/solr/handler/component/PivotFacetValue.java b/solr/core/src/java/org/apache/solr/handler/component/PivotFacetValue.java index b13b604d12b8..c21c898fd37e 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/PivotFacetValue.java +++ b/solr/core/src/java/org/apache/solr/handler/component/PivotFacetValue.java @@ -145,8 +145,9 @@ public static PivotFacetValue createFromNamedList( case STATS -> statsValues = (NamedList>>) value; case QUERIES -> queryCounts = (NamedList) value; case RANGES -> ranges = (SimpleOrderedMap>) value; - default -> throw new RuntimeException( - "PivotListEntry contains unaccounted for item: " + pivotEntry); + default -> + throw new RuntimeException( + "PivotListEntry contains unaccounted for item: " + pivotEntry); } } diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java index 3897d6c737e0..3e7a066841f3 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java @@ -768,7 +768,7 @@ protected String stageToString(int stage) { return "EXECUTE_QUERY"; case STAGE_GET_FIELDS: return "GET_FIELDS"; - // nobody wants to think it was DONE and canceled after it completed... + // nobody wants to think it was DONE and canceled after it completed... case STAGE_DONE: return "FINISHING"; default: diff --git a/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java b/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java index ff07a8fb5a9c..a5a6feab2cb1 100644 --- a/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java +++ b/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java @@ -215,7 +215,7 @@ void processUpdate(Reader reader) throws IOException { } break; } - // fall through + // fall through case JSONParser.LONG: case JSONParser.NUMBER: diff --git a/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java b/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java index 869d4790db90..72d93f87b78d 100644 --- a/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java +++ b/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java @@ -300,7 +300,7 @@ void processDelete(SolrQueryRequest req, UpdateRequestProcessor processor, XMLSt deleteCmd.clear(); break; - // Add everything to the text + // Add everything to the text case XMLStreamConstants.SPACE: case XMLStreamConstants.CDATA: case XMLStreamConstants.CHARACTERS: @@ -356,7 +356,7 @@ protected SolrInputDocument readDoc(XMLStreamReader parser, boolean forgiveNameA while (!complete) { int event = parser.next(); switch (event) { - // Add everything to the text + // Add everything to the text case XMLStreamConstants.SPACE: case XMLStreamConstants.CDATA: case XMLStreamConstants.CHARACTERS: diff --git a/solr/core/src/java/org/apache/solr/handler/tagger/TermPrefixCursor.java b/solr/core/src/java/org/apache/solr/handler/tagger/TermPrefixCursor.java index 8fad2964d9ae..8c4a1787e272 100644 --- a/solr/core/src/java/org/apache/solr/handler/tagger/TermPrefixCursor.java +++ b/solr/core/src/java/org/apache/solr/handler/tagger/TermPrefixCursor.java @@ -128,7 +128,7 @@ private boolean seekPrefix() throws IOException { if (termsEnum.next() == null) { // case END return false; } - // fall through to NOT_FOUND + // fall through to NOT_FOUND case NOT_FOUND: // termsEnum must start with prefixBuf to continue diff --git a/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java b/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java index 88da81b3a835..e759236a5c2c 100644 --- a/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java +++ b/solr/core/src/java/org/apache/solr/internal/csv/CSVPrinter.java @@ -97,7 +97,7 @@ public void printlnComment(String comment) throws IOException { if (i + 1 < comment.length() && comment.charAt(i + 1) == '\n') { i++; } - // break intentionally excluded. + // break intentionally excluded. case '\n': println(); out.write(this.strategy.getCommentStart()); diff --git a/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java b/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java index e6f96174fc2b..6ed245c50469 100644 --- a/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java +++ b/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java @@ -159,16 +159,16 @@ private void writeFieldTypes(List> fieldTypePropertiesL Object fieldTypePropValue = fieldTypeProperty.getValue(); switch (fieldTypePropName) { - case FieldType.ANALYZER -> analyzerProperties = - (SimpleOrderedMap) fieldTypePropValue; - case FieldType.INDEX_ANALYZER -> indexAnalyzerProperties = - (SimpleOrderedMap) fieldTypePropValue; - case FieldType.QUERY_ANALYZER -> queryAnalyzerProperties = - (SimpleOrderedMap) fieldTypePropValue; - case FieldType.MULTI_TERM_ANALYZER -> multiTermAnalyzerProperties = - (SimpleOrderedMap) fieldTypePropValue; - case FieldType.SIMILARITY -> perFieldSimilarityProperties = - (SimpleOrderedMap) fieldTypePropValue; + case FieldType.ANALYZER -> + analyzerProperties = (SimpleOrderedMap) fieldTypePropValue; + case FieldType.INDEX_ANALYZER -> + indexAnalyzerProperties = (SimpleOrderedMap) fieldTypePropValue; + case FieldType.QUERY_ANALYZER -> + queryAnalyzerProperties = (SimpleOrderedMap) fieldTypePropValue; + case FieldType.MULTI_TERM_ANALYZER -> + multiTermAnalyzerProperties = (SimpleOrderedMap) fieldTypePropValue; + case FieldType.SIMILARITY -> + perFieldSimilarityProperties = (SimpleOrderedMap) fieldTypePropValue; default -> writeAttr(fieldTypePropName, fieldTypePropValue.toString()); } } @@ -229,8 +229,8 @@ private void writeAnalyzer(SimpleOrderedMap analyzerProperties, String a String name = analyzerProperty.getKey(); Object value = analyzerProperty.getValue(); switch (name) { - case FieldType.CHAR_FILTERS -> charFilterPropertiesList = - (List>) value; + case FieldType.CHAR_FILTERS -> + charFilterPropertiesList = (List>) value; case FieldType.TOKENIZER -> tokenizerProperties = (SimpleOrderedMap) value; case FieldType.FILTERS -> filterPropertiesList = (List>) value; case FieldType.CLASS_NAME -> { diff --git a/solr/core/src/java/org/apache/solr/schema/BBoxField.java b/solr/core/src/java/org/apache/solr/schema/BBoxField.java index 1e7155f61b7b..4b85573ad73d 100644 --- a/solr/core/src/java/org/apache/solr/schema/BBoxField.java +++ b/solr/core/src/java/org/apache/solr/schema/BBoxField.java @@ -170,7 +170,7 @@ protected DoubleValuesSource getValueSourceFromSpatialArgs( } switch (scoreParam) { - // TODO move these to superclass after LUCENE-5804 ? + // TODO move these to superclass after LUCENE-5804 ? case OVERLAP_RATIO: double queryTargetProportion = 0.25; // Suggested default; weights towards target area diff --git a/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java b/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java index f29714d5b1ee..9cd1d0a27eee 100644 --- a/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java +++ b/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java @@ -592,12 +592,13 @@ public SortField getSortField(SchemaField field, boolean top) { private Query getSeededQuery(Query knnQuery, Query seed) { return switch (knnQuery) { - case SolrKnnFloatVectorQuery knnFloatQuery -> SeededKnnVectorQuery.fromFloatQuery( - knnFloatQuery, seed); - case SolrKnnByteVectorQuery knnByteQuery -> SeededKnnVectorQuery.fromByteQuery( - knnByteQuery, seed); - default -> throw new SolrException( - SolrException.ErrorCode.SERVER_ERROR, "Invalid type of knn query"); + case SolrKnnFloatVectorQuery knnFloatQuery -> + SeededKnnVectorQuery.fromFloatQuery(knnFloatQuery, seed); + case SolrKnnByteVectorQuery knnByteQuery -> + SeededKnnVectorQuery.fromByteQuery(knnByteQuery, seed); + default -> + throw new SolrException( + SolrException.ErrorCode.SERVER_ERROR, "Invalid type of knn query"); }; } @@ -606,24 +607,30 @@ private Query getEarlyTerminationQuery(Query knnQuery, EarlyTerminationParams ea (earlyTermination.getSaturationThreshold() != null && earlyTermination.getPatience() != null); return switch (knnQuery) { - case SolrKnnFloatVectorQuery knnFloatQuery -> useExplicitParams - ? PatienceKnnVectorQuery.fromFloatQuery( - knnFloatQuery, - earlyTermination.getSaturationThreshold(), - earlyTermination.getPatience()) - : PatienceKnnVectorQuery.fromFloatQuery(knnFloatQuery); - case SolrKnnByteVectorQuery knnByteQuery -> useExplicitParams - ? PatienceKnnVectorQuery.fromByteQuery( - knnByteQuery, - earlyTermination.getSaturationThreshold(), - earlyTermination.getPatience()) - : PatienceKnnVectorQuery.fromByteQuery(knnByteQuery); - case SeededKnnVectorQuery seedQuery -> useExplicitParams - ? PatienceKnnVectorQuery.fromSeededQuery( - seedQuery, earlyTermination.getSaturationThreshold(), earlyTermination.getPatience()) - : PatienceKnnVectorQuery.fromSeededQuery(seedQuery); - default -> throw new SolrException( - SolrException.ErrorCode.SERVER_ERROR, "Invalid type of knn query"); + case SolrKnnFloatVectorQuery knnFloatQuery -> + useExplicitParams + ? PatienceKnnVectorQuery.fromFloatQuery( + knnFloatQuery, + earlyTermination.getSaturationThreshold(), + earlyTermination.getPatience()) + : PatienceKnnVectorQuery.fromFloatQuery(knnFloatQuery); + case SolrKnnByteVectorQuery knnByteQuery -> + useExplicitParams + ? PatienceKnnVectorQuery.fromByteQuery( + knnByteQuery, + earlyTermination.getSaturationThreshold(), + earlyTermination.getPatience()) + : PatienceKnnVectorQuery.fromByteQuery(knnByteQuery); + case SeededKnnVectorQuery seedQuery -> + useExplicitParams + ? PatienceKnnVectorQuery.fromSeededQuery( + seedQuery, + earlyTermination.getSaturationThreshold(), + earlyTermination.getPatience()) + : PatienceKnnVectorQuery.fromSeededQuery(seedQuery); + default -> + throw new SolrException( + SolrException.ErrorCode.SERVER_ERROR, "Invalid type of knn query"); }; } } diff --git a/solr/core/src/java/org/apache/solr/search/QParser.java b/solr/core/src/java/org/apache/solr/search/QParser.java index 8f0977f7e004..21c7d7649971 100644 --- a/solr/core/src/java/org/apache/solr/search/QParser.java +++ b/solr/core/src/java/org/apache/solr/search/QParser.java @@ -349,8 +349,8 @@ public ValueSource parseAsValueSource() throws SyntaxError { return switch (q) { case null -> new LongConstValueSource(0); case FunctionQuery functionQuery -> functionQuery.getValueSource(); - case FunctionScoreQuery functionQuery -> ValueSource.fromDoubleValuesSource( - functionQuery.getSource()); + case FunctionScoreQuery functionQuery -> + ValueSource.fromDoubleValuesSource(functionQuery.getSource()); default -> new QueryValueSource(q, 0.0f); }; } diff --git a/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java index 33bb7f2a35b5..d9c9d193f877 100644 --- a/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java @@ -81,10 +81,12 @@ private static Rescorer createRescorer( final Query reRankQuery, final double reRankWeight, final ReRankOperator reRankOperator) { assert null != reRankQuery; return switch (reRankQuery) { - case FunctionQuery functionQuery -> new ReRankDoubleValuesSourceRescorer( - functionQuery.getValueSource().asDoubleValuesSource(), reRankWeight, reRankOperator); - case FunctionScoreQuery functionQuery -> new ReRankDoubleValuesSourceRescorer( - functionQuery.getSource(), reRankWeight, reRankOperator); + case FunctionQuery functionQuery -> + new ReRankDoubleValuesSourceRescorer( + functionQuery.getValueSource().asDoubleValuesSource(), reRankWeight, reRankOperator); + case FunctionScoreQuery functionQuery -> + new ReRankDoubleValuesSourceRescorer( + functionQuery.getSource(), reRankWeight, reRankOperator); default -> new ReRankQueryRescorer(reRankQuery, reRankWeight, reRankOperator); }; } diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetHeatmap.java b/solr/core/src/java/org/apache/solr/search/facet/FacetHeatmap.java index 57d69d47c522..557536d3a848 100644 --- a/solr/core/src/java/org/apache/solr/search/facet/FacetHeatmap.java +++ b/solr/core/src/java/org/apache/solr/search/facet/FacetHeatmap.java @@ -324,11 +324,11 @@ private static Object formatCountsVal( // A PNG graphic; compressed. Good for large & dense heatmaps; hard to consume. return asPngBytes(columns, rows, counts, debugInfo); - // TODO case UTFGRID https://github.com/mapbox/utfgrid-spec - // TODO case skipList: //A sequence of values; negative values are actually how many 0's to - // insert. Good for small or large but sparse heatmaps. - // TODO auto choose png or skipList; use skipList when < ~25% full or <= ~512 cells remember - // to augment error list below when we add more formats. + // TODO case UTFGRID https://github.com/mapbox/utfgrid-spec + // TODO case skipList: //A sequence of values; negative values are actually how many 0's to + // insert. Good for small or large but sparse heatmaps. + // TODO auto choose png or skipList; use skipList when < ~25% full or <= ~512 cells remember + // to augment error list below when we add more formats. default: throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unknown format: " + format); } diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java index 82ef9ec23419..42531d5fd4a1 100644 --- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java +++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java @@ -352,7 +352,7 @@ static long parseFormDataContent( currentStream = valueStream; break; } - // fall-through + // fall-through default: currentStream.write(b); } diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java index ef35d3c9b0c6..17fd8477b277 100644 --- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java +++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java @@ -690,7 +690,7 @@ public SolrMetricsContext getSolrMetricsContext() { private long computeBufferedOps() { return switch (state) { - // numRecords counts header as a record + // numRecords counts header as a record case BUFFERING -> (bufferTlog == null ? 0 : bufferTlog.numRecords() - 1); case APPLYING_BUFFERED -> { if (tlog == null) yield 0; diff --git a/solr/core/src/test/org/apache/solr/cloud/TestPullReplica.java b/solr/core/src/test/org/apache/solr/cloud/TestPullReplica.java index b2d307aa8521..c1bece3037d0 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestPullReplica.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestPullReplica.java @@ -130,9 +130,9 @@ public void testCreateDelete() throws Exception { try { switch (random().nextInt(3)) { case 0 -> - // Sometimes use SolrJ - CollectionAdminRequest.createCollection(collectionName, "conf", 2, 1, 0, 3) - .process(cluster.getSolrClient()); + // Sometimes use SolrJ + CollectionAdminRequest.createCollection(collectionName, "conf", 2, 1, 0, 3) + .process(cluster.getSolrClient()); case 1 -> { // Sometimes use v1 API var jetty = cluster.getRandomJetty(random()); diff --git a/solr/core/src/test/org/apache/solr/handler/admin/api/GetMetricsTest.java b/solr/core/src/test/org/apache/solr/handler/admin/api/GetMetricsTest.java index fc054b5da095..4ddf224c9d9e 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/api/GetMetricsTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/api/GetMetricsTest.java @@ -199,7 +199,8 @@ public void accept(Mutable arg0) { @Test public void testGetMetricsCategoryParams() throws IOException { - String expected = """ + String expected = + """ category="QUERY" """; diff --git a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrTextToVectorModel.java b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrTextToVectorModel.java index 9b171d2e51de..776409e6f018 100644 --- a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrTextToVectorModel.java +++ b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/model/SolrTextToVectorModel.java @@ -84,15 +84,16 @@ public static SolrTextToVectorModel getInstance( Duration timeOut = Duration.ofSeconds((Long) params.get(paramName)); builder.getClass().getMethod(paramName, Duration.class).invoke(builder, timeOut); } - case MAX_SEGMENTS_PER_BATCH_PARAM, MAX_RETRIES_PARAM -> builder - .getClass() - .getMethod(paramName, Integer.class) - .invoke(builder, ((Long) params.get(paramName)).intValue()); + case MAX_SEGMENTS_PER_BATCH_PARAM, MAX_RETRIES_PARAM -> + builder + .getClass() + .getMethod(paramName, Integer.class) + .invoke(builder, ((Long) params.get(paramName)).intValue()); - /* - * For primitive params if there's only one setter available, we call it. - * If there's choice we default to the string one - */ + /* + * For primitive params if there's only one setter available, we call it. + * If there's choice we default to the string one + */ default -> { ArrayList paramNameMatches = new ArrayList<>(); for (var method : builder.getClass().getMethods()) { diff --git a/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtlpExporterFactory.java b/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtlpExporterFactory.java index ab95b2bf89e3..eb0529f2b707 100644 --- a/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtlpExporterFactory.java +++ b/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtlpExporterFactory.java @@ -42,12 +42,14 @@ public MetricExporter getExporter() { } return switch (OTLP_EXPORTER_PROTOCOL) { - case "grpc" -> OtlpGrpcMetricExporter.getDefault().toBuilder() - .setEndpoint(OTLP_EXPORTER_GRPC_ENDPOINT) - .build(); - case "http" -> OtlpHttpMetricExporter.getDefault().toBuilder() - .setEndpoint(OTLP_EXPORTER_HTTP_ENDPOINT) - .build(); + case "grpc" -> + OtlpGrpcMetricExporter.getDefault().toBuilder() + .setEndpoint(OTLP_EXPORTER_GRPC_ENDPOINT) + .build(); + case "http" -> + OtlpHttpMetricExporter.getDefault().toBuilder() + .setEndpoint(OTLP_EXPORTER_HTTP_ENDPOINT) + .build(); case "none" -> null; default -> { log.warn( diff --git a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3ReadWriteTest.java b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3ReadWriteTest.java index d4d13c717580..9f360c644acc 100644 --- a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3ReadWriteTest.java +++ b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3ReadWriteTest.java @@ -129,7 +129,7 @@ public void testReadWithConnectionLoss() throws IOException { int numBytesToRead = random().nextInt(maxBuffer) + 1; // test both read() and read(buffer, off, len) switch (random().nextInt(3)) { - // read() + // read() case 0: { for (int i = 0; i < numBytesToRead && !done; i++) { @@ -140,7 +140,7 @@ public void testReadWithConnectionLoss() throws IOException { } } break; - // read(byte, off, len) + // read(byte, off, len) case 1: { int readLen = input.read(buffer, 0, numBytesToRead); @@ -152,7 +152,7 @@ public void testReadWithConnectionLoss() throws IOException { } } break; - // skip(len) + // skip(len) case 2: { // We only want to skip 1 because diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java index e29c8ef805d6..d43f1ae4c187 100644 --- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java +++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java @@ -632,11 +632,11 @@ protected Pair translateBinary2(RexNode left, RexNode right) return new Pair<>(name, rightLiteral); case CAST: return translateBinary2(((RexCall) left).getOperands().get(0), right); - // case OTHER_FUNCTION: - // String itemName = SolrRules.isItem((RexCall) left); - // if (itemName != null) { - // return translateOp2(op, itemName, rightLiteral); - // } + // case OTHER_FUNCTION: + // String itemName = SolrRules.isItem((RexCall) left); + // if (itemName != null) { + // return translateOp2(op, itemName, rightLiteral); + // } default: return null; } diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java index c783563634be..392d61801227 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java @@ -123,8 +123,8 @@ public void setResponse(NamedList res) { case "sort_values" -> _sortvalues = (NamedList) val; case "facet_counts" -> _facetInfo = (NamedList) val; - // extractFacetInfo inspects _results, so defer calling it - // in case it hasn't been populated yet. + // extractFacetInfo inspects _results, so defer calling it + // in case it hasn't been populated yet. case "debug" -> { _debugInfo = (NamedList) val; extractDebugInfo(_debugInfo); @@ -151,7 +151,7 @@ public void setResponse(NamedList res) { } case "facets" -> _jsonFacetingInfo = (NamedList) val; - // Don't call extractJsonFacetingInfo(_jsonFacetingInfo) here in an effort to do it lazily + // Don't call extractJsonFacetingInfo(_jsonFacetingInfo) here in an effort to do it lazily case "suggest" -> { _suggestInfo = (NamedList>) val; extractSuggesterInfo(_suggestInfo); diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/XMLResponseParser.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/XMLResponseParser.java index 5bc358b4f5e7..565f1b0c080e 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/XMLResponseParser.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/XMLResponseParser.java @@ -332,7 +332,7 @@ protected NamedList readNamedList(XMLStreamReader parser) throws XMLStre break; case XMLStreamConstants.SPACE: - // TODO? should this be trimmed? make sure it only gets one/two space? + // TODO? should this be trimmed? make sure it only gets one/two space? case XMLStreamConstants.CDATA: case XMLStreamConstants.CHARACTERS: builder.append(parser.getText()); @@ -421,7 +421,7 @@ else if( type != t && !(t == KnownType.NULL || type == KnownType.NULL)) { break; case XMLStreamConstants.SPACE: - // TODO? should this be trimmed? make sure it only gets one/two space? + // TODO? should this be trimmed? make sure it only gets one/two space? case XMLStreamConstants.CDATA: case XMLStreamConstants.CHARACTERS: builder.append(parser.getText()); @@ -545,7 +545,7 @@ protected SolrDocument readDocument(XMLStreamReader parser) throws XMLStreamExce break; case XMLStreamConstants.SPACE: - // TODO? should this be trimmed? make sure it only gets one/two space? + // TODO? should this be trimmed? make sure it only gets one/two space? case XMLStreamConstants.CDATA: case XMLStreamConstants.CHARACTERS: builder.append(parser.getText()); diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/NodePreferenceRulesComparator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/NodePreferenceRulesComparator.java index e2e4ad4cd2ae..ac6e3fbbee2a 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/NodePreferenceRulesComparator.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/NodePreferenceRulesComparator.java @@ -238,7 +238,7 @@ yield switch (preferenceRule.value) { private Comparator getPreferenceUrlComparator(PreferenceRule preferenceRule) { Comparator comparator = switch (preferenceRule.name) { - // These preferences are not supported for URLs + // These preferences are not supported for URLs case ShardParams.SHARDS_PREFERENCE_REPLICA_TYPE: case ShardParams.SHARDS_PREFERENCE_REPLICA_LEADER: case ShardParams.SHARDS_PREFERENCE_NODE_WITH_SAME_SYSPROP: diff --git a/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java b/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java index 32bcc873bef4..0a2c93d9aa90 100644 --- a/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java +++ b/solr/solrj/src/java/org/apache/solr/common/util/DOMUtil.java @@ -249,19 +249,19 @@ private static void getText(Node nd, StringBuilder buf) { break; case Node.ATTRIBUTE_NODE: /* fall through */ - /* Putting Attribute nodes in this section does not exactly - match the definition of how textContent should behave - according to the DOM Level-3 Core documentation - which - specifies that the Attr's children should have their - textContent contacted (Attr's can have a single child which - is either Text node or an EntityReference). In practice, - DOM implementations do not seem to use child nodes of - Attributes, storing the "text" directly as the nodeValue. - Fortunately, the DOM Spec indicates that when Attr.nodeValue - is read, it should return the nodeValue from the child Node, - so this approach should work both for strict implementations, - and implementations actually encountered. - */ + /* Putting Attribute nodes in this section does not exactly + match the definition of how textContent should behave + according to the DOM Level-3 Core documentation - which + specifies that the Attr's children should have their + textContent contacted (Attr's can have a single child which + is either Text node or an EntityReference). In practice, + DOM implementations do not seem to use child nodes of + Attributes, storing the "text" directly as the nodeValue. + Fortunately, the DOM Spec indicates that when Attr.nodeValue + is read, it should return the nodeValue from the child Node, + so this approach should work both for strict implementations, + and implementations actually encountered. + */ case Node.TEXT_NODE: /* fall through */ case Node.CDATA_SECTION_NODE: /* fall through */ case Node.COMMENT_NODE: /* fall through */ diff --git a/solr/solrj/src/java/org/apache/solr/common/util/Hash.java b/solr/solrj/src/java/org/apache/solr/common/util/Hash.java index e327893b4d93..81866d6c77a4 100644 --- a/solr/solrj/src/java/org/apache/solr/common/util/Hash.java +++ b/solr/solrj/src/java/org/apache/solr/common/util/Hash.java @@ -332,10 +332,10 @@ public static int murmurhash3_x86_32(byte[] data, int offset, int len, int seed) switch (len & 0x03) { case 3: k1 = (data[roundedEnd + 2] & 0xff) << 16; - // fallthrough + // fallthrough case 2: k1 |= (data[roundedEnd + 1] & 0xff) << 8; - // fallthrough + // fallthrough case 1: k1 |= (data[roundedEnd] & 0xff); k1 *= c1; diff --git a/solr/solrj/src/java/org/apache/solr/common/util/JsonTextWriter.java b/solr/solrj/src/java/org/apache/solr/common/util/JsonTextWriter.java index f637d8841036..e3e9ff67b82e 100644 --- a/solr/solrj/src/java/org/apache/solr/common/util/JsonTextWriter.java +++ b/solr/solrj/src/java/org/apache/solr/common/util/JsonTextWriter.java @@ -123,7 +123,7 @@ default void writeStr(String name, String val, boolean needsEscaping) throws IOE case '\u2029': unicodeEscape(getWriter(), ch); break; - // case '/': + // case '/': default: { if (ch <= 0x1F) { diff --git a/solr/solrj/src/java/org/noggit/JSONParser.java b/solr/solrj/src/java/org/noggit/JSONParser.java index 125706032b7d..3a7d45e023ff 100644 --- a/solr/solrj/src/java/org/noggit/JSONParser.java +++ b/solr/solrj/src/java/org/noggit/JSONParser.java @@ -883,7 +883,7 @@ private int next(int ch) throws IOException { // implementation? for (; ; ) { switch (ch) { - // this is not the exclusive list of whitespace chars... the rest are handled in default: + // this is not the exclusive list of whitespace chars... the rest are handled in default: case ' ': case '\t': case '\r': diff --git a/solr/solrj/src/java/org/noggit/JSONUtil.java b/solr/solrj/src/java/org/noggit/JSONUtil.java index 5d7708fb25dd..dfc675154f72 100644 --- a/solr/solrj/src/java/org/noggit/JSONUtil.java +++ b/solr/solrj/src/java/org/noggit/JSONUtil.java @@ -126,7 +126,7 @@ public static void writeChar(char ch, CharArr out) { out.write('\\'); out.write('f'); break; - // case '/': + // case '/': case '\u2028': // valid JSON, but not valid json script case '\u2029': unicodeEscape(ch, out); diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java index ca9ef93e5245..64090fb8e179 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java @@ -2398,8 +2398,7 @@ public void testUpdateField() throws Exception { concurrentClient.lastError.getMessage().contains("version conflict")); } else if (client instanceof - SolrExampleStreamingHttp2Test.ErrorTrackingConcurrentUpdateSolrClient - concurrentClient) { + SolrExampleStreamingHttp2Test.ErrorTrackingConcurrentUpdateSolrClient concurrentClient) { client.commit(); // just to be sure the client has sent the doc assertNotNull( "ConcurrentUpdateSolrClient did not report an error", concurrentClient.lastError);