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

  1. Check DB connectivity and that the quick filter storage table exists with the expected schema
  2. Inspect server logs for the wrapped underlying error (driver message) returned alongside this one
  3. Re-run or apply pending migrations if the table/columns changed after an upgrade
  4. 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

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.