Mercurial > hg > tc-symbol-server
comparison agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.java @ 26:87b24e4efcc3
fixed multiple indexing of the same pdb file
author | Evgeniy.Koshkin |
---|---|
date | Wed, 07 Aug 2013 17:29:18 +0400 |
parents | f4e0050e2a2f |
children | 76ed2d58c871 |
comparison
equal
deleted
inserted
replaced
25:f4e0050e2a2f | 26:87b24e4efcc3 |
---|---|
15 import org.jetbrains.annotations.Nullable; | 15 import org.jetbrains.annotations.Nullable; |
16 | 16 |
17 import java.io.File; | 17 import java.io.File; |
18 import java.io.IOException; | 18 import java.io.IOException; |
19 import java.util.*; | 19 import java.util.*; |
20 import java.util.concurrent.CopyOnWriteArrayList; | |
20 | 21 |
21 /** | 22 /** |
22 * @author Evgeniy.Koshkin | 23 * @author Evgeniy.Koshkin |
23 */ | 24 */ |
24 public class SymbolsIndexer extends ArtifactsBuilderAdapter { | 25 public class SymbolsIndexer extends ArtifactsBuilderAdapter { |
41 | 42 |
42 agentDispatcher.addListener(new AgentLifeCycleAdapter() { | 43 agentDispatcher.addListener(new AgentLifeCycleAdapter() { |
43 @Override | 44 @Override |
44 public void buildStarted(@NotNull final AgentRunningBuild runningBuild) { | 45 public void buildStarted(@NotNull final AgentRunningBuild runningBuild) { |
45 myBuild = runningBuild; | 46 myBuild = runningBuild; |
46 mySymbolsToProcess = new HashSet<File>(); | 47 mySymbolsToProcess = new CopyOnWriteArrayList<File>(); |
47 } | 48 } |
48 | 49 |
49 @Override | 50 @Override |
50 public void afterAtrifactsPublished(@NotNull AgentRunningBuild build, @NotNull BuildFinishedStatus buildStatus) { | 51 public void afterAtrifactsPublished(@NotNull AgentRunningBuild build, @NotNull BuildFinishedStatus buildStatus) { |
51 super.afterAtrifactsPublished(build, buildStatus); | 52 super.afterAtrifactsPublished(build, buildStatus); |
89 final FileUrlProvider urlProvider = getUrlProviderForBuild(myBuild, buildLogger); | 90 final FileUrlProvider urlProvider = getUrlProviderForBuild(myBuild, buildLogger); |
90 if(urlProvider == null) return; | 91 if(urlProvider == null) return; |
91 | 92 |
92 final PdbFilePatcher pdbFilePatcher = new PdbFilePatcher(myBuild.getBuildTempDirectory(), new SrcSrvStreamBuilder(urlProvider)); | 93 final PdbFilePatcher pdbFilePatcher = new PdbFilePatcher(myBuild.getBuildTempDirectory(), new SrcSrvStreamBuilder(urlProvider)); |
93 for(File pdbFile : pdbFiles){ | 94 for(File pdbFile : pdbFiles){ |
95 if(mySymbolsToProcess.contains(pdbFile)){ | |
96 LOG.debug(String.format("File %s already processed. Skipped.", pdbFile.getAbsolutePath())); | |
97 continue; | |
98 } | |
94 try { | 99 try { |
95 buildLogger.message("Indexing sources appeared in file " + pdbFile.getAbsolutePath()); | 100 buildLogger.message("Indexing sources appeared in file " + pdbFile.getAbsolutePath()); |
96 pdbFilePatcher.patch(pdbFile, buildLogger); | 101 pdbFilePatcher.patch(pdbFile, buildLogger); |
97 mySymbolsToProcess.add(pdbFile); | 102 mySymbolsToProcess.add(pdbFile); |
98 } catch (Throwable e) { | 103 } catch (Throwable e) { |