Tencent/WeKnora · error

failed to load web search provider %s: %w

Error message

failed to load web search provider %s: %w

What it means

resolveProvider wraps the repository error from providerRepo.GetByID when loading the configured web search provider entity. The provider row could not be read (DB error or repository failure), so no search provider instance can be built.

Source

Thrown at internal/application/service/web_search.go:102

// resolveProvider resolves a WebSearchProvider instance from either:
// 1. A provider entity ID (new path) — loads from DB, creates via registry
// 2. The deprecated config.Provider field (backward compatibility) — creates with empty params
func (s *WebSearchService) resolveProvider(
	ctx context.Context,
	providerID string,
	cfg *types.WebSearchConfig,
) (interfaces.WebSearchProvider, error) {
	// New path: load provider entity from DB
	if providerID != "" {
		tenantID, ok := types.TenantIDFromContext(ctx)
		if !ok {
			return nil, fmt.Errorf("workspace ID not found in context")
		}

		entity, err := s.providerRepo.GetByID(ctx, tenantID, providerID)
		if err != nil {
			return nil, fmt.Errorf("failed to load web search provider %s: %w", providerID, err)
		}
		if entity == nil {
			return nil, fmt.Errorf("web search provider not found: %s", providerID)
		}

		params := mergeProxyFromWebSearchConfig(entity.Parameters, cfg)
		provider, err := s.registry.CreateProvider(string(entity.Provider), params)
		if err != nil {
			return nil, fmt.Errorf("failed to create provider %s (%s): %w", entity.Name, entity.Provider, err)
		}
		return provider, nil
	}

	// Backward compatibility: use the deprecated config.Provider field
	if cfg.Provider != "" {
		logger.Warnf(ctx, "Using deprecated WebSearchConfig.Provider field: %s. Please migrate to WebSearchProviderEntity.", cfg.Provider)
		params := mergeProxyFromWebSearchConfig(types.WebSearchProviderParameters{
			APIKey: cfg.APIKey,

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Check DB connectivity and the provider repository
  2. Verify the providerID references an existing row for this tenant
  3. Retry the search after the repository recovers
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at internal/application/service/web_search.go:102 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/065812c7e6902fd1. Report an issue: GitHub.