SigNoz/signoz · error
CodeInternal
CodeInternal
Error message
error fetching organization filters
What it means
GetQuickFilters failed at the storage layer while loading all quick filters for an organization. module.store.Get(ctx, orgID) returned an error (DB connectivity, query failure, or deserialization), which is wrapped with CodeInternal. It does not indicate anything wrong with the request itself — the org's filter rows could not be read.
Source
Thrown at pkg/modules/quickfilter/implquickfilter/module.go:26
"github.com/SigNoz/signoz/pkg/modules/quickfilter"
v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3"
"github.com/SigNoz/signoz/pkg/types/quickfiltertypes"
"github.com/SigNoz/signoz/pkg/valuer"
)
type module struct {
store quickfiltertypes.QuickFilterStore
}
func NewModule(store quickfiltertypes.QuickFilterStore) quickfilter.Module {
return &module{store: store}
}
// GetQuickFilters returns all quick filters for an organization.
func (module *module) GetQuickFilters(ctx context.Context, orgID valuer.UUID) ([]*quickfiltertypes.SignalFilters, error) {
storedFilters, err := module.store.Get(ctx, orgID)
if err != nil {
return nil, errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "error fetching organization filters")
}
result := make([]*quickfiltertypes.SignalFilters, 0, len(storedFilters))
for _, storedFilter := range storedFilters {
signalFilter, err := quickfiltertypes.NewSignalFilterFromStorableQuickFilter(storedFilter)
if err != nil {
return nil, errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "error processing filter for signal: %s", storedFilter.Signal)
}
result = append(result, signalFilter)
}
return result, nil
}
// GetSignalFilters returns quick filters for a specific signal in an organization.
func (m *module) GetSignalFilters(ctx context.Context, orgID valuer.UUID, signal quickfiltertypes.Signal) (*quickfiltertypes.SignalFilters, error) {
storedFilter, err := m.store.GetBySignal(ctx, orgID, signal.StringValue())
if err != nil {View on GitHub (pinned to 5069bf80b0)
Solutions
- Check DB connectivity and that the quick filter storage table exists with the expected schema
- Inspect server logs for the wrapped underlying error (driver message) returned alongside this one
- Re-run or apply pending migrations if the table/columns changed after an upgrade
- Retry the request once transient DB issues are resolved
Defensive patterns
Strategy: retry
Validate before calling
if (!orgId) throw new Error('orgId required'); // nothing else caller-side can prevent a DB read failure Try / catch
try { const filters = await getQuickFilters(orgId); } catch (e) { if (e.type === 'internal') { scheduleRetry(); showCachedFiltersIfAvailable(); } else throw e; } Prevention
- Monitor DB health and connection pool metrics
- Keep API server and DB schema versions in sync via migrations
- Cache last-known filters client-side to degrade gracefully
When it happens
Trigger: GET endpoint that returns all quick filters for an org when the underlying database is unreachable, the quick_filters table is missing/corrupted, or a row fails to scan into the storable type.
Common situations: Database outage or migration that dropped/renamed the quick filter table, connection pool exhaustion, network partition between API server and Postgres/ClickHouse, or a schema drift after upgrading SigNoz.
Related errors
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/bdb8f04f640e966f.
Report an issue: GitHub.