This is an automated email from the ASF dual-hosted git repository.
gerlowskija pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 577dee15077 SOLR-17830: Fix backup/collection-name conflation in v1
Restore API (#3479)
577dee15077 is described below
commit 577dee15077640a04c400ebad469e72daed8ba43
Author: Abhishek Umarjikar <[email protected]>
AuthorDate: Wed Aug 20 18:29:25 2025 +0530
SOLR-17830: Fix backup/collection-name conflation in v1 Restore API (#3479)
Co-authored-by: Jason Gerlowski <[email protected]>
---
solr/CHANGES.txt | 2 ++
.../java/org/apache/solr/handler/admin/api/RestoreCollection.java | 6 +++++-
.../org/apache/solr/handler/admin/api/RestoreCollectionAPITest.java | 2 ++
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 6e88eedd506..58588ec5eef 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -251,6 +251,8 @@ Bug Fixes
* SOLR-17834: Fixed a bug preventing Config API set properties (aka:
configoverlay.json) from being used in config file property
substitution (hossman)
+* SOLR-17830: v1 Restore API no longer conflates backup-name and
collection-name during validation. (Abhishek Umarjikar via Jason Gerlowski)
+
Dependency Upgrades
---------------------
(No changes)
diff --git
a/solr/core/src/java/org/apache/solr/handler/admin/api/RestoreCollection.java
b/solr/core/src/java/org/apache/solr/handler/admin/api/RestoreCollection.java
index 12da6f005f8..7ee3bb994cc 100644
---
a/solr/core/src/java/org/apache/solr/handler/admin/api/RestoreCollection.java
+++
b/solr/core/src/java/org/apache/solr/handler/admin/api/RestoreCollection.java
@@ -47,6 +47,7 @@ import
org.apache.solr.cloud.api.collections.CollectionHandlingUtils;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.params.CollectionParams;
+import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.Utils;
import org.apache.solr.core.CoreContainer;
@@ -192,8 +193,11 @@ public class RestoreCollection extends BackupAPIBase
implements CollectionBackup
restoreBody.backupId = solrParams.getInt(BACKUP_ID);
restoreBody.async = solrParams.get(ASYNC);
+ ModifiableSolrParams createCollectionParams = new
ModifiableSolrParams(solrParams);
+ createCollectionParams.set(NAME, solrParams.get(COLLECTION_PROP));
+
restoreBody.createCollectionParams =
- CreateCollection.createRequestBodyFromV1Params(solrParams, false);
+ CreateCollection.createRequestBodyFromV1Params(createCollectionParams,
false);
return restoreBody;
}
diff --git
a/solr/core/src/test/org/apache/solr/handler/admin/api/RestoreCollectionAPITest.java
b/solr/core/src/test/org/apache/solr/handler/admin/api/RestoreCollectionAPITest.java
index 63999f034db..ce9833771f9 100644
---
a/solr/core/src/test/org/apache/solr/handler/admin/api/RestoreCollectionAPITest.java
+++
b/solr/core/src/test/org/apache/solr/handler/admin/api/RestoreCollectionAPITest.java
@@ -202,8 +202,10 @@ public class RestoreCollectionAPITest extends
SolrTestCaseJ4 {
assertEquals("someRepositoryName", requestBody.repository);
assertEquals(Integer.valueOf(123), requestBody.backupId);
assertEquals("someAsyncId", requestBody.async);
+ // Ensure the nested "collection-creation" object looks as expected
assertNotNull(requestBody.createCollectionParams);
final var createParams = requestBody.createCollectionParams;
+ assertEquals("someCollectionName", createParams.name);
assertEquals("someConfig", createParams.config);
assertEquals(Integer.valueOf(123), createParams.nrtReplicas);
assertNotNull(createParams.properties);