Skip to content

Endpoint availability is not exposed to the caller code, reopened. #1978

Description

@ivshch
  • List of NuGet packages and version that you are using: Microsoft.ApplicationInsights (2.10.0), also checked on 2.14.0.
  • Runtime version: netstandard2.0
  • Hosting environment: Azure Web App, also chacked on Windows 10, Windows Server 2016.

Bug description

Reopened from #1974

Our current task requires to write the human-readable file logs only at the moments when the AppInsights endpoint is unreachable.

This is quite close to what ServerTelemetryChannel does, but without gzipping and using the rolling mechanism. Our current default configuration (large cloud-based project) does not set the StorageFolder parameter for the ServerTelemetryChannel, so the channel does not enable its intermediate disk storage capabilities. Even if we set the StorageFolder it writes the compressed files that are not suitable for the support staff. Our goal is to make a solution that would allow them to investigate the connectivity problems after (for example) a week of AppInsights silence.

Most problem is we don't have an indicator of whether the AppInsights is assuming the connection loss, or assuming the connection is working.

So, investigating the AppInsights sources gives us the two classes that are monitoring the network status:

NetworkAvailabilityTransmissionPolicy, and
BackoffLogicManager

Both classes are instantiated quite deep in the internals of the ServerTelemetryChannel class, access to its properties is not possible from the calling code.

Please fix the implementation to allow access to the current endpoint availability state.

To Reproduce

On any working AppInsights project, at the runtime set the internet connection to the disabled state. While the endpoint is unavailable, there are no exposed properties/events/hooks to know that AppInsights is not sending the data.

Why the advised solution is not covering this bug

The advised #1887 solves only half of described problem - it gives an event to react on successful requests. The second half - reacting on failed requests - remains uncovered.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions