You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ds...@apache.org on 2016/04/14 07:37:47 UTC
[6/7] lucene-solr:solr-5750: Pass some collection creation options
through via restore as well.
Pass some collection creation options through via restore as well.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/7e80651a
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/7e80651a
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/7e80651a
Branch: refs/heads/solr-5750
Commit: 7e80651a473f93f98e26b951e855d198188610e5
Parents: e8e0b0d
Author: David Smiley <ds...@apache.org>
Authored: Thu Apr 14 01:33:46 2016 -0400
Committer: David Smiley <ds...@apache.org>
Committed: Thu Apr 14 01:33:46 2016 -0400
----------------------------------------------------------------------
.../solr/handler/admin/CollectionsHandler.java | 5 ++-
.../solrj/request/CollectionAdminRequest.java | 35 +++++++++++++++++---
2 files changed, 34 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7e80651a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
index 4e9bf32..eaad48f 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
@@ -811,7 +811,7 @@ public class CollectionsHandler extends RequestHandlerBase {
Map<String, Object> call(SolrQueryRequest req, SolrQueryResponse rsp, CollectionsHandler h) throws Exception {
req.getParams().required().check(NAME, COLLECTION_PROP);
- String collectionName = req.getParams().get(COLLECTION_PROP);
+ String collectionName = SolrIdentifierValidator.validateCollectionName(req.getParams().get(COLLECTION_PROP));
ClusterState clusterState = h.coreContainer.getZkController().getClusterState();
//We always want to restore into an collection name which doesn't exist yet.
if (clusterState.hasCollection(collectionName)) {
@@ -828,6 +828,9 @@ public class CollectionsHandler extends RequestHandlerBase {
Map<String, Object> params = req.getParams().getAll(null, NAME, COLLECTION_PROP);
params.put("location", location);
+ // from CREATE_OP:
+ req.getParams().getAll(params, COLL_CONF, REPLICATION_FACTOR, MAX_SHARDS_PER_NODE, STATE_FORMAT, AUTO_ADD_REPLICAS);
+ copyPropertiesWithPrefix(req.getParams(), params, COLL_PROP_PREFIX);
return params;
}
};
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7e80651a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
index c18900b..5fe2e1c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
@@ -581,12 +581,13 @@ public abstract class CollectionAdminRequest<T extends CollectionAdminResponse>
// RESTORE request
public static class Restore extends AsyncCollectionSpecificAdminRequest {
- protected final String name;
+ protected final String backupName;
protected String location;
+ protected Create createOptions;//lazy created
- public Restore(String collection, String name) {
+ public Restore(String collection, String backupName) {
super(CollectionAction.RESTORE, collection);
- this.name = name;
+ this.backupName = backupName;
}
@Override
@@ -610,11 +611,35 @@ public abstract class CollectionAdminRequest<T extends CollectionAdminResponse>
return this;
}
+ /** The returned create command is used as a POJO to pass additional parameters -- restoring a collection involves
+ * creating a collection. However, note some options aren't supported like numShards and configuring the router.
+ */
+ // note: it was either this (hack?) or we extend Create which would be weird/hack, or we verbosely duplicate lots of
+ // POJO methods, or we perhaps modify the base class to have an addParam() but we loose typed/documented options.
+ // nocommit but unfortunately, setConfigName & setReplicationFactor are deprecated. Now what?
+ public Create getCreateOptions() {
+ if (createOptions == null) {
+ createOptions = new Create(collection, null, -1, -1);
+ }
+ return createOptions;
+ }
+
@Override
public SolrParams getParams() {
- ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
+ ModifiableSolrParams params;
+ if (createOptions != null) {
+ params = (ModifiableSolrParams) createOptions.getParams();
+ // remove these two settings that create() made us set (unless customized)
+ if ("-1".equals(params.get("replicationFactor"))) {
+ params.remove("replicationFactor");
+ }
+ params.remove("numShards"); // not customizable
+ params.add(super.getParams());//override action, and we override some below too...
+ } else {
+ params = (ModifiableSolrParams) super.getParams();
+ }
params.set(CoreAdminParams.COLLECTION, collection);
- params.set(CoreAdminParams.NAME, name);
+ params.set(CoreAdminParams.NAME, backupName);
params.set("location", location); //note: optional
return params;
}