You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by er...@apache.org on 2017/12/27 06:16:57 UTC

lucene-solr:master: SOLR-11783: Rename core in solr standalone mode is not persisted

Repository: lucene-solr
Updated Branches:
  refs/heads/master e3f90385b -> 137675ace


SOLR-11783: Rename core in solr standalone mode is not persisted


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/137675ac
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/137675ac
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/137675ac

Branch: refs/heads/master
Commit: 137675ace7fe0ca3264d18fd11e9e61cb535515a
Parents: e3f9038
Author: Erick Erickson <er...@apache.org>
Authored: Tue Dec 26 22:16:52 2017 -0800
Committer: Erick Erickson <er...@apache.org>
Committed: Tue Dec 26 22:16:52 2017 -0800

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  5 +++
 .../apache/solr/core/CorePropertiesLocator.java |  6 ++++
 .../handler/admin/CoreAdminHandlerTest.java     | 35 ++++++++++++++++++++
 3 files changed, 46 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/137675ac/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 1d4ac2a..68003cb 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -63,6 +63,11 @@ New Features
 * SOLR-11201: Implement autoscaling trigger for arbitrary metrics that creates events when
   a given metric breaches a threshold (shalin)
 
+Bug Fixes
+----------------------
+
+* SOLR-11783: Rename core in solr standalone mode is not persisted (Erick Erickson)
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/137675ac/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java b/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
index 99c101b..70acd84 100644
--- a/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
+++ b/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
@@ -116,6 +116,12 @@ public class CorePropertiesLocator implements CoresLocator {
 
   @Override
   public void rename(CoreContainer cc, CoreDescriptor oldCD, CoreDescriptor newCD) {
+    String oldName = newCD.getPersistableStandardProperties().getProperty(CoreDescriptor.CORE_NAME);
+    String newName = newCD.coreProperties.getProperty(CoreDescriptor.CORE_NAME);
+    if (oldName == null ||
+        (newName != null && oldName.equals(newName) == false)) {
+      newCD.getPersistableStandardProperties().put(CoreDescriptor.CORE_NAME, newName);
+    }
     persist(cc, newCD);
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/137675ac/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
index b9a282a..e9a0e31 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
@@ -17,11 +17,14 @@
 package org.apache.solr.handler.admin;
 
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Map;
+import java.util.Properties;
 
 import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
 import org.apache.commons.io.FileUtils;
@@ -256,6 +259,13 @@ public class CoreAdminHandlerTest extends SolrTestCaseJ4 {
     copySolrHomeToTemp(solrHomeDirectory, "corex");
     File corex = new File(solrHomeDirectory, "corex");
     FileUtils.write(new File(corex, "core.properties"), "", StandardCharsets.UTF_8);
+
+    copySolrHomeToTemp(solrHomeDirectory, "corerename");
+
+    File coreRename = new File(solrHomeDirectory, "corerename");
+    File renamePropFile = new File(coreRename, "core.properties");
+    FileUtils.write(renamePropFile, "", StandardCharsets.UTF_8);
+
     JettySolrRunner runner = new JettySolrRunner(solrHomeDirectory.getAbsolutePath(), buildJettyConfig("/solr"));
     runner.start();
 
@@ -273,11 +283,36 @@ public class CoreAdminHandlerTest extends SolrTestCaseJ4 {
       req.process(client);
     }
 
+    // Make sure a renamed core
+    // 1> has the property persisted (SOLR-11783)
+    // 2> is deleted after rename properly.
+
+    try (HttpSolrClient client = getHttpSolrClient(runner.getBaseUrl().toString(), DEFAULT_CONNECTION_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT)) {
+      CoreAdminRequest.renameCore("corerename", "brand_new_core_name", client);
+      Properties props = new Properties();
+      try (InputStreamReader is = new InputStreamReader(new FileInputStream(renamePropFile), StandardCharsets.UTF_8)) {
+        props.load(is);
+      }
+      assertEquals("Name should have been persisted!", "brand_new_core_name", props.getProperty("name"));
+    }
+
+
+    try (HttpSolrClient client = getHttpSolrClient(runner.getBaseUrl().toString(), DEFAULT_CONNECTION_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT)) {
+      CoreAdminRequest.Unload req = new CoreAdminRequest.Unload(false);
+      req.setDeleteInstanceDir(true);
+      req.setCoreName("brand_new_core_name");
+      req.process(client);
+    }
+
+
     runner.stop();
 
     assertFalse("Instance directory exists after core unload with deleteInstanceDir=true : " + corex,
         corex.exists());
 
+    assertFalse("Instance directory exists after core unload with deleteInstanceDir=true : " + coreRename,
+        coreRename.exists());
+
   }
 
   @Test