microsoft/aspire · error
Unknown metric point type
Error message
Unknown metric point type '{point.PointType}'. What it means
Metric points are stored with a discriminator (point.PointType) that is one of LongPointType, DoublePointType, or HistogramPointType. MaterializeMetricDimensions switches on that discriminator and throws InvalidOperationException when a stored point has a type value it does not recognize, indicating data or constants out of sync.
Solutions
- Point the dashboard at storage created by the same (or older, compatible) version; clear/reset old telemetry storage after upgrading.
- Locate which PointType value is present in the data and confirm whether a new type needs handling in the switch.
- Restore a consistent dashboard + storage version pair.
- If reproducible, file an issue with the PointType value observed.
Example fix
// before: reusing a database from a newer dashboard build dashboard --data-dir /shared/telemetry-from-v9 // after: use fresh or matching-version storage dashboard --data-dir /home/user/.aspire/dashboard-v10-telemetry
Defensive patterns
Strategy: try-catch
Try / catch
try
{
var points = await repo.GetMetricsAsync(query);
}
catch (InvalidOperationException ex) when (ex.Message.StartsWith("Unknown metric point type"))
{
logger.LogError(ex, "Telemetry storage written by an incompatible version; clearing store.");
ResetTelemetryStore();
} Prevention
- Use a dashboard data directory written by the same version.
- Don't share SQLite telemetry files across dashboard versions.
- Reset storage after major upgrades.
When it happens
Trigger: A row read from the metric points table has a PointType not matching any of the three known constants (e.g. corrupted rows, stale rows from a newer schema version, or a new point type added upstream without updating this switch).
Common situations: Dashboard opened against telemetry storage written by a newer/newer-preview dashboard version; database file reused across version upgrades; manually edited or partially migrated SQLite data.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- Packed histogram data length must be a multiple of 8 bytes.
- Could not determine an appropriate location for local…
- Could not find a StorageAccount resource in the…
- Could not find a StorageAccount resource in the…
- Dimension limit of reached.
AI-assisted analysis of microsoft/aspire@25830f84bd (2026-09-16).
Data as JSON: /api/errors/59d0a724db2bc8e1.
Report an issue: GitHub.
Appendix: source
Thrown at src/Aspire.Dashboard/Otlp/Storage/SqliteTelemetryRepository.Metrics.Reads.cs:248
dimensionQueryRangesCteSql,
queryParameters,
dataPointInterval,
pointRecords,
populateExemplarAttributes)
: Array.Empty<KeyValuePair<long, MetricsExemplar>>().ToLookup(pair => pair.Key, pair => pair.Value);
for (var dimensionIndex = 0; dimensionIndex < dimensions.Count; dimensionIndex++)
{
var dimensionId = dimensions[dimensionIndex].DimensionId;
var dimension = results[dimensionIndex];
foreach (var point in points[dimensionId])
{
MetricValueBase value = point.PointType switch
{
LongPointType => new MetricValue<long>(point.IntegerValue!.Value, new DateTime(point.StartTimeTicks, DateTimeKind.Utc), new DateTime(point.EndTimeTicks, DateTimeKind.Utc)),
DoublePointType => new MetricValue<double>(point.DoubleValue!.Value, new DateTime(point.StartTimeTicks, DateTimeKind.Utc), new DateTime(point.EndTimeTicks, DateTimeKind.Utc)),
HistogramPointType => CreateHistogramValue(point),
_ => throw new InvalidOperationException($"Unknown metric point type '{point.PointType}'.")
};
if (point.PointType != HistogramPointType)
{
value.Count = checked((ulong)point.RepeatCount);
}
value.Exemplars.AddRange(exemplars[point.PointId]);
dimension.Values.Add(value);
}
}
return results;
}
private List<StoredMetricDimension> GetMetricDimensions(
SqliteConnection connection,
IReadOnlyList<CachedInstrument> instruments,
IReadOnlyDictionary<string, IReadOnlyList<string?>> dimensionFilters,
Dictionary<string, List<string?>> knownAttributeValues,
out bool hasOverflow)View on GitHub (pinned to 25830f84bd)