You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/09/06 15:49:10 UTC

[lucene-solr] branch reference_impl updated: @760 Change delete index and data dirs to happen with delete instance dir.

This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/reference_impl by this push:
     new f150215  @760 Change delete index and data dirs to happen with delete instance dir.
f150215 is described below

commit f1502150135582e8e14f422bed6f983370715cb1
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Sun Sep 6 10:48:41 2020 -0500

    @760 Change delete index and data dirs to happen with delete instance dir.
---
 .../src/java/org/apache/solr/core/SolrCore.java    | 60 +++++++++++++---------
 1 file changed, 36 insertions(+), 24 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index e05c4e6..3b24da1 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -3066,25 +3066,10 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   }
 
   public void unloadOnClose(final CoreDescriptor desc, boolean deleteIndexDir, boolean deleteDataDir, boolean deleteInstanceDir) {
-    if (deleteIndexDir) {
-      try {
-        directoryFactory.remove(getIndexDir());
-      } catch (Exception e) {
-        ParWork.propegateInterrupt(e);
-        SolrException.log(log, "Failed to flag index dir for removal for core:" + name + " dir:" + getIndexDir());
-      }
-    }
-    if (deleteDataDir) {
-      try {
-        directoryFactory.remove(getDataDir(), true);
-      } catch (Exception e) {
-        ParWork.propegateInterrupt(e);
-        SolrException.log(log, "Failed to flag data dir for removal for core:" + name + " dir:" + getDataDir());
-      }
-    }
-    if (deleteInstanceDir) {
-      addCloseHook(new SolrCoreDeleteCloseHook(desc));
+    if (deleteIndexDir || deleteDataDir || deleteInstanceDir) {
+      addCloseHook(new SolrCoreDeleteCloseHook(desc, deleteDataDir, deleteIndexDir, deleteInstanceDir));
     }
+
   }
 
   public static void deleteUnloadedCore(CoreDescriptor cd, boolean deleteDataDir, boolean deleteInstanceDir) {
@@ -3332,9 +3317,16 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   private static class SolrCoreDeleteCloseHook extends CloseHook {
     private final CoreDescriptor desc;
+    private final boolean deleteDataDir;
+    private final boolean deteIndexDir;
+    private final boolean deleteInstanecDir;
 
-    public SolrCoreDeleteCloseHook(CoreDescriptor desc) {
+    public SolrCoreDeleteCloseHook(CoreDescriptor desc, boolean deleteDataDir, boolean deleteIndexDir, boolean deleteInstanceDir) {
+      super();
       this.desc = desc;
+      this.deleteDataDir = deleteDataDir;
+      this.deteIndexDir = deleteIndexDir;
+      this.deleteInstanecDir = deleteInstanceDir;
     }
 
     @Override
@@ -3345,11 +3337,31 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     @Override
     public void postClose(SolrCore core) {
       if (desc != null) {
-        try {
-          FileUtils.deleteDirectory(desc.getInstanceDir().toFile());
-        } catch (IOException e) {
-          SolrException.log(log, "Failed to delete instance dir for core:"
-              + core.getName() + " dir:" + desc.getInstanceDir());
+
+        if (deteIndexDir) {
+          try {
+            core.getDirectoryFactory().remove(core.getIndexDir(), true);
+          } catch (Exception e) {
+            ParWork.propegateInterrupt(e);
+            SolrException.log(log, "Failed to flag index dir for removal for core:" + core.getName() + " dir:" + core.getIndexDir());
+          }
+        }
+
+        if (deleteDataDir) {
+          try {
+            core.getDirectoryFactory().remove(core.getDataDir(), true);
+          } catch (Exception e) {
+            ParWork.propegateInterrupt(e);
+            SolrException.log(log, "Failed to flag data dir for removal for core:" + core.getName() + " dir:" + core.getDataDir());
+          }
+        }
+
+        if (deleteInstanecDir) {
+          try {
+            FileUtils.deleteDirectory(desc.getInstanceDir().toFile());
+          } catch (IOException e) {
+            SolrException.log(log, "Failed to delete instance dir for core:" + core.getName() + " dir:" + desc.getInstanceDir());
+          }
         }
       }
     }