You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2022/01/07 16:11:31 UTC

[jackrabbit-filevault] branch feature/JCRVLT-580-parameterize-maven-version updated: releng: retry deleting directories on Windows

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

kwin pushed a commit to branch feature/JCRVLT-580-parameterize-maven-version
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git


The following commit(s) were added to refs/heads/feature/JCRVLT-580-parameterize-maven-version by this push:
     new c65be56  releng: retry deleting directories on Windows
c65be56 is described below

commit c65be562dd079fac33304f787b8f53a72a97f1b1
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Jan 7 17:11:26 2022 +0100

    releng: retry deleting directories on Windows
---
 .../packaging/integration/IntegrationTestBase.java | 25 ++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
index 8e522bc..52e5980 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
@@ -109,6 +109,7 @@ import org.apache.jackrabbit.vault.packaging.impl.ActivityLog;
 import org.apache.jackrabbit.vault.packaging.impl.JcrPackageManagerImpl;
 import org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage;
 import org.apache.jackrabbit.vault.packaging.registry.impl.JcrPackageRegistry;
+import org.codehaus.plexus.util.Os;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -268,18 +269,38 @@ public class IntegrationTestBase  {
         return new DataStoreBlobStore(fds);
     }
 
+    private static void deleteDirectory(File directory) throws IOException {
+        try {
+            FileUtils.deleteDirectory(DIR_OAK_REPO_HOME);
+        } catch (IOException ioe) {
+            // retry after wait on Windows, as it may release file locks in a deferred manner
+            if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+                try {
+                    Thread.sleep(100);
+                } catch (InterruptedException ie) {
+                    Thread.currentThread().interrupt();
+                    IOException wrappedIOException = new IOException("Initially failed with IOException and waiting was interrupted", ioe);
+                    wrappedIOException.addSuppressed(ie);
+                }
+                FileUtils.deleteDirectory(DIR_OAK_REPO_HOME);
+            } else {
+                throw ioe;
+            }
+        }
+    }
+
     @AfterClass
     public static void shutdownRepository() throws IOException {
         if (repository instanceof RepositoryImpl) {
             ((RepositoryImpl) repository).shutdown();
-            FileUtils.deleteDirectory(DIR_JR2_REPO_HOME);
+            deleteDirectory(DIR_JR2_REPO_HOME);
         } else if (repository instanceof org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl) {
             ((org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl) repository).shutdown();
             if (fileStore != null) {
                 fileStore.close();
                 fileStore = null;
             }
-            FileUtils.deleteDirectory(DIR_OAK_REPO_HOME);
+            deleteDirectory(DIR_OAK_REPO_HOME);
         }
         repository = null;
     }