{"record":{"id":"9fa4e81f0daaf52d","repo":"weaviate/weaviate","slug":"could-not-check-word-presence-w","errorCode":null,"errorMessage":"could not check word presence:  %w","messagePattern":"could not check word presence:  %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"modules/text2vec-contextionary/vectorizer/inspector.go","lineNumber":156,"sourceCode":"\n\tfor _, word := range wordArray {\n\t\tiw, err := i.individualWord(ctx, word)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"word '%s': %w\", word, err)\n\t\t}\n\n\t\tres = append(res, iw)\n\t}\n\n\treturn res, nil\n}\n\nfunc (i *Inspector) individualWord(ctx context.Context,\n\tword string,\n) (*models.C11yWordsResponseIndividualWordsItems0, error) {\n\tok, err := i.client.IsWordPresent(ctx, word)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not check word presence:  %w\", err)\n\t}\n\n\tif !ok {\n\t\treturn i.individualWordNotPresent(word), nil\n\t}\n\n\treturn i.individualWordPresent(ctx, word)\n}\n\nfunc (i *Inspector) individualWordNotPresent(word string) *models.C11yWordsResponseIndividualWordsItems0 {\n\treturn &models.C11yWordsResponseIndividualWordsItems0{\n\t\tWord:    word,\n\t\tPresent: false,\n\t}\n}\n\nfunc (i *Inspector) individualWordPresent(ctx context.Context,\n\tword string,","sourceCodeStart":138,"sourceCodeEnd":174,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/modules/text2vec-contextionary/vectorizer/inspector.go#L138-L174","documentation":"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.","triggerScenarios":"Calling GetWords when the contextionary is down/unreachable at the IsWordPresent step; gRPC transport errors, timeouts, or canceled contexts during the presence check.","commonSituations":"contextionary container not running, wrong port in configuration, transient network failures, deadline exceeded under load.","solutions":["Verify the contextionary service is running and reachable (the wrapped error will show connection-refused if not).","Retry the word inspection after restoring connectivity.","Check the configured contextionary URI/port in Weaviate's environment configuration.","Increase client timeouts if the failure is deadline-exceeded under heavy load."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"present, err := client.IsWordPresent(ctx, word)\nif err != nil {\n    if isConnectionErr(err) { /* retry / check contextionary */ }\n    return fmt.Errorf(\"word %q: %w\", word, err)\n}","preventionTips":["Check contextionary availability before word-inspection features.","Use context timeouts so presence checks fail fast and cleanly.","Retry transient gRPC errors with backoff.","Monitor logs for connection-refused warnings (ModelUncontactable)."],"tags":["go","grpc","network"],"backgroundTag":"grpc-connection-failure","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}