From 1b1c92596908457a8c1c1bccaaeee82c5f122fb2 Mon Sep 17 00:00:00 2001 From: Matthew Biscocho <54160956+mlbiscoc@users.noreply.github.com> Date: Sat, 4 Jan 2025 13:54:55 -0500 Subject: [PATCH 01/16] SOLR-17582 Stream CLUSTERSTATUS API response (#2916) The CLUSTERSTATUS API will now stream each collection's status to the response, fetching and computing it on the fly. To avoid a backwards compatibility concern, this won't work for wt=javabin. --- solr/CHANGES.txt | 4 +- .../solr/handler/admin/ClusterStatus.java | 158 ++++++++++-------- .../api/collections/TestCollectionAPI.java | 37 +++- 3 files changed, 129 insertions(+), 70 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 1fd659b966e..9ef3e302af9 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -146,7 +146,9 @@ Other Changes ================== 9.9.0 ================== New Features --------------------- -(No changes) +* SOLR-17582: The CLUSTERSTATUS API will now stream each collection's status to the response, + fetching and computing it on the fly. To avoid a backwards compatibilty concern, this won't work + for wt=javabin. (Matthew Biscocho, David Smiley) Improvements --------------------- diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java b/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java index 18c8843f916..7a8ecf9c850 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java @@ -17,7 +17,6 @@ package org.apache.solr.handler.admin; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -27,15 +26,15 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Stream; +import org.apache.solr.common.MapWriter; import org.apache.solr.common.SolrException; import org.apache.solr.common.cloud.Aliases; import org.apache.solr.common.cloud.ClusterState; import org.apache.solr.common.cloud.DocCollection; -import org.apache.solr.common.cloud.DocRouter; import org.apache.solr.common.cloud.PerReplicaStates; import org.apache.solr.common.cloud.Replica; -import org.apache.solr.common.cloud.Slice; import org.apache.solr.common.cloud.ZkStateReader; +import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.ShardParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; @@ -180,6 +179,8 @@ private void fetchClusterStatusForCollOrAlias( String routeKey = solrParams.get(ShardParams._ROUTE_); String shard = solrParams.get(ZkStateReader.SHARD_ID_PROP); + Set requestedShards = (shard != null) ? Set.of(shard.split(",")) : null; + Stream collectionStream; if (collection == null) { collectionStream = clusterState.collectionStream(); @@ -205,54 +206,35 @@ private void fetchClusterStatusForCollOrAlias( } } - // TODO use an Iterable to stream the data to the client instead of gathering it all in mem - - NamedList collectionProps = new SimpleOrderedMap<>(); - - collectionStream.forEach( - clusterStateCollection -> { - Map collectionStatus; - String name = clusterStateCollection.getName(); - - Set requestedShards = new HashSet<>(); - if (routeKey != null) { - DocRouter router = clusterStateCollection.getRouter(); - Collection slices = - router.getSearchSlices(routeKey, null, clusterStateCollection); - for (Slice slice : slices) { - requestedShards.add(slice.getName()); - } - } - if (shard != null) { - String[] paramShards = shard.split(","); - requestedShards.addAll(Arrays.asList(paramShards)); - } - - byte[] bytes = Utils.toJSON(clusterStateCollection); - @SuppressWarnings("unchecked") - Map docCollection = (Map) Utils.fromJSON(bytes); - collectionStatus = getCollectionStatus(docCollection, name, requestedShards); - - collectionStatus.put("znodeVersion", clusterStateCollection.getZNodeVersion()); - collectionStatus.put( - "creationTimeMillis", clusterStateCollection.getCreationTime().toEpochMilli()); - - if (collectionVsAliases.containsKey(name) && !collectionVsAliases.get(name).isEmpty()) { - collectionStatus.put("aliases", collectionVsAliases.get(name)); - } - String configName = clusterStateCollection.getConfigName(); - collectionStatus.put("configName", configName); - if (solrParams.getBool("prs", false) && clusterStateCollection.isPerReplicaState()) { - PerReplicaStates prs = clusterStateCollection.getPerReplicaStates(); - collectionStatus.put("PRS", prs); - } - collectionProps.add(name, collectionStatus); - }); - - // now we need to walk the collectionProps tree to cross-check replica state with live nodes - crossCheckReplicaStateWithLiveNodes(liveNodes, collectionProps); - - clusterStatus.add("collections", collectionProps); + // Because of back-compat for SolrJ, create the whole response into a NamedList + // Otherwise stream with MapWriter to save memory + if (CommonParams.JAVABIN.equals(solrParams.get(CommonParams.WT))) { + NamedList collectionProps = new SimpleOrderedMap<>(); + collectionStream.forEach( + collectionState -> { + collectionProps.add( + collectionState.getName(), + buildResponseForCollection( + collectionState, collectionVsAliases, routeKey, liveNodes, requestedShards)); + }); + clusterStatus.add("collections", collectionProps); + } else { + MapWriter collectionPropsWriter = + ew -> { + collectionStream.forEach( + (collectionState) -> { + ew.putNoEx( + collectionState.getName(), + buildResponseForCollection( + collectionState, + collectionVsAliases, + routeKey, + liveNodes, + requestedShards)); + }); + }; + clusterStatus.add("collections", collectionPropsWriter); + } } private void addAliasMap(Aliases aliases, NamedList clusterStatus) { @@ -307,23 +289,20 @@ private Map getCollectionStatus( */ @SuppressWarnings("unchecked") protected void crossCheckReplicaStateWithLiveNodes( - List liveNodes, NamedList collectionProps) { - for (Map.Entry next : collectionProps) { - Map collMap = (Map) next.getValue(); - Map shards = (Map) collMap.get("shards"); - for (Object nextShard : shards.values()) { - Map shardMap = (Map) nextShard; - Map replicas = (Map) shardMap.get("replicas"); - for (Object nextReplica : replicas.values()) { - Map replicaMap = (Map) nextReplica; - if (Replica.State.getState((String) replicaMap.get(ZkStateReader.STATE_PROP)) - != Replica.State.DOWN) { - // not down, so verify the node is live - String node_name = (String) replicaMap.get(ZkStateReader.NODE_NAME_PROP); - if (!liveNodes.contains(node_name)) { - // node is not live, so this replica is actually down - replicaMap.put(ZkStateReader.STATE_PROP, Replica.State.DOWN.toString()); - } + List liveNodes, Map collectionProps) { + var shards = (Map) collectionProps.get("shards"); + for (Object nextShard : shards.values()) { + var shardMap = (Map) nextShard; + var replicas = (Map) shardMap.get("replicas"); + for (Object nextReplica : replicas.values()) { + var replicaMap = (Map) nextReplica; + if (Replica.State.getState((String) replicaMap.get(ZkStateReader.STATE_PROP)) + != Replica.State.DOWN) { + // not down, so verify the node is live + String node_name = (String) replicaMap.get(ZkStateReader.NODE_NAME_PROP); + if (!liveNodes.contains(node_name)) { + // node is not live, so this replica is actually down + replicaMap.put(ZkStateReader.STATE_PROP, Replica.State.DOWN.toString()); } } } @@ -368,4 +347,47 @@ public static Map postProcessCollectionJSON(Map collection.put("health", Health.combine(healthStates).toString()); return collection; } + + private Map buildResponseForCollection( + DocCollection clusterStateCollection, + Map> collectionVsAliases, + String routeKey, + List liveNodes, + Set requestedShards) { + Map collectionStatus; + Set shards = new HashSet<>(); + String name = clusterStateCollection.getName(); + + if (routeKey != null) + clusterStateCollection + .getRouter() + .getSearchSlices(routeKey, null, clusterStateCollection) + .forEach((slice) -> shards.add(slice.getName())); + + if (requestedShards != null) shards.addAll(requestedShards); + + byte[] bytes = Utils.toJSON(clusterStateCollection); + @SuppressWarnings("unchecked") + Map docCollection = (Map) Utils.fromJSON(bytes); + collectionStatus = getCollectionStatus(docCollection, name, shards); + + collectionStatus.put("znodeVersion", clusterStateCollection.getZNodeVersion()); + collectionStatus.put( + "creationTimeMillis", clusterStateCollection.getCreationTime().toEpochMilli()); + + if (collectionVsAliases.containsKey(name) && !collectionVsAliases.get(name).isEmpty()) { + collectionStatus.put("aliases", collectionVsAliases.get(name)); + } + String configName = clusterStateCollection.getConfigName(); + collectionStatus.put("configName", configName); + if (solrParams.getBool("prs", false) && clusterStateCollection.isPerReplicaState()) { + PerReplicaStates prs = clusterStateCollection.getPerReplicaStates(); + collectionStatus.put("PRS", prs); + } + + // now we need to walk the collectionProps tree to cross-check replica state with live nodes + crossCheckReplicaStateWithLiveNodes(liveNodes, collectionStatus); + + return collectionStatus; + } } diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java index 760bf0bfe93..314655e85ce 100644 --- a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java +++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java @@ -16,6 +16,7 @@ */ package org.apache.solr.cloud.api.collections; +import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.time.Instant; import java.util.ArrayList; @@ -28,6 +29,7 @@ import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.impl.NoOpResponseParser; import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.CollectionAdminResponse; @@ -81,7 +83,6 @@ public void test() throws Exception { client.request(req); createCollection(null, COLLECTION_NAME1, 1, 1, client, null, "conf1"); } - waitForCollection(ZkStateReader.from(cloudClient), COLLECTION_NAME, 2); waitForCollection(ZkStateReader.from(cloudClient), COLLECTION_NAME1, 1); waitForRecoveriesToFinish(COLLECTION_NAME, false); @@ -91,6 +92,7 @@ public void test() throws Exception { clusterStatusNoCollection(); clusterStatusWithCollection(); clusterStatusWithCollectionAndShard(); + clusterStatusWithCollectionAndShardJSON(); clusterStatusWithCollectionAndMultipleShards(); clusterStatusWithCollectionHealthState(); clusterStatusWithRouteKey(); @@ -648,6 +650,39 @@ private void clusterStatusAliasTest() throws Exception { } } + @SuppressWarnings("unchecked") + private void clusterStatusWithCollectionAndShardJSON() throws IOException, SolrServerException { + + try (CloudSolrClient client = createCloudClient(null)) { + ObjectMapper mapper = new ObjectMapper(); + + ModifiableSolrParams params = new ModifiableSolrParams(); + params.set("action", CollectionParams.CollectionAction.CLUSTERSTATUS.toString()); + params.set("collection", COLLECTION_NAME); + params.set("shard", SHARD1); + params.set("wt", "json"); + QueryRequest request = new QueryRequest(params); + request.setResponseParser(new NoOpResponseParser("json")); + request.setPath("/admin/collections"); + NamedList rsp = client.request(request); + String actualResponse = (String) rsp.get("response"); + + Map result = mapper.readValue(actualResponse, Map.class); + + var cluster = (Map) result.get("cluster"); + assertNotNull("Cluster state should not be null", cluster); + var collections = (Map) cluster.get("collections"); + assertNotNull("Collections should not be null in cluster state", collections); + assertNotNull(collections.get(COLLECTION_NAME)); + assertEquals(1, collections.size()); + var collection = (Map) collections.get(COLLECTION_NAME); + var shardStatus = (Map) collection.get("shards"); + assertEquals(1, shardStatus.size()); + Map selectedShardStatus = (Map) shardStatus.get(SHARD1); + assertNotNull(selectedShardStatus); + } + } + private void clusterStatusRolesTest() throws Exception { try (CloudSolrClient client = createCloudClient(null)) { client.connect(); From 328cce634116df2ac1e318730f7e87daa708a282 Mon Sep 17 00:00:00 2001 From: Christos Malliaridis Date: Mon, 6 Jan 2025 11:15:19 +0200 Subject: [PATCH 02/16] Fix renovate.json to work with version catalogs (#2936) --- .github/renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 5cf53a4c5fd..94220882331 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -4,9 +4,9 @@ "enabled": true, "dependencyDashboard": false, "enabledManagers": ["gradle", "github-actions"], - "includePaths": ["versions.*", "build.gradle", ".github/workflows/*"], + "includePaths": ["gradle/libs.versions.toml", "versions.*", "build.gradle", ".github/workflows/*"], "postUpgradeTasks": { - "commands": ["./gradlew updateLicenses"], + "commands": ["./gradlew writeLocks", "./gradlew updateLicenses"], "fileFilters": ["solr/licenses/*.sha1"], "executionMode": "branch" }, From f844b7faf5f0046487f0f7d559b88a4b6e7d286a Mon Sep 17 00:00:00 2001 From: Christine Poerschke Date: Mon, 6 Jan 2025 13:08:57 +0000 Subject: [PATCH 03/16] Update copyright year in NOTICE.txt file. (#2933) --- NOTICE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NOTICE.txt b/NOTICE.txt index 49724175b40..ce7c667fc29 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,6 +1,6 @@ ============================================================== Apache Solr - Copyright 2006-2024 The Apache Software Foundation + Copyright 2006-2025 The Apache Software Foundation ============================================================== This product includes software developed at From ee1e48dce697c5da4e6b0f54acc300354722ca86 Mon Sep 17 00:00:00 2001 From: Pierre Salagnac Date: Mon, 6 Jan 2025 18:28:12 +0100 Subject: [PATCH 04/16] SOLR-17471: upgrade Lucene to version 9.12.1 (#2736) --- dev-docs/lucene-upgrade.md | 4 +- gradle/libs.versions.toml | 2 +- solr/CHANGES.txt | 2 +- .../apache/solr/core/SchemaCodecFactory.java | 6 +-- .../backup/repository/BackupRepository.java | 10 ++-- .../ClassicSimilarityFactory.java | 12 ++--- .../similarities/DFISimilarityFactory.java | 7 +-- .../similarities/DFRSimilarityFactory.java | 6 +-- .../similarities/IBSimilarityFactory.java | 6 +-- .../LMDirichletSimilarityFactory.java | 15 ++++-- .../LMJelinekMercerSimilarityFactory.java | 9 ++-- .../SweetSpotSimilarityFactory.java | 50 +++++++++++------ .../solr/collection1/conf/schema_codec.xml | 2 +- .../apache/solr/core/TestCodecSupport.java | 2 +- .../lucene-analysis-common-9.11.1.jar.sha1 | 1 - .../lucene-analysis-common-9.12.1.jar.sha1 | 1 + .../lucene-analysis-icu-9.11.1.jar.sha1 | 1 - .../lucene-analysis-icu-9.12.1.jar.sha1 | 1 + .../lucene-analysis-kuromoji-9.11.1.jar.sha1 | 1 - .../lucene-analysis-kuromoji-9.12.1.jar.sha1 | 1 + ...lucene-analysis-morfologik-9.11.1.jar.sha1 | 1 - ...lucene-analysis-morfologik-9.12.1.jar.sha1 | 1 + .../lucene-analysis-nori-9.11.1.jar.sha1 | 1 - .../lucene-analysis-nori-9.12.1.jar.sha1 | 1 + .../lucene-analysis-opennlp-9.11.1.jar.sha1 | 1 - .../lucene-analysis-opennlp-9.12.1.jar.sha1 | 1 + .../lucene-analysis-phonetic-9.11.1.jar.sha1 | 1 - .../lucene-analysis-phonetic-9.12.1.jar.sha1 | 1 + .../lucene-analysis-smartcn-9.11.1.jar.sha1 | 1 - .../lucene-analysis-smartcn-9.12.1.jar.sha1 | 1 + .../lucene-analysis-stempel-9.11.1.jar.sha1 | 1 - .../lucene-analysis-stempel-9.12.1.jar.sha1 | 1 + .../lucene-backward-codecs-9.11.1.jar.sha1 | 1 - .../lucene-backward-codecs-9.12.1.jar.sha1 | 1 + .../lucene-classification-9.11.1.jar.sha1 | 1 - .../lucene-classification-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-codecs-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-codecs-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-core-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-core-9.12.1.jar.sha1 | 1 + .../lucene-expressions-9.11.1.jar.sha1 | 1 - .../lucene-expressions-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-facet-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-grouping-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-grouping-9.12.1.jar.sha1 | 1 + .../lucene-highlighter-9.11.1.jar.sha1 | 1 - .../lucene-highlighter-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-join-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-join-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-memory-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-memory-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-misc-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-misc-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-queries-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-queries-9.12.1.jar.sha1 | 1 + .../lucene-queryparser-9.11.1.jar.sha1 | 1 - .../lucene-queryparser-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-sandbox-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-sandbox-9.12.1.jar.sha1 | 1 + .../lucene-spatial-extras-9.11.1.jar.sha1 | 1 - .../lucene-spatial-extras-9.12.1.jar.sha1 | 1 + .../licenses/lucene-spatial3d-9.11.1.jar.sha1 | 1 - .../licenses/lucene-spatial3d-9.12.1.jar.sha1 | 1 + solr/licenses/lucene-suggest-9.11.1.jar.sha1 | 1 - solr/licenses/lucene-suggest-9.12.1.jar.sha1 | 1 + .../lucene-test-framework-9.11.1.jar.sha1 | 1 - .../lucene-test-framework-9.12.1.jar.sha1 | 1 + .../apache/solr/gcs/GCSBackupRepository.java | 4 +- .../apache/solr/s3/S3BackupRepository.java | 5 +- .../solr/s3/S3BackupRepositoryTest.java | 11 ++-- .../configsets/_default/conf/solrconfig.xml | 2 +- .../conf/solrconfig.xml | 2 +- .../AbstractBackupRepositoryTest.java | 7 ++- versions.lock | 53 ++++++++++--------- 74 files changed, 141 insertions(+), 129 deletions(-) delete mode 100644 solr/licenses/lucene-analysis-common-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-common-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-kuromoji-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-kuromoji-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-morfologik-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-morfologik-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-opennlp-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-opennlp-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-phonetic-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-phonetic-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-smartcn-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-smartcn-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-analysis-stempel-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-analysis-stempel-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-backward-codecs-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-backward-codecs-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-classification-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-classification-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-codecs-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-codecs-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-core-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-core-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-expressions-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-expressions-9.12.1.jar.sha1 create mode 100644 solr/licenses/lucene-facet-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-grouping-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-grouping-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-highlighter-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-highlighter-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-join-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-join-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-memory-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-memory-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-misc-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-misc-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-queries-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-queries-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-queryparser-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-queryparser-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-sandbox-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-sandbox-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-spatial-extras-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-spatial-extras-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-spatial3d-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-spatial3d-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-suggest-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-suggest-9.12.1.jar.sha1 delete mode 100644 solr/licenses/lucene-test-framework-9.11.1.jar.sha1 create mode 100644 solr/licenses/lucene-test-framework-9.12.1.jar.sha1 diff --git a/dev-docs/lucene-upgrade.md b/dev-docs/lucene-upgrade.md index c9ee1a27802..e5ab91e7c9f 100644 --- a/dev-docs/lucene-upgrade.md +++ b/dev-docs/lucene-upgrade.md @@ -27,7 +27,7 @@ Create a new branch locally e.g. `git checkout -b lucene940 -t origin/main` for ## Build -### `versions.props` update +### `gradle/libs.versions.toml` update ``` - org.apache.lucene:*=9.3.0 @@ -37,7 +37,7 @@ Create a new branch locally e.g. `git checkout -b lucene940 -t origin/main` for ### `versions.lock` update ``` -gradlew --write-locks +gradlew :writeLocks ``` ### `solr/licenses` update diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dd7a5dfff0f..685fe012216 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -39,7 +39,7 @@ apache-httpcomponents-httpcore = "4.4.16" apache-httpcomponents-httpmime = "4.5.14" apache-kafka = "3.7.1" apache-log4j = "2.21.0" -apache-lucene = "9.11.1" +apache-lucene = "9.12.1" apache-opennlp = "1.9.4" apache-poi = "5.2.2" apache-rat = "0.15" diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 9ef3e302af9..b7291e9a23e 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -170,7 +170,7 @@ Bug Fixes Dependency Upgrades --------------------- -(No changes) +* SOLR-17471: Upgrade Lucene to 9.12.1. (Pierre Salagnac, Christine Poerschke) Other Changes --------------------- diff --git a/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java b/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java index a7d9305b3c3..cf1c0f18d0a 100644 --- a/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java +++ b/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java @@ -26,8 +26,8 @@ import org.apache.lucene.codecs.KnnVectorsReader; import org.apache.lucene.codecs.KnnVectorsWriter; import org.apache.lucene.codecs.PostingsFormat; -import org.apache.lucene.codecs.lucene99.Lucene99Codec; -import org.apache.lucene.codecs.lucene99.Lucene99Codec.Mode; +import org.apache.lucene.codecs.lucene912.Lucene912Codec; +import org.apache.lucene.codecs.lucene912.Lucene912Codec.Mode; import org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsFormat; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; @@ -97,7 +97,7 @@ public void init(NamedList args) { log.debug("Using default compressionMode: {}", compressionMode); } codec = - new Lucene99Codec(compressionMode) { + new Lucene912Codec(compressionMode) { @Override public PostingsFormat getPostingsFormatForField(String field) { final SchemaField schemaField = core.getLatestSchema().getFieldOrNull(field); diff --git a/solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java b/solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java index 68cf5636fdd..5e45e5ef206 100644 --- a/solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java +++ b/solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java @@ -31,7 +31,6 @@ import org.apache.lucene.store.IndexOutput; import org.apache.lucene.util.IOUtils; import org.apache.solr.common.params.CoreAdminParams; -import org.apache.solr.core.DirectoryFactory; import org.apache.solr.core.backup.Checksum; import org.apache.solr.util.plugin.NamedListInitializedPlugin; @@ -217,9 +216,8 @@ default void copyIndexFileFrom( Directory sourceDir, String sourceFileName, Directory destDir, String destFileName) throws IOException { boolean success = false; - try (ChecksumIndexInput is = - sourceDir.openChecksumInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE); - IndexOutput os = destDir.createOutput(destFileName, DirectoryFactory.IOCONTEXT_NO_CACHE)) { + try (ChecksumIndexInput is = sourceDir.openChecksumInput(sourceFileName, IOContext.READONCE); + IndexOutput os = destDir.createOutput(destFileName, IOContext.READONCE)) { os.copyBytes(is, is.length() - CodecUtil.footerLength()); // ensure that index file is not corrupted @@ -300,8 +298,8 @@ default void copyFileNoChecksum( Directory sourceDir, String sourceFileName, Directory destDir, String destFileName) throws IOException { boolean success = false; - try (IndexInput is = sourceDir.openInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE); - IndexOutput os = destDir.createOutput(destFileName, DirectoryFactory.IOCONTEXT_NO_CACHE)) { + try (IndexInput is = sourceDir.openInput(sourceFileName, IOContext.READONCE); + IndexOutput os = destDir.createOutput(destFileName, IOContext.READONCE)) { os.copyBytes(is, is.length()); success = true; } finally { diff --git a/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java index 250ca045acf..ade8362ee88 100644 --- a/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java +++ b/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java @@ -31,7 +31,7 @@ *

Optional settings: * *

    - *
  • discountOverlaps (bool): Sets {@link ClassicSimilarity#setDiscountOverlaps(boolean)} + *
  • discountOverlaps (bool): Sets {@link ClassicSimilarity#getDiscountOverlaps()}. *
* * @see TFIDFSimilarity @@ -41,13 +41,13 @@ public class ClassicSimilarityFactory extends SimilarityFactory { /** * Init param name for specifying the value to use in {@link - * ClassicSimilarity#setDiscountOverlaps(boolean)} + * ClassicSimilarity#getDiscountOverlaps()}. */ public static final String DISCOUNT_OVERLAPS = "discountOverlaps"; /** - * Controls the value of {@link ClassicSimilarity#setDiscountOverlaps(boolean)} on newly - * constructed instances of {@link ClassicSimilarity} + * Controls the value of {@link ClassicSimilarity#getDiscountOverlaps()} on newly constructed + * instances of {@link ClassicSimilarity} */ protected boolean discountOverlaps = true; @@ -59,8 +59,6 @@ public void init(SolrParams params) { @Override public Similarity getSimilarity() { - ClassicSimilarity sim = new ClassicSimilarity(); - sim.setDiscountOverlaps(discountOverlaps); - return sim; + return new ClassicSimilarity(discountOverlaps); } } diff --git a/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java index df5ea9f1182..7bdb9f8e518 100644 --- a/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java +++ b/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java @@ -39,8 +39,7 @@ * Optional settings: * *
    - *
  • discountOverlaps (bool): Sets {@link - * org.apache.lucene.search.similarities.SimilarityBase#setDiscountOverlaps(boolean)} + *
  • discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()} *
* * @lucene.experimental @@ -59,9 +58,7 @@ public void init(SolrParams params) { @Override public Similarity getSimilarity() { - DFISimilarity sim = new DFISimilarity(independenceMeasure); - sim.setDiscountOverlaps(discountOverlaps); - return sim; + return new DFISimilarity(independenceMeasure, discountOverlaps); } private Independence parseIndependenceMeasure(String expr) { diff --git a/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java index 61b972f604b..63cca3194f5 100644 --- a/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java +++ b/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java @@ -86,7 +86,7 @@ *

Optional settings: * *

    - *
  • discountOverlaps (bool): Sets {@link DFRSimilarity#setDiscountOverlaps(boolean)} + *
  • discountOverlaps (bool): Sets {@link Similarity#getDiscountOverlaps()} *
* * @lucene.experimental @@ -160,8 +160,6 @@ static Normalization parseNormalization(String expr, String c, String mu, String @Override public Similarity getSimilarity() { - DFRSimilarity sim = new DFRSimilarity(basicModel, afterEffect, normalization); - sim.setDiscountOverlaps(discountOverlaps); - return sim; + return new DFRSimilarity(basicModel, afterEffect, normalization, discountOverlaps); } } diff --git a/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java index 6c387fe93de..b397b9c655a 100644 --- a/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java +++ b/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java @@ -56,7 +56,7 @@ *

Optional settings: * *

    - *
  • discountOverlaps (bool): Sets {@link IBSimilarity#setDiscountOverlaps(boolean)} + *
  • discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()} *
* * @lucene.experimental @@ -100,8 +100,6 @@ private Lambda parseLambda(String expr) { @Override public Similarity getSimilarity() { - IBSimilarity sim = new IBSimilarity(distribution, lambda, normalization); - sim.setDiscountOverlaps(discountOverlaps); - return sim; + return new IBSimilarity(distribution, lambda, normalization, discountOverlaps); } } diff --git a/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java index d23430d45ab..8792e5ff0d7 100644 --- a/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java +++ b/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java @@ -17,6 +17,7 @@ package org.apache.solr.search.similarities; import org.apache.lucene.search.similarities.LMDirichletSimilarity; +import org.apache.lucene.search.similarities.LMSimilarity; import org.apache.lucene.search.similarities.Similarity; import org.apache.solr.common.params.SolrParams; import org.apache.solr.schema.SimilarityFactory; @@ -33,7 +34,7 @@ *

Optional settings: * *

    - *
  • discountOverlaps (bool): Sets {@link LMDirichletSimilarity#setDiscountOverlaps(boolean)} + *
  • discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()} *
* * @lucene.experimental @@ -51,9 +52,13 @@ public void init(SolrParams params) { @Override public Similarity getSimilarity() { - LMDirichletSimilarity sim = - (mu != null) ? new LMDirichletSimilarity(mu) : new LMDirichletSimilarity(); - sim.setDiscountOverlaps(discountOverlaps); - return sim; + + // Default μ is 2000 in Lucene. Unfortunately, there is no constant we can use + if (mu == null) { + mu = 2000f; + } + + LMSimilarity.CollectionModel model = new LMSimilarity.DefaultCollectionModel(); + return new LMDirichletSimilarity(model, discountOverlaps, mu); } } diff --git a/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java index 1f5549b769f..384dc5d9c37 100644 --- a/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java +++ b/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java @@ -17,6 +17,7 @@ package org.apache.solr.search.similarities; import org.apache.lucene.search.similarities.LMJelinekMercerSimilarity; +import org.apache.lucene.search.similarities.LMSimilarity; import org.apache.lucene.search.similarities.Similarity; import org.apache.solr.common.params.SolrParams; import org.apache.solr.schema.SimilarityFactory; @@ -33,8 +34,7 @@ *

Optional settings: * *

    - *
  • discountOverlaps (bool): Sets {@link - * LMJelinekMercerSimilarity#setDiscountOverlaps(boolean)} + *
  • discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()} *
* * @lucene.experimental @@ -52,8 +52,7 @@ public void init(SolrParams params) { @Override public Similarity getSimilarity() { - LMJelinekMercerSimilarity sim = new LMJelinekMercerSimilarity(lambda); - sim.setDiscountOverlaps(discountOverlaps); - return sim; + LMSimilarity.CollectionModel model = new LMSimilarity.DefaultCollectionModel(); + return new LMJelinekMercerSimilarity(model, discountOverlaps, lambda); } } diff --git a/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java index 8dfc886dcc7..e312398bc48 100644 --- a/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java +++ b/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java @@ -104,33 +104,44 @@ * for SVG diagrams showing how the each function behaves with various settings/inputs. */ public class SweetSpotSimilarityFactory extends ClassicSimilarityFactory { - private SweetSpotSimilarity sim = null; + + private Integer ln_min; + private Integer ln_max; + private Float ln_steep; + + private Float hyper_min; + private Float hyper_max; + private Double hyper_base; + private Float hyper_offset; + + private Float baseline_base; + private Float baseline_min; @Override public void init(SolrParams params) { super.init(params); - Integer ln_min = params.getInt("lengthNormMin"); - Integer ln_max = params.getInt("lengthNormMax"); - Float ln_steep = params.getFloat("lengthNormSteepness"); + ln_min = params.getInt("lengthNormMin"); + ln_max = params.getInt("lengthNormMax"); + ln_steep = params.getFloat("lengthNormSteepness"); if (!allOrNoneNull(ln_min, ln_max, ln_steep)) { throw new SolrException( SERVER_ERROR, "Overriding default lengthNorm settings requires all to be specified: lengthNormMin, lengthNormMax, lengthNormSteepness"); } - Float hyper_min = params.getFloat("hyperbolicTfMin"); - Float hyper_max = params.getFloat("hyperbolicTfMax"); - Double hyper_base = params.getDouble("hyperbolicTfBase"); - Float hyper_offset = params.getFloat("hyperbolicTfOffset"); + hyper_min = params.getFloat("hyperbolicTfMin"); + hyper_max = params.getFloat("hyperbolicTfMax"); + hyper_base = params.getDouble("hyperbolicTfBase"); + hyper_offset = params.getFloat("hyperbolicTfOffset"); if (!allOrNoneNull(hyper_min, hyper_max, hyper_base, hyper_offset)) { throw new SolrException( SERVER_ERROR, "Overriding default hyperbolicTf settings requires all to be specified: hyperbolicTfMin, hyperbolicTfMax, hyperbolicTfBase, hyperbolicTfOffset"); } - Float baseline_base = params.getFloat("baselineTfBase"); - Float baseline_min = params.getFloat("baselineTfMin"); + baseline_base = params.getFloat("baselineTfBase"); + baseline_min = params.getFloat("baselineTfMin"); if (!allOrNoneNull(baseline_min, baseline_base)) { throw new SolrException( SERVER_ERROR, @@ -142,13 +153,19 @@ public void init(SolrParams params) { throw new SolrException( SERVER_ERROR, "Can not mix hyperbolicTf settings with baselineTf settings"); } + } + @Override + public Similarity getSimilarity() { // pick Similarity impl based on whether hyper tf settings are set - sim = (null != hyper_min) ? new HyperbolicSweetSpotSimilarity() : new SweetSpotSimilarity(); + SweetSpotSimilarity sim = + (null != hyper_min) + ? new HyperbolicSweetSpotSimilarity(discountOverlaps) + : new SweetSpotSimilarity(discountOverlaps); if (null != ln_min) { // overlaps already handled by super factory - sim.setLengthNormFactors(ln_min, ln_max, ln_steep, this.discountOverlaps); + sim.setLengthNormFactors(ln_min, ln_max, ln_steep); } if (null != hyper_min) { @@ -158,11 +175,7 @@ public void init(SolrParams params) { if (null != baseline_min) { sim.setBaselineTfFactors(baseline_base, baseline_min); } - } - @Override - public Similarity getSimilarity() { - assert sim != null : "SweetSpotSimilarityFactory was not initialized"; return sim; } @@ -181,6 +194,11 @@ private static boolean allOrNoneNull(Object... args) { } private static final class HyperbolicSweetSpotSimilarity extends SweetSpotSimilarity { + + private HyperbolicSweetSpotSimilarity(boolean discountOverlaps) { + super(discountOverlaps); + } + @Override public float tf(float freq) { return hyperbolicTf(freq); diff --git a/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml b/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml index 29e62e3c88c..5095c0c01ac 100644 --- a/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml +++ b/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml @@ -20,7 +20,7 @@ as a way to vet that the configuration actually matters. --> - + diff --git a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java index 54f7406635d..f5f084da8ab 100644 --- a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java +++ b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java @@ -22,7 +22,7 @@ import java.util.Map; import java.util.Set; import org.apache.lucene.codecs.Codec; -import org.apache.lucene.codecs.lucene99.Lucene99Codec.Mode; +import org.apache.lucene.codecs.lucene912.Lucene912Codec.Mode; import org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat; import org.apache.lucene.codecs.perfield.PerFieldPostingsFormat; import org.apache.lucene.index.SegmentInfo; diff --git a/solr/licenses/lucene-analysis-common-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-common-9.11.1.jar.sha1 deleted file mode 100644 index 2b71b2f9ebf..00000000000 --- a/solr/licenses/lucene-analysis-common-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -51286aca019db66311f71496191b4bd7adaf3dcf diff --git a/solr/licenses/lucene-analysis-common-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-common-9.12.1.jar.sha1 new file mode 100644 index 00000000000..805ece8fb95 --- /dev/null +++ b/solr/licenses/lucene-analysis-common-9.12.1.jar.sha1 @@ -0,0 +1 @@ +86836497e35c1ab33259d9864ceb280c0016075e diff --git a/solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1 deleted file mode 100644 index 95765d43eab..00000000000 --- a/solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -028beadfa152c159d21d880461c06f895052bd33 diff --git a/solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1 new file mode 100644 index 00000000000..d938191bbfd --- /dev/null +++ b/solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1 @@ -0,0 +1 @@ +abaef4767ad64289e62abdd4606bf6ed2ddea0fd diff --git a/solr/licenses/lucene-analysis-kuromoji-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-kuromoji-9.11.1.jar.sha1 deleted file mode 100644 index d51f9c1b6ea..00000000000 --- a/solr/licenses/lucene-analysis-kuromoji-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -701c1366189c4410d3cb1f8607df2e50621bfd22 diff --git a/solr/licenses/lucene-analysis-kuromoji-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-kuromoji-9.12.1.jar.sha1 new file mode 100644 index 00000000000..af4a809392a --- /dev/null +++ b/solr/licenses/lucene-analysis-kuromoji-9.12.1.jar.sha1 @@ -0,0 +1 @@ +635c41143b896f402589d29e33695dcfabae9cc5 diff --git a/solr/licenses/lucene-analysis-morfologik-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-morfologik-9.11.1.jar.sha1 deleted file mode 100644 index 8421387ddb6..00000000000 --- a/solr/licenses/lucene-analysis-morfologik-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -20fe70fa74097c35c9aaaa5c0e19ca5f7ac93141 diff --git a/solr/licenses/lucene-analysis-morfologik-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-morfologik-9.12.1.jar.sha1 new file mode 100644 index 00000000000..0df56116cac --- /dev/null +++ b/solr/licenses/lucene-analysis-morfologik-9.12.1.jar.sha1 @@ -0,0 +1 @@ +d8e4716dab6d829e7b37a8b185cbd242650aeb9e diff --git a/solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1 deleted file mode 100644 index 3cd3de6f22d..00000000000 --- a/solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -46e8f4f3f2f540307fe7d9f500ddc56c1e74d400 diff --git a/solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1 new file mode 100644 index 00000000000..2ebf1d07eed --- /dev/null +++ b/solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1 @@ -0,0 +1 @@ +e265410a6a4d9cd23b2e9c73321e6bd307bc1422 diff --git a/solr/licenses/lucene-analysis-opennlp-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-opennlp-9.11.1.jar.sha1 deleted file mode 100644 index 3d521c374c6..00000000000 --- a/solr/licenses/lucene-analysis-opennlp-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -8acc70958b0549705c45587bf315b2884a8eb169 diff --git a/solr/licenses/lucene-analysis-opennlp-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-opennlp-9.12.1.jar.sha1 new file mode 100644 index 00000000000..77cf5acafe1 --- /dev/null +++ b/solr/licenses/lucene-analysis-opennlp-9.12.1.jar.sha1 @@ -0,0 +1 @@ +021d892f1946bc238c6e9a651f9446813b715c5a diff --git a/solr/licenses/lucene-analysis-phonetic-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-phonetic-9.11.1.jar.sha1 deleted file mode 100644 index 144a5724a1a..00000000000 --- a/solr/licenses/lucene-analysis-phonetic-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -5d8eca81f0d1e5671bf1f1692225f7d8cc7977e8 diff --git a/solr/licenses/lucene-analysis-phonetic-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-phonetic-9.12.1.jar.sha1 new file mode 100644 index 00000000000..09dd0aa365c --- /dev/null +++ b/solr/licenses/lucene-analysis-phonetic-9.12.1.jar.sha1 @@ -0,0 +1 @@ +3787b8edc0cfad21998abc6aeb9d2cbf152b4b26 diff --git a/solr/licenses/lucene-analysis-smartcn-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-smartcn-9.11.1.jar.sha1 deleted file mode 100644 index 4cfb7e94652..00000000000 --- a/solr/licenses/lucene-analysis-smartcn-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e900ea081428c3fdc7ec7a48f9c392871304476e diff --git a/solr/licenses/lucene-analysis-smartcn-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-smartcn-9.12.1.jar.sha1 new file mode 100644 index 00000000000..eed0ea08e27 --- /dev/null +++ b/solr/licenses/lucene-analysis-smartcn-9.12.1.jar.sha1 @@ -0,0 +1 @@ +e935f600bf153c46f5725198ca9352c32025f274 diff --git a/solr/licenses/lucene-analysis-stempel-9.11.1.jar.sha1 b/solr/licenses/lucene-analysis-stempel-9.11.1.jar.sha1 deleted file mode 100644 index 59120fa4610..00000000000 --- a/solr/licenses/lucene-analysis-stempel-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -50f4d2400fa6264bf682028d8c7b6bbdd588b496 diff --git a/solr/licenses/lucene-analysis-stempel-9.12.1.jar.sha1 b/solr/licenses/lucene-analysis-stempel-9.12.1.jar.sha1 new file mode 100644 index 00000000000..12e57532ee6 --- /dev/null +++ b/solr/licenses/lucene-analysis-stempel-9.12.1.jar.sha1 @@ -0,0 +1 @@ +c4e1c94b1adbd1cb9dbdc0d3c2d2c33beabfc777 diff --git a/solr/licenses/lucene-backward-codecs-9.11.1.jar.sha1 b/solr/licenses/lucene-backward-codecs-9.11.1.jar.sha1 deleted file mode 100644 index d8e756dd606..00000000000 --- a/solr/licenses/lucene-backward-codecs-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -948fda53ceeb0fa1b835af5376abec771b2c3fb1 diff --git a/solr/licenses/lucene-backward-codecs-9.12.1.jar.sha1 b/solr/licenses/lucene-backward-codecs-9.12.1.jar.sha1 new file mode 100644 index 00000000000..c8871fa4179 --- /dev/null +++ b/solr/licenses/lucene-backward-codecs-9.12.1.jar.sha1 @@ -0,0 +1 @@ +d0e79d06a0ed021663737e4df777ab7b80cd28c4 diff --git a/solr/licenses/lucene-classification-9.11.1.jar.sha1 b/solr/licenses/lucene-classification-9.11.1.jar.sha1 deleted file mode 100644 index 3d17b3b3af8..00000000000 --- a/solr/licenses/lucene-classification-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -8a157f57964e1b8b9106b8c70083387f5a212362 diff --git a/solr/licenses/lucene-classification-9.12.1.jar.sha1 b/solr/licenses/lucene-classification-9.12.1.jar.sha1 new file mode 100644 index 00000000000..81a3850dc0d --- /dev/null +++ b/solr/licenses/lucene-classification-9.12.1.jar.sha1 @@ -0,0 +1 @@ +a64da0d06bedcf7a7a6ca5b13d0b49918717d576 diff --git a/solr/licenses/lucene-codecs-9.11.1.jar.sha1 b/solr/licenses/lucene-codecs-9.11.1.jar.sha1 deleted file mode 100644 index 87712934448..00000000000 --- a/solr/licenses/lucene-codecs-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -b1f1f273e1a2a956528dbf2abf4f7300b18648b2 diff --git a/solr/licenses/lucene-codecs-9.12.1.jar.sha1 b/solr/licenses/lucene-codecs-9.12.1.jar.sha1 new file mode 100644 index 00000000000..e65e95728d0 --- /dev/null +++ b/solr/licenses/lucene-codecs-9.12.1.jar.sha1 @@ -0,0 +1 @@ +cf88c401660f80fd7a3c0896c180581126880697 diff --git a/solr/licenses/lucene-core-9.11.1.jar.sha1 b/solr/licenses/lucene-core-9.11.1.jar.sha1 deleted file mode 100644 index d6f1be77240..00000000000 --- a/solr/licenses/lucene-core-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -8f52ba14b21774f41ce33cf5ca111cbdefeed7f9 diff --git a/solr/licenses/lucene-core-9.12.1.jar.sha1 b/solr/licenses/lucene-core-9.12.1.jar.sha1 new file mode 100644 index 00000000000..2000314c74c --- /dev/null +++ b/solr/licenses/lucene-core-9.12.1.jar.sha1 @@ -0,0 +1 @@ +91447c90c1180122142773b5baddaf8547124794 diff --git a/solr/licenses/lucene-expressions-9.11.1.jar.sha1 b/solr/licenses/lucene-expressions-9.11.1.jar.sha1 deleted file mode 100644 index cb9f8b66836..00000000000 --- a/solr/licenses/lucene-expressions-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e46fbc4fd325ca00ed5a7cacde7ffafa01d7973e diff --git a/solr/licenses/lucene-expressions-9.12.1.jar.sha1 b/solr/licenses/lucene-expressions-9.12.1.jar.sha1 new file mode 100644 index 00000000000..870d6a91d7e --- /dev/null +++ b/solr/licenses/lucene-expressions-9.12.1.jar.sha1 @@ -0,0 +1 @@ +667ee99f31c8e42eac70b0adcf8deb4232935430 diff --git a/solr/licenses/lucene-facet-9.12.1.jar.sha1 b/solr/licenses/lucene-facet-9.12.1.jar.sha1 new file mode 100644 index 00000000000..469a8a45fac --- /dev/null +++ b/solr/licenses/lucene-facet-9.12.1.jar.sha1 @@ -0,0 +1 @@ +265df739cf97862931606395a10a0d0b97ff7f97 diff --git a/solr/licenses/lucene-grouping-9.11.1.jar.sha1 b/solr/licenses/lucene-grouping-9.11.1.jar.sha1 deleted file mode 100644 index 8290e22d3c4..00000000000 --- a/solr/licenses/lucene-grouping-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -0bdf9db0134523d2a41123dca1018f4c771c7b23 diff --git a/solr/licenses/lucene-grouping-9.12.1.jar.sha1 b/solr/licenses/lucene-grouping-9.12.1.jar.sha1 new file mode 100644 index 00000000000..7fa34405470 --- /dev/null +++ b/solr/licenses/lucene-grouping-9.12.1.jar.sha1 @@ -0,0 +1 @@ +e4bc3d0aa7eec4f41b4f350de0263a8d5625d2b3 diff --git a/solr/licenses/lucene-highlighter-9.11.1.jar.sha1 b/solr/licenses/lucene-highlighter-9.11.1.jar.sha1 deleted file mode 100644 index 5fd7ac44ddc..00000000000 --- a/solr/licenses/lucene-highlighter-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e16cc9c531998a76eb5528147b5f07596f95fad8 diff --git a/solr/licenses/lucene-highlighter-9.12.1.jar.sha1 b/solr/licenses/lucene-highlighter-9.12.1.jar.sha1 new file mode 100644 index 00000000000..ddd10ca6e1c --- /dev/null +++ b/solr/licenses/lucene-highlighter-9.12.1.jar.sha1 @@ -0,0 +1 @@ +2eeedfcec47dd65969f36e88931ed452291dd43e diff --git a/solr/licenses/lucene-join-9.11.1.jar.sha1 b/solr/licenses/lucene-join-9.11.1.jar.sha1 deleted file mode 100644 index db5c2e0ad13..00000000000 --- a/solr/licenses/lucene-join-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -f7d63c04f3cc2ec8d7df73178db20de34cf60667 diff --git a/solr/licenses/lucene-join-9.12.1.jar.sha1 b/solr/licenses/lucene-join-9.12.1.jar.sha1 new file mode 100644 index 00000000000..b03ee165abc --- /dev/null +++ b/solr/licenses/lucene-join-9.12.1.jar.sha1 @@ -0,0 +1 @@ +3c5e9ff2925a8373ae0d35c1d0a7b2465cebec9f diff --git a/solr/licenses/lucene-memory-9.11.1.jar.sha1 b/solr/licenses/lucene-memory-9.11.1.jar.sha1 deleted file mode 100644 index bdd68d82720..00000000000 --- a/solr/licenses/lucene-memory-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -4221baad5c40849f641f0f5c1b8e2f2dfcf1e73a diff --git a/solr/licenses/lucene-memory-9.12.1.jar.sha1 b/solr/licenses/lucene-memory-9.12.1.jar.sha1 new file mode 100644 index 00000000000..e0541f0f417 --- /dev/null +++ b/solr/licenses/lucene-memory-9.12.1.jar.sha1 @@ -0,0 +1 @@ +e80eecfb1dcc324140387c8357c81e12c2a01937 diff --git a/solr/licenses/lucene-misc-9.11.1.jar.sha1 b/solr/licenses/lucene-misc-9.11.1.jar.sha1 deleted file mode 100644 index 53bc1cb906b..00000000000 --- a/solr/licenses/lucene-misc-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -a3ecdb999c3d3435ead88771ce215834bd8be7b8 diff --git a/solr/licenses/lucene-misc-9.12.1.jar.sha1 b/solr/licenses/lucene-misc-9.12.1.jar.sha1 new file mode 100644 index 00000000000..bed6c11b854 --- /dev/null +++ b/solr/licenses/lucene-misc-9.12.1.jar.sha1 @@ -0,0 +1 @@ +4e65d01d1c23f3f49dc325d552701bbefafee7ee diff --git a/solr/licenses/lucene-queries-9.11.1.jar.sha1 b/solr/licenses/lucene-queries-9.11.1.jar.sha1 deleted file mode 100644 index d8e030fc1f2..00000000000 --- a/solr/licenses/lucene-queries-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -027fc885a0442a0442f426f7fea9743f6fcf3c43 diff --git a/solr/licenses/lucene-queries-9.12.1.jar.sha1 b/solr/licenses/lucene-queries-9.12.1.jar.sha1 new file mode 100644 index 00000000000..1cda38477b3 --- /dev/null +++ b/solr/licenses/lucene-queries-9.12.1.jar.sha1 @@ -0,0 +1 @@ +14f24315041b686683dba4bc679ca7dc6a505906 diff --git a/solr/licenses/lucene-queryparser-9.11.1.jar.sha1 b/solr/licenses/lucene-queryparser-9.11.1.jar.sha1 deleted file mode 100644 index 1f69eb506fd..00000000000 --- a/solr/licenses/lucene-queryparser-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -ad6e5b135e1e284d4462d717086ce13a3ce01b4a diff --git a/solr/licenses/lucene-queryparser-9.12.1.jar.sha1 b/solr/licenses/lucene-queryparser-9.12.1.jar.sha1 new file mode 100644 index 00000000000..9baf9838b20 --- /dev/null +++ b/solr/licenses/lucene-queryparser-9.12.1.jar.sha1 @@ -0,0 +1 @@ +aa6df09a99f8881d843e9863aa1713dc9f3ed24f diff --git a/solr/licenses/lucene-sandbox-9.11.1.jar.sha1 b/solr/licenses/lucene-sandbox-9.11.1.jar.sha1 deleted file mode 100644 index 6613da2336a..00000000000 --- a/solr/licenses/lucene-sandbox-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -9d6a88d9cb7f206c12d13c4fe48f8c7a973ebdb5 diff --git a/solr/licenses/lucene-sandbox-9.12.1.jar.sha1 b/solr/licenses/lucene-sandbox-9.12.1.jar.sha1 new file mode 100644 index 00000000000..87836cb52c9 --- /dev/null +++ b/solr/licenses/lucene-sandbox-9.12.1.jar.sha1 @@ -0,0 +1 @@ +1a66485629d60779f039fc26360f4374ef1496e7 diff --git a/solr/licenses/lucene-spatial-extras-9.11.1.jar.sha1 b/solr/licenses/lucene-spatial-extras-9.11.1.jar.sha1 deleted file mode 100644 index ed1128ece9b..00000000000 --- a/solr/licenses/lucene-spatial-extras-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d3938d4f63a29a6e8396416ec6e6e835826e7734 diff --git a/solr/licenses/lucene-spatial-extras-9.12.1.jar.sha1 b/solr/licenses/lucene-spatial-extras-9.12.1.jar.sha1 new file mode 100644 index 00000000000..3495009b5a5 --- /dev/null +++ b/solr/licenses/lucene-spatial-extras-9.12.1.jar.sha1 @@ -0,0 +1 @@ +0a7379410eff21676472adc8ea76a57891ec83c2 diff --git a/solr/licenses/lucene-spatial3d-9.11.1.jar.sha1 b/solr/licenses/lucene-spatial3d-9.11.1.jar.sha1 deleted file mode 100644 index f6dc1cf4979..00000000000 --- a/solr/licenses/lucene-spatial3d-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d9c48cf29e8736e6ce6cd81c614367b10210523c diff --git a/solr/licenses/lucene-spatial3d-9.12.1.jar.sha1 b/solr/licenses/lucene-spatial3d-9.12.1.jar.sha1 new file mode 100644 index 00000000000..4dea89bd83e --- /dev/null +++ b/solr/licenses/lucene-spatial3d-9.12.1.jar.sha1 @@ -0,0 +1 @@ +d2fdea4edabb1f616f494999651c43abfd0aa124 diff --git a/solr/licenses/lucene-suggest-9.11.1.jar.sha1 b/solr/licenses/lucene-suggest-9.11.1.jar.sha1 deleted file mode 100644 index 2d79215b57e..00000000000 --- a/solr/licenses/lucene-suggest-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -9cceafd67d032d2a507e81f797e05eb284849987 diff --git a/solr/licenses/lucene-suggest-9.12.1.jar.sha1 b/solr/licenses/lucene-suggest-9.12.1.jar.sha1 new file mode 100644 index 00000000000..7cceda02bf6 --- /dev/null +++ b/solr/licenses/lucene-suggest-9.12.1.jar.sha1 @@ -0,0 +1 @@ +0660e0996ec7653fe0c13c608137e264645eecac diff --git a/solr/licenses/lucene-test-framework-9.11.1.jar.sha1 b/solr/licenses/lucene-test-framework-9.11.1.jar.sha1 deleted file mode 100644 index bce92787396..00000000000 --- a/solr/licenses/lucene-test-framework-9.11.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -9a3c349131233d2b5c258dff0cac77627525c14a diff --git a/solr/licenses/lucene-test-framework-9.12.1.jar.sha1 b/solr/licenses/lucene-test-framework-9.12.1.jar.sha1 new file mode 100644 index 00000000000..f7a37882d52 --- /dev/null +++ b/solr/licenses/lucene-test-framework-9.12.1.jar.sha1 @@ -0,0 +1 @@ +d348aac4eff0371888f45b2aaa9034922b96b466 diff --git a/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java b/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java index 13f9f78bcd5..f2b8867b1b8 100644 --- a/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java +++ b/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java @@ -344,8 +344,8 @@ public void copyIndexFileFrom( final BlobInfo blobInfo = BlobInfo.newBuilder(bucketName, blobName).build(); try (IndexInput input = shouldVerifyChecksum - ? sourceDir.openChecksumInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE) - : sourceDir.openInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE)) { + ? sourceDir.openChecksumInput(sourceFileName, IOContext.READONCE) + : sourceDir.openInput(sourceFileName, IOContext.READONCE)) { if (input.length() <= CodecUtil.footerLength()) { throw new CorruptIndexException("file is too small:" + input.length(), input); } diff --git a/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java b/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java index 122dcc11918..29b6daffb55 100644 --- a/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java +++ b/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java @@ -38,7 +38,6 @@ import org.apache.solr.common.SolrException; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.StrUtils; -import org.apache.solr.core.DirectoryFactory; import org.apache.solr.core.backup.repository.AbstractBackupRepository; import org.apache.solr.core.backup.repository.BackupRepository; import org.slf4j.Logger; @@ -280,8 +279,8 @@ public void copyIndexFileFrom( try (IndexInput indexInput = shouldVerifyChecksum - ? sourceDir.openChecksumInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE) - : sourceDir.openInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE)) { + ? sourceDir.openChecksumInput(sourceFileName, IOContext.READONCE) + : sourceDir.openInput(sourceFileName, IOContext.READONCE)) { if (indexInput.length() <= CodecUtil.footerLength()) { throw new CorruptIndexException("file is too small:" + indexInput.length(), indexInput); } diff --git a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java index 71617a1f028..498b0788ab0 100644 --- a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java +++ b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java @@ -33,7 +33,6 @@ import org.apache.lucene.store.IOContext; import org.apache.lucene.store.IndexInput; import org.apache.lucene.store.IndexOutput; -import org.apache.lucene.store.NIOFSDirectory; import org.apache.lucene.store.OutputStreamIndexOutput; import org.apache.solr.cloud.api.collections.AbstractBackupRepositoryTest; import org.apache.solr.common.util.NamedList; @@ -187,8 +186,9 @@ private void doTestCopyFileFrom(String content) throws Exception { CodecUtil.writeFooter(indexOutput); } - Directory sourceDir = new NIOFSDirectory(tmp.toPath()); - repo.copyIndexFileFrom(sourceDir, "from-file", new URI("s3://to-folder"), "to-file"); + try (Directory sourceDir = newFSDirectory(tmp.toPath())) { + repo.copyIndexFileFrom(sourceDir, "from-file", new URI("s3://to-folder"), "to-file"); + } // Sanity check: we do have different files File actualSource = new File(tmp, "from-file"); @@ -208,12 +208,13 @@ private void doTestCopyFileTo(String content) throws Exception { // Local folder for destination File tmp = temporaryFolder.newFolder(); - Directory destDir = new NIOFSDirectory(tmp.toPath()); // Directly create a file on S3 pushObject("from-file", content); - repo.copyIndexFileTo(new URI("s3:///"), "from-file", destDir, "to-file"); + try (Directory destDir = newFSDirectory(tmp.toPath())) { + repo.copyIndexFileTo(new URI("s3:///"), "from-file", destDir, "to-file"); + } // Sanity check: we do have different files File actualSource = pullObject("from-file"); diff --git a/solr/server/solr/configsets/_default/conf/solrconfig.xml b/solr/server/solr/configsets/_default/conf/solrconfig.xml index 3cec6a4e578..4ca8a8db187 100644 --- a/solr/server/solr/configsets/_default/conf/solrconfig.xml +++ b/solr/server/solr/configsets/_default/conf/solrconfig.xml @@ -35,7 +35,7 @@ that you fully re-index after changing this setting as it can affect both how text is indexed and queried. --> - 9.11 + 9.12 - 9.11 + 9.12 - - - - - - UTF8TEST - Test with some UTF-8 encoded characters - Apache Software Foundation - software - search - No accents here - This is an e acute: é - eaiou with circumflexes: êâîôû - eaiou with umlauts: ëäïöü - tag with escaped chars: <nicetag/> - escaped ampersand: Bonnie & Clyde - Outside the BMP:𐌈 codepoint=10308, a circle with an x inside. UTF8=f0908c88 UTF16=d800 df08 - 0.0 - true - - diff --git a/solr/packaging/test/test_post.bats b/solr/packaging/test/test_post.bats index 277631297f9..fa60a76afb0 100644 --- a/solr/packaging/test/test_post.bats +++ b/solr/packaging/test/test_post.bats @@ -120,8 +120,8 @@ teardown() { # We filter to xml,json,and csv as we don't want to invoke the Extract handler, and are running it as a dry run run solr post --dry-run --filetypes xml,json,csv --solr-url http://localhost:${SOLR_PORT} -c foobar --skip-commit ${SOLR_TIP}/example/exampledocs - assert_output --partial 'Dry run complete. 16 would have been indexed.' - refute_output --partial '16 files indexed.' + assert_output --partial 'Dry run complete. 15 would have been indexed.' + refute_output --partial '15 files indexed.' refute_output --partial 'ERROR' } @@ -132,10 +132,10 @@ teardown() { # We filter to xml,json,and csv as we don't want to invoke the Extract handler. run solr post --filetypes xml,json,csv --solr-url http://localhost:${SOLR_PORT} -c mixed_content ${SOLR_TIP}/example/exampledocs - assert_output --partial '16 files indexed.' + assert_output --partial '15 files indexed.' refute_output --partial 'ERROR' run curl "http://localhost:${SOLR_PORT}/solr/mixed_content/select?q=*:*" - assert_output --partial '"numFound":46' + assert_output --partial '"numFound":45' } # this test doesn't complete due to issues in posting to the /extract handler diff --git a/solr/solr-ref-guide/modules/getting-started/pages/tutorial-techproducts.adoc b/solr/solr-ref-guide/modules/getting-started/pages/tutorial-techproducts.adoc index bfd05668588..8456d17dce2 100644 --- a/solr/solr-ref-guide/modules/getting-started/pages/tutorial-techproducts.adoc +++ b/solr/solr-ref-guide/modules/getting-started/pages/tutorial-techproducts.adoc @@ -195,9 +195,8 @@ POSTing file sample.html (text/html) to [base]/extract POSTing file sd500.xml (application/xml) to [base] POSTing file solr-word.pdf (application/pdf) to [base]/extract POSTing file solr.xml (application/xml) to [base] -POSTing file utf8-example.xml (application/xml) to [base] POSTing file vidcard.xml (application/xml) to [base] -20 files indexed. +19 files indexed. COMMITting Solr index changes to http://localhost:8983/solr/techproducts/update... Time spent: 0:00:00.822 ---- From 440e70d2decaddb4907fef354a9ab13962796609 Mon Sep 17 00:00:00 2001 From: Houston Putman Date: Fri, 10 Jan 2025 15:57:10 -0600 Subject: [PATCH 16/16] SOLR-17556: Small smokeTest fix --- dev-tools/scripts/smokeTestRelease.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py index 4deb80f8bf4..6358a152dd8 100755 --- a/dev-tools/scripts/smokeTestRelease.py +++ b/dev-tools/scripts/smokeTestRelease.py @@ -668,7 +668,7 @@ def verifyUnpacked(java, artifact, unpackPath, gitRevision, version, testArgs): java.run_java11('./gradlew --no-daemon integrationTest -Dversion.release=%s' % version, '%s/itest.log' % unpackPath) print(" build binary release w/ Java 11") java.run_java11('./gradlew --no-daemon dev -Dversion.release=%s' % version, '%s/assemble.log' % unpackPath) - testSolrExample("%s/solr/packaging/build/dev" % unpackPath, java.java11_home) + testSolrExample("%s/solr/packaging/build/dev" % unpackPath, java.java11_home, False) if java.run_java17: print(" run tests w/ Java 17 and testArgs='%s'..." % testArgs) @@ -677,7 +677,7 @@ def verifyUnpacked(java, artifact, unpackPath, gitRevision, version, testArgs): java.run_java17('./gradlew --no-daemon integrationTest -Dversion.release=%s' % version, '%s/itest-java17.log' % unpackPath) print(" build binary release w/ Java 17") java.run_java17('./gradlew --no-daemon dev -Dversion.release=%s' % version, '%s/assemble-java17.log' % unpackPath) - testSolrExample("%s/solr/packaging/build/dev" % unpackPath, java.java17_home) + testSolrExample("%s/solr/packaging/build/dev" % unpackPath, java.java17_home, False) else: # Binary tarball