weaviate/weaviate · critical

could not check word presence: %w

Error message

could not check word presence:  %w

What it means

individualWord starts by asking the remote contextionary IsWordPresent. If that RPC returns an error (as opposed to a clean 'false'), it is wrapped as 'could not check word presence: <err>' (note the double space in the message). This is a connectivity/remote failure, not an indication the word is missing — a missing word takes the individualWordNotPresent path instead.

Source

Thrown at modules/text2vec-contextionary/vectorizer/inspector.go:156

	for _, word := range wordArray {
		iw, err := i.individualWord(ctx, word)
		if err != nil {
			return nil, fmt.Errorf("word '%s': %w", word, err)
		}

		res = append(res, iw)
	}

	return res, nil
}

func (i *Inspector) individualWord(ctx context.Context,
	word string,
) (*models.C11yWordsResponseIndividualWordsItems0, error) {
	ok, err := i.client.IsWordPresent(ctx, word)
	if err != nil {
		return nil, fmt.Errorf("could not check word presence:  %w", err)
	}

	if !ok {
		return i.individualWordNotPresent(word), nil
	}

	return i.individualWordPresent(ctx, word)
}

func (i *Inspector) individualWordNotPresent(word string) *models.C11yWordsResponseIndividualWordsItems0 {
	return &models.C11yWordsResponseIndividualWordsItems0{
		Word:    word,
		Present: false,
	}
}

func (i *Inspector) individualWordPresent(ctx context.Context,
	word string,

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Verify the contextionary service is running and reachable (the wrapped error will show connection-refused if not).
  2. Retry the word inspection after restoring connectivity.
  3. Check the configured contextionary URI/port in Weaviate's environment configuration.
  4. Increase client timeouts if the failure is deadline-exceeded under heavy load.
Defensive patterns

Strategy: retry

Try / catch

present, err := client.IsWordPresent(ctx, word)
if err != nil {
    if isConnectionErr(err) { /* retry / check contextionary */ }
    return fmt.Errorf("word %q: %w", word, err)
}

Prevention

When it happens

Trigger: Calling GetWords when the contextionary is down/unreachable at the IsWordPresent step; gRPC transport errors, timeouts, or canceled contexts during the presence check.

Common situations: contextionary container not running, wrong port in configuration, transient network failures, deadline exceeded under load.

Related errors


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/9fa4e81f0daaf52d. Report an issue: GitHub.