SigNoz/signoz · warning

unsupported

unsupported

Error message

fetching license is not supported

What it means

The noop licensing provider's Activate method always returns an unsupported error — fetching a license requires a real licensing backend, which the noop provider intentionally omits.

Source

Thrown at pkg/licensing/nooplicensing/provider.go:39

}

func New(_ context.Context, _ factory.ProviderSettings, _ licensing.Config) (licensing.Licensing, error) {
	return &noopLicensing{stopChan: make(chan struct{})}, nil
}

func (provider *noopLicensing) Start(context.Context) error {
	<-provider.stopChan
	return nil

}

func (provider *noopLicensing) Stop(context.Context) error {
	close(provider.stopChan)
	return nil
}

func (provider *noopLicensing) Activate(ctx context.Context, organizationID valuer.UUID, key string) error {
	return errors.New(errors.TypeUnsupported, licensing.ErrCodeUnsupported, "fetching license is not supported")
}

func (provider *noopLicensing) Validate(ctx context.Context) error {
	return errors.New(errors.TypeUnsupported, licensing.ErrCodeUnsupported, "validating license is not supported")
}

func (provider *noopLicensing) Refresh(ctx context.Context, organizationID valuer.UUID) error {
	return errors.New(errors.TypeUnsupported, licensing.ErrCodeUnsupported, "refreshing license is not supported")
}

func (provider *noopLicensing) Checkout(ctx context.Context, organizationID valuer.UUID, postableSubscription *licensetypes.PostableSubscription) (*licensetypes.GettableSubscription, error) {
	return nil, errors.New(errors.TypeUnsupported, licensing.ErrCodeUnsupported, "checkout session is not supported")
}

func (provider *noopLicensing) Portal(ctx context.Context, organizationID valuer.UUID, postableSubscription *licensetypes.PostableSubscription) (*licensetypes.GettableSubscription, error) {
	return nil, errors.New(errors.TypeUnsupported, licensing.ErrCodeUnsupported, "portal session is not supported")
}

View on GitHub (pinned to 5069bf80b0)

Solutions

  1. Skip license activation logic when the noop provider is in use
  2. Wire a real licensing provider implementation if activation must succeed

Example fix

// before
if err := provider.Activate(ctx, orgID, licenseKey); err != nil { return err }
// after
if _, noop := provider.(*nooplicensing.NoopLicensing); !noop {
    if err := provider.Activate(ctx, orgID, licenseKey); err != nil { return err }
}
Defensive patterns

Strategy: type-guard

Type guard

func isNoopProvider(p licensing.Provider) bool { _, ok := p.(*nooplicensing.NoopLicensing); return ok }

Try / catch

if err := provider.Activate(ctx, org, key); err != nil && errors.Is(err, licensing.ErrCodeUnsupported) { /* licensing disabled */ }

Prevention

When it happens

Trigger: Calling noopLicensing.Activate(ctx, orgID, key) (provider-level API, not HTTP) during startup or license activation flows.

Common situations: Self-hosted build passing a license key via env/config, which triggers Activate on the noop provider; tests or init code that unconditionally activate licensing.

Related errors


AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28). Data as JSON: /api/errors/a38ca31beff812ae. Report an issue: GitHub.