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

  1. Rebuild/reinstall Quickwit with the `vrl` feature enabled (e.g. `cargo build --features vrl`).
  2. Remove the `transform.vrl` section from the index config if VRL processing is not needed.
  3. 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

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


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)