X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.db.indexing%2Fsrc%2Forg%2Fsimantics%2Fdb%2Findexing%2FDatabaseIndexing.java;h=b429eb49a77d7d254be6599ced45bd39b68d3ef6;hb=refs%2Fchanges%2F00%2F1600%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..b429eb49a 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());