From e19ad35e5b0b39384885ceceea8160728c4a348d Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 23 Nov 2012 18:59:32 +0100 Subject: [PATCH] when clearing target storage, do not clear src-out mapping which is handled in a special way --- .../incremental/storage/BuildDataManager.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java index ef94f8905655..d1cafb9ff471 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java @@ -57,13 +57,17 @@ public class BuildDataManager implements StorageOwner { synchronized (mySourceToOutputLock) { mapping = mySourceToOutputs.get(target); if (mapping == null) { - mapping = new SourceToOutputMappingImpl(new File(myDataPaths.getTargetDataRoot(target), "src-out" + File.separator + "data")); + mapping = new SourceToOutputMappingImpl(new File(getSourceToOutputMapRoot(target), "data")); mySourceToOutputs.put(target, mapping); } } return mapping; } + private File getSourceToOutputMapRoot(BuildTarget target) { + return new File(myDataPaths.getTargetDataRoot(target), "src-out"); + } + @NotNull public S getStorage(@NotNull BuildTarget target, @NotNull StorageProvider provider) throws IOException { synchronized (myTargetStoragesLock) { @@ -94,17 +98,16 @@ public class BuildDataManager implements StorageOwner { } } finally { - try { - synchronized (mySourceToOutputLock) { - SourceToOutputMappingImpl mapping = mySourceToOutputs.remove(target); - if (mapping != null) { - mapping.close(); + // delete all data except src-out mapping which is cleaned in a special way + final File[] targetData = myDataPaths.getTargetDataRoot(target).listFiles(); + if (targetData != null) { + final File srcOutputMapRoot = getSourceToOutputMapRoot(target); + for (File dataFile : targetData) { + if (!FileUtil.filesEqual(dataFile, srcOutputMapRoot)) { + FileUtil.delete(dataFile); } } } - finally { - FileUtil.delete(myDataPaths.getTargetDataRoot(target)); - } } }