From 80e31a85753ba6d7f6513869f899d37be1f43ee6 Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Mon, 9 Dec 2019 14:17:48 +0100 Subject: [PATCH] [SEARCH-1994] some fixes to make contentstore replication working on windows --- .../alfresco/solr/handler/AlfrescoIndexFetcher.java | 11 +++++------ .../solr/handler/ContentStoreReplicationIT.java | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/handler/AlfrescoIndexFetcher.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/handler/AlfrescoIndexFetcher.java index 477a38dec..81e40fef3 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/handler/AlfrescoIndexFetcher.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/handler/AlfrescoIndexFetcher.java @@ -1703,9 +1703,7 @@ class AlfrescoIndexFetcher try { Files.createDirectories(Paths.get(csFile.getParent())); - if (!tmpFile.renameTo(csFile)){ - throw new RuntimeException("Failed while moving content store file to " + csFile.getAbsolutePath()); - } + Files.copy(tmpFile.toPath(), csFile.toPath()); } catch (IOException e) { @@ -1735,7 +1733,7 @@ class AlfrescoIndexFetcher * Deletes from contentstore all the files that has not been updated. * @param contentStorePath */ - private void cleanUpContentStore(String contentStorePath) + private void cleanUpContentStore(String contentStorePath) throws Exception { AtomicInteger fileDeleted = new AtomicInteger(); Set fileNames = contentStoreFilesToDownload.stream().map(e -> (String) e.get(NAME)) @@ -1744,7 +1742,7 @@ class AlfrescoIndexFetcher { Files.walk(Paths.get(contentStorePath)).forEach(p -> { File f = new File(p.toUri()); - if (!f.isDirectory() && !fileNames.contains(p.toString().replaceFirst(contentStorePath, ""))) + if (!f.isDirectory() && !fileNames.contains(p.toString().replace(contentStorePath, ""))) { try { @@ -1758,9 +1756,10 @@ class AlfrescoIndexFetcher } }); } - catch (IOException e) + catch (Exception e) { LOG.error("Impossible to delete unnecessary files. Content store may contains unused contents"); + throw(e); } LOG.info("deleted {} unnecessary files from content store", fileDeleted); diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/handler/ContentStoreReplicationIT.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/handler/ContentStoreReplicationIT.java index 8fb8eeb58..678afd5ad 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/handler/ContentStoreReplicationIT.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/handler/ContentStoreReplicationIT.java @@ -141,8 +141,8 @@ public class ContentStoreReplicationIT extends AbstractAlfrescoDistributedIT { master.stop(); slave.stop(); - FileUtils.forceDelete(new File(masterSolrHome.getParent().toUri())); - FileUtils.forceDelete(new File(slaveSolrHome.getParent().toUri())); + FileUtils.deleteQuietly(new File(masterSolrHome.getParent().toUri())); + FileUtils.deleteQuietly(new File(slaveSolrHome.getParent().toUri())); SOLRAPIQueueClient.nodeMetaDataMap.clear(); SOLRAPIQueueClient.transactionQueue.clear();