quickwit-oss/quickwit · error
VRL is not enabled: please recompile with the `vrl` feature
Error message
VRL is not enabled: please recompile with the `vrl` feature
What it means
`DocProcessor::try_new` checks at construction time whether a VRL transform was configured. The binary was compiled without the `vrl` feature flag, so any non-None `TransformConfig` is rejected with this message, since VRL transforms cannot run in that build.
Solutions
- Rebuild/reinstall Quickwit with the `vrl` feature enabled (e.g. `cargo build --features vrl`).
- Remove the `transform.vrl` section from the index config if VRL processing is not needed.
- Switch to an official release binary that includes the `vrl` feature.
Example fix
// before (Cargo/build) cargo build --release // after cargo build --release --features vrl
Defensive patterns
Strategy: fallback
Validate before calling
// check feature support before deploying a config with a transform
// (outside the binary: verify your build's feature set)
// cargo metadata / build script: ensure --features vrl when transforms are used
let uses_vrl = index_config.doc_mapping.transform.as_ref().is_some();
if uses_vrl && !build_has_vrl_feature() {
plan_err("this build lacks the vrl feature; rebuild or drop the transform");
} Try / catch
match DocProcessor::try_new(...) {
Ok(dp) => dp,
Err(e) if e.to_string().contains("VRL is not enabled") => {
// fall back to a build with the vrl feature or strip the transform config
...
}
Err(e) => return Err(e.into()),
} Prevention
- Use release binaries built with the vrl feature when index configs use VRL transforms.
- Gate configs containing transform.vrl to builds that support it via deployment checks.
- Document feature flags alongside index config schema so operators know the requirements.
When it happens
Trigger: Starting an indexer with an index config containing a `transform.vrl` section while running a Quickwit build compiled without the `vrl` cargo feature.
Common situations: Using a minimal/distro binary or a build with default features stripped, then deploying an index config authored against a full build with VRL support.
Related errors
- failed to compile VRL script
- `serde_multikey` require list-style arguments
- `serde_multikey` was applied multiple time to the same field
- `serde_multikey` was applied to a non Serialize/Deserialize…
- `serde_multikey` was applied to a tuple-struct or an empty…
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/7ff4296a9add5ff5.
Report an issue: GitHub.
Appendix: source
Thrown at quickwit/quickwit-indexing/src/actors/doc_processor.rs:430
publish_lock: PublishLock,
#[cfg(feature = "vrl")]
transform_opt: Option<VrlProgram>,
input_format: SourceInputFormat,
}
impl DocProcessor {
pub fn try_new(
index_id: IndexId,
source_id: SourceId,
doc_mapper: Arc<DocMapper>,
indexer_mailbox: Mailbox<Indexer>,
transform_config_opt: Option<TransformConfig>,
input_format: SourceInputFormat,
fingerprinter_opt: Option<Fingerprinter>,
) -> anyhow::Result<Self> {
let timestamp_field_opt = extract_timestamp_field(&doc_mapper)?;
if cfg!(not(feature = "vrl")) && transform_config_opt.is_some() {
bail!("VRL is not enabled: please recompile with the `vrl` feature")
}
Ok(DocProcessor {
doc_mapper,
indexer_mailbox,
timestamp_field_opt,
fingerprinter_opt,
counters: Arc::new(DocProcessorCounters::new(index_id, source_id)),
publish_lock: PublishLock::default(),
#[cfg(feature = "vrl")]
transform_opt: transform_config_opt
.map(VrlProgram::try_from_transform_config)
.transpose()?,
input_format,
})
}
// Extract a timestamp from a tantivy document.
//View on GitHub (pinned to a39730c5cd)