vectordotdev/vector · error · Error

Unable to load exact documentation search index

Error message

Unable to load exact documentation search index: ${response.status}

What it means

Panic from `.expect("all required builder params specified")` on the aws-sdk-sqs `SendMessageBatchRequestEntry` builder in the deferred-message path of `run_once`. The builder's `build()` fails only when a required field (`id` or `message_body`) is missing. Both are set here, so the expect encodes an invariant; it firing means the code or SDK changed such that a required param is absent.

Solutions

  1. Ensure `.id(message_id.clone())` and `.message_body(...)` are both chained before `.build()` after any refactor.
  2. Diff the aws-sdk-sqs builder API for `SendMessageBatchRequestEntry` against the pinned version and add any newly required setters.
  3. Replace the expect with error handling that emits a `SqsMessageProcessingError`/skip instead of aborting the SQS polling loop.

Example fix

// before
SendMessageBatchRequestEntry::builder()
    .id(message_id.clone())
    .message_body(message.body.unwrap_or_default())
    .build()
    .expect("all required builder params specified")
// after
match SendMessageBatchRequestEntry::builder()
    .id(message_id.clone())
    .message_body(message.body.unwrap_or_default())
    .build()
{
    Ok(entry) => entry,
    Err(e) => { emit!(SqsMessageProcessingError{..}); continue; }
}
Defensive patterns

Strategy: validation

Validate before calling

fn valid_send_entry(id: &str, body: &str) -> bool {
    !id.is_empty() && !body.is_empty()
}

Type guard

fn body_of(m: Message) -> String { m.body.unwrap_or_default() }

Try / catch

match SendMessageBatchRequestEntry::builder().id(id).message_body(body).build() {
    Ok(entry) => deferred_entries.push(entry),
    Err(e) => { emit!(SqsMessageProcessingError { .. }); continue; }
}

Prevention

When it happens

Trigger: Building a `SendMessageBatchRequestEntry` without `.id()` or `.message_body()`. At src/sources/aws_s3/sqs.rs:509 this triggers if `message.body.unwrap_or_default()` stops being called (e.g. refactor uses `message.body` which is `Option<String>`), or an aws-sdk upgrade adds a required field like a queue URL / delay seconds to the entry builder.

Common situations: aws-sdk-sqs major version bump changing builder required fields; refactoring the fan-out (S3 event pointing to another queue) path and dropping the `.message_body(...)` setter; passing an empty message body deliberately which is fine, versus accidentally passing no body.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of vectordotdev/vector@bdb87aeaa4 (2026-09-16). Data as JSON: /api/errors/e9bf1a2bc75fa37b. Report an issue: GitHub.

Appendix: source

Thrown at website/layouts/partials/javascript/search.html:49

{{ end }}

{{ $functionsURL := "/docs/reference/vrl/functions/" | relURL }}
{{ range site.Data.docs.remap.functions }}
  {{ $exactSearchRecords = $exactSearchRecords | append (dict
    "aliases" (slice .name)
    "category" "VRL function"
    "content" (.description | markdownify | plainify)
    "title" .name
    "url" (printf "%s#%s" $functionsURL .anchor)) }}
{{ end }}

{{ $exactSearchIndex := resources.FromString "search/exact-docs.json" ($exactSearchRecords | jsonify) | fingerprint "sha256" }}
<script src="{{ $compiled.RelPermalink }}"></script>
<script type="module">
  window.loadExactSearch = async () => {
    const response = await fetch("{{ $exactSearchIndex.RelPermalink }}");
    if (!response.ok) {
      throw new Error(`Unable to load exact documentation search index: ${response.status}`);
    }
    return response.json();
  };

  window.loadPagefind = async () => {
    const pagefind = await import("/pagefind/pagefind.js");
    await pagefind.init();
    return pagefind;
  };
</script>

View on GitHub (pinned to bdb87aeaa4)