Skip to content

Conversation

Copy link
Contributor

Copilot AI commented May 23, 2025

Changes Made

This PR addresses two issues with symbol server resolution in PerfView:

  1. Makes the symbol server timeout configurable by adding a new ServerTimeout property to the SymbolReader class with a default value of 60 seconds (matching the previous hard-coded behavior).

  2. Removes the "mark as dead" functionality for servers, which means that subsequent requests will still go through after a timeout, rather than blocking a server for 5 minutes after a failure.

These changes will significantly improve PerfView's behavior in slower network environments by:

  • Allowing users to increase the timeout duration for symbol resolution
  • Preventing symbol servers from being blocked after a timeout, which improves the chance of resolving symbols on subsequent attempts

Implementation Details

  • Added a new ServerTimeout property to control the timeout behavior
  • Removed code that maintained a list of "dead servers" along with their tracking timestamps
  • Updated log messages to reflect the new behavior
  • Made minimal changes to maintain compatibility with existing code

Fixes #1895.

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • crl3.digicert.com
    • Triggering command: dotnet build /p:Configuration=Release (dns block)
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
  • crl4.digicert.com
    • Triggering command: dotnet build /p:Configuration=Release (dns block)
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
  • ocsp.digicert.com
    • Triggering command: dotnet build /p:Configuration=Release (dns block)
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
  • s.symcb.com
    • Triggering command: dotnet build /p:Configuration=Release (dns block)
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
  • s.symcd.com
    • Triggering command: dotnet build /p:Configuration=Release (dns block)
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
  • ts-crl.ws.symantec.com
    • Triggering command: dotnet build /p:Configuration=Release (dns block)
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
  • ts-ocsp.ws.symantec.com
    • Triggering command: dotnet build /p:Configuration=Release (dns block)
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>
Copilot AI changed the title [WIP] [SymbolReader] Make symbol server timeout configurable [SymbolReader] Make symbol server timeout configurable and remove dead server mechanism May 23, 2025
Copilot AI requested a review from brianrob May 23, 2025 01:41
/// <summary>
/// Gets or sets the timeout in seconds for symbol server requests. Default is 60 seconds.
/// </summary>
public int ServerTimeoutSeconds { get; set; } = 60;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please change this to public TimeSpan ServerTimeout.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed the property from int ServerTimeoutSeconds to TimeSpan ServerTimeout and updated all usages in the code. Commit c7f656e.

Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented May 23, 2025

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • crl3.digicert.com
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
    • Triggering command: dotnet build (dns block)
  • crl4.digicert.com
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
    • Triggering command: dotnet build (dns block)
  • ocsp.digicert.com
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
    • Triggering command: dotnet build (dns block)
  • s.symcb.com
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
    • Triggering command: dotnet build (dns block)
  • s.symcd.com
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
    • Triggering command: dotnet build (dns block)
  • ts-crl.ws.symantec.com
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
    • Triggering command: dotnet build (dns block)
  • ts-ocsp.ws.symantec.com
    • Triggering command: dotnet build src/TraceEvent/TraceEvent.csproj /p:Configuration=Release (dns block)
    • Triggering command: dotnet build (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@brianrob
Copy link
Member

Copilot Post-Mortem:

  • This request was quite clean. I really only needed to ask for a change to the public API surface that I wasn't clear on in the first place.
  • Copilot made the actual change that I wanted the first time through.

@brianrob brianrob marked this pull request as ready for review May 23, 2025 03:08
Copy link
Member

@mconnew mconnew left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@brianrob brianrob merged commit bee605b into main May 27, 2025
5 checks passed
@brianrob brianrob deleted the copilot/fix-1895 branch May 27, 2025 15:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[SymbolReader] Make symbol server timeout configurable

4 participants