X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.indexing%2Fsrc%2Forg%2Fsimantics%2Fdb%2Findexing%2FDatabaseIndexing.java;h=bf7293e50dfaf9162f3fa10133738750bfba15ad;hb=refs%2Fchanges%2F24%2F1824%2F1;hp=137d6c5c47b88bec1b687593a8db8dae55821c98;hpb=8b8630b93f8e4ec88a8a4eb53b55031407deedc0;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.indexing/src/org/simantics/db/indexing/DatabaseIndexing.java b/bundles/org.simantics.db.indexing/src/org/simantics/db/indexing/DatabaseIndexing.java index 137d6c5c4..bf7293e50 100644 --- a/bundles/org.simantics.db.indexing/src/org/simantics/db/indexing/DatabaseIndexing.java +++ b/bundles/org.simantics.db.indexing/src/org/simantics/db/indexing/DatabaseIndexing.java @@ -12,6 +12,7 @@ package org.simantics.db.indexing; import java.io.IOException; +import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -40,7 +41,6 @@ import org.slf4j.LoggerFactory; */ public final class DatabaseIndexing { - private static final boolean DEBUG = IndexPolicy.TRACE_INDEX_MANAGEMENT; private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(DatabaseIndexing.class); public static Path getIndexBaseLocation() { @@ -118,8 +118,12 @@ public final class DatabaseIndexing { // Mark change only once per DB session. if (getIndexChangedWriter(session).markDirty(changedFile)) { Files.createDirectories(indexPath); - Files.createFile(changedFile); - FileUtils.sync(changedFile); + if (!Files.exists(changedFile)) { + Files.createFile(changedFile); + FileUtils.sync(changedFile); + } else if (!Files.isRegularFile(changedFile)) { + throw new FileAlreadyExistsException(changedFile.toString(), null, "index dirtyness indicator file already exists but it is not a regular file"); + } } } catch (IOException e) { LOGGER.error("Could not mark index changed for indexPath={} and changedFile={}", indexPath.toAbsolutePath(), changedFile.toAbsolutePath()); @@ -195,7 +199,7 @@ public final class DatabaseIndexing { // Make sure that index-base is a valid directory if (LOGGER.isDebugEnabled()) LOGGER.debug(indexBase + " is not a directory! Removing it."); - FileUtils.delete(indexBase); + FileUtils.emptyDirectory(indexBase); Files.createDirectories(indexBase); return; }