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
- Ensure `.id(message_id.clone())` and `.message_body(...)` are both chained before `.build()` after any refactor.
- Diff the aws-sdk-sqs builder API for `SendMessageBatchRequestEntry` against the pinned version and add any newly required setters.
- 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
- Keep `.id()` and `.message_body()` setters adjacent to `.build()` so refactors cannot orphan them.
- Re-verify builder required fields whenever bumping aws-sdk-sqs.
- Cover the deferred/fan-out path in tests, not just the main path.
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
- Pagefind is unavailable.
- Serializer does not support JSON
- shutdown_force_trigger for source
- backoff never ends
- shutdown_begun_trigger for source
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)