-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
Buffer telemetry data locally when the OTLP endpoint is unreachable and retry sending when connectivity is restored. Prevents data loss during network issues or collector outages.
Problem
Currently, if the OTLP endpoint is unavailable:
- Telemetry data is lost
- No indication to the extension that export failed
- No retry mechanism
Proposed Solution
var config = new TelemetryConfiguration
{
// Enable offline buffering
EnableOfflineBuffering = true,
// Buffer configuration
OfflineBufferPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"MyExtension", "telemetry-buffer"),
MaxBufferSizeMb = 50,
MaxBufferAgeHours = 24,
// Retry configuration
RetryInitialDelayMs = 1000,
RetryMaxDelayMs = 60000,
RetryMaxAttempts = 10
};Behavior
- Normal operation: Telemetry sent directly to OTLP endpoint
- Export failure: Data written to local buffer file
- Background retry: Periodically attempt to send buffered data
- Exponential backoff: Retry delay increases on consecutive failures
- Buffer management: Old data pruned when limits exceeded (FIFO)
- Recovery: Buffered data sent (oldest first) when endpoint recovers
Events/Metrics
vs.extension.telemetry.buffered(counter) - Items written to buffervs.extension.telemetry.buffer.size(gauge) - Current buffer sizevs.extension.telemetry.retry.success(counter) - Successful retriesvs.extension.telemetry.retry.failure(counter) - Failed retries
Implementation Notes
- Use memory-mapped files or SQLite for buffer storage
- Implement as custom SpanProcessor/MetricReader
- Handle VS shutdown gracefully (flush to buffer)
- Consider compression for buffer files
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request