mastra-ai/mastra · error · MastraError
OBSERVABILITY_STORAGE_GET_FEEDBACK_PERCENTILES_NOT_IMPLEMENTED
OBSERVABILITY_STORAGE_GET_FEEDBACK_PERCENTILES_NOT_IMPLEMENTED
Error message
This storage provider does not support feedback percentiles
What it means
Thrown by the base MastraObservabilityStorage class when getFeedbackPercentiles() is called on a provider that has not implemented it. Percentile computation over feedback scores is an optional aggregation; the base class throws this error to signal the capability is missing rather than return incorrect data.
Source
Thrown at packages/core/src/storage/domains/observability/base.ts:717
throw new MastraError({
id: 'OBSERVABILITY_STORAGE_GET_FEEDBACK_BREAKDOWN_NOT_IMPLEMENTED',
domain: ErrorDomain.MASTRA_OBSERVABILITY,
category: ErrorCategory.SYSTEM,
text: 'This storage provider does not support feedback breakdown',
});
}
async getFeedbackTimeSeries(_args: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse> {
throw new MastraError({
id: 'OBSERVABILITY_STORAGE_GET_FEEDBACK_TIME_SERIES_NOT_IMPLEMENTED',
domain: ErrorDomain.MASTRA_OBSERVABILITY,
category: ErrorCategory.SYSTEM,
text: 'This storage provider does not support feedback time series',
});
}
async getFeedbackPercentiles(_args: GetFeedbackPercentilesArgs): Promise<GetFeedbackPercentilesResponse> {
throw new MastraError({
id: 'OBSERVABILITY_STORAGE_GET_FEEDBACK_PERCENTILES_NOT_IMPLEMENTED',
domain: ErrorDomain.MASTRA_OBSERVABILITY,
category: ErrorCategory.SYSTEM,
text: 'This storage provider does not support feedback percentiles',
});
}
}
View on GitHub (pinned to 75dd419e61)
Solutions
- Switch to a storage adapter that implements getFeedbackPercentiles.
- Override getFeedbackPercentiles in your adapter to compute percentiles over stored feedback values and return GetFeedbackPercentilesResponse.
- Add a capability check or try/catch fallback that hides percentile widgets when unsupported.
- Update the adapter to the latest version to confirm whether support was added upstream.
Example fix
// before
const p = await customStorage.getFeedbackPercentiles({ metric: 'score' }); // throws
// after
const storage = new PostgresStore({ connectionString }); // implements percentiles
const p = await storage.getFeedbackPercentiles({ metric: 'score' }); Defensive patterns
Strategy: fallback
Validate before calling
if (typeof (storage as any).getFeedbackPercentiles !== 'function') { /* unsupported */ } Type guard
function supportsFeedbackPercentiles(s: unknown): s is MastraObservabilityStorage & { getFeedbackPercentiles(a: GetFeedbackPercentilesArgs): Promise<GetFeedbackPercentilesResponse> } {
return typeof (s as any)?.getFeedbackPercentiles === 'function';
} Try / catch
try {
percentiles = await storage.getFeedbackPercentiles(args);
} catch (e) {
if ((e as MastraError).id === 'OBSERVABILITY_STORAGE_GET_FEEDBACK_PERCENTILES_NOT_IMPLEMENTED') {
percentiles = null; // hide percentile UI
} else throw e;
} Prevention
- Confirm percentile support in the adapter's docs/tests before exposing percentile metrics.
- Centralize optional analytics calls behind a service that degrades gracefully.
- Version-check the adapter against core requirements at startup.
- Prefer DB-backed adapters for analytics-heavy use cases.
When it happens
Trigger: Calling observabilityStorage.getFeedbackPercentiles(args) on an adapter that inherits the base default implementation.
Common situations: Requesting p50/p95/p99 feedback stats in a dashboard backed by a minimal or custom storage adapter; calling new analytics APIs on an older adapter version.
Related errors
- OBSERVABILITY_STORAGE_GET_METRIC_PERCENTILES_NOT_IMPLEMENTED
- OBSERVABILITY_STORAGE_GET_SCORE_PERCENTILES_NOT_IMPLEMENTED
- OBSERVABILITY_STORAGE_CREATE_FEEDBACK_NOT_IMPLEMENTED
- OBSERVABILITY_STORAGE_BATCH_CREATE_FEEDBACK_NOT_IMPLEMENTED
- OBSERVABILITY_STORAGE_LIST_FEEDBACK_NOT_IMPLEMENTED
AI-assisted analysis of mastra-ai/mastra@75dd419e61 (2026-08-30).
Data as JSON: /api/errors/dc3337580740ddab.
Report an issue: GitHub.