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) {