private void processPdbArtifacts()

in teamcity-symbol-agent/src/main/java/jetbrains/buildServer/symbols/SymbolsIndexer.java [230:268]


  private void processPdbArtifacts(Map<File, String> pdbFiles) {
    final PdbFilePatcherAdapterFactory patcherAdapter = new PdbFilePatcherAdapterFactoryImpl(
      myFileUrlProvider,
      myProgressLogger,
      new PdbStrExe(mySrcSrvHomeDir),
      myJetSymbolsExe,
      new SrcToolExe(mySrcSrvHomeDir));

    final PdbFilePatcher pdbFilePatcher = new PdbFilePatcher(
      myBuildTempDirectory,
      myJetSymbolsExe,
      patcherAdapter,
      myProgressLogger
    );

    for(File pdbFile : pdbFiles.keySet()){
      if(myPdbFileToArtifactMap.containsKey(pdbFile)){
        LOG.debug(String.format("File %s already processed. Skipped.", pdbFile.getAbsolutePath()));
        continue;
      }
      final String blockName = "Pdb file";
      myProgressLogger.message("Indexing sources in file " + pdbFile.getAbsolutePath());
      try {
        myProgressLogger.logMessage(DefaultMessagesInfo.createBlockStart(blockName, "symbol-server"));
        if (pdbFilePatcher.patch(pdbFile)) {
          final String artifactPath = myArtifactPathHelper.concatenateArtifactPath(pdbFiles.get(pdbFile), pdbFile.getName());
          final PdbSignatureIndexEntry signatureIndexEntry = getPdbSignature(pdbFile);
          myPdbFileToArtifactMap.put(pdbFile, artifactPath);
          myPdbFileSignatures.add(signatureIndexEntry);
        }
      } catch (Throwable e) {
        LOG.error("Error occurred while processing symbols file " + pdbFile, e);
        myProgressLogger.error("Error occurred while processing symbols file " + pdbFile);
        myProgressLogger.exception(e);
      } finally {
        myProgressLogger.logMessage(DefaultMessagesInfo.createBlockEnd(blockName, "symbol-server"));
      }
    }
  }