{"record":{"id":"a7984bfb78a950a8","repo":"quickwit-oss/quickwit","slug":"lambda-support-is-statically-disabled-but-enabled","errorCode":null,"errorMessage":"lambda support is statically disabled, but enabled in configuration","messagePattern":"lambda support is statically disabled, but enabled in configuration","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-serve/src/lib.rs","lineNumber":750,"sourceCode":"    // Initialize Lambda invoker if enabled and searcher service is running\n    let searcher_context = if node_config.is_service_enabled(QuickwitService::Searcher) {\n        if let Some(lambda_config) = &node_config.searcher_config.lambda {\n            #[cfg(feature = \"lambda\")]\n            {\n                info!(\"initializing AWS Lambda invoker for search\");\n                warn!(\"offloading to lambda is EXPERIMENTAL. Use at your own risk\");\n                let invoker =\n                    quickwit_lambda_client::try_get_or_deploy_invoker(lambda_config).await?;\n                Arc::new(SearcherContext::new(\n                    node_config.searcher_config.clone(),\n                    search_split_cache_opt,\n                    Some(invoker),\n                ))\n            }\n            #[cfg(not(feature = \"lambda\"))]\n            {\n                let _ = lambda_config;\n                bail!(\"lambda support is statically disabled, but enabled in configuration\");\n            }\n        } else {\n            Arc::new(SearcherContext::new_without_invoker(\n                node_config.searcher_config.clone(),\n                search_split_cache_opt,\n            ))\n        }\n    } else {\n        Arc::new(SearcherContext::new_without_invoker(\n            node_config.searcher_config.clone(),\n            search_split_cache_opt,\n        ))\n    };\n\n    let read_replica_metastore_client_opt = local_metastore_server\n        .resolve_read_only_client(&cluster, &node_config)\n        .await?;\n","sourceCodeStart":732,"sourceCodeEnd":768,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-serve/src/lib.rs#L732-L768","documentation":"Quickwit can delegate leaf search to AWS Lambda when the searcher config sets a lambda invoker, but the binary must be built with the `lambda` cargo feature. When the configuration enables lambda support while the binary was compiled without that feature, serve_quickwit bails with 'lambda support is statically disabled, but enabled in configuration' rather than silently ignoring the setting.","triggerScenarios":"Running an official/standard quickwit binary (built without --features lambda) with searcher_config.lambda configuration present (e.g. lambda invoker settings set), or a config file left over from a lambda-enabled custom build used with a non-lambda build.","commonSituations":"Deploying the default Quickwit distribution after copying a lambda-enabled node's config; enabling lambda search on a platform/build that does not include the feature (the quickwit-lambda-server/client crates are feature-gated); stale environment config after downgrading binaries.","solutions":["Remove/disable the lambda invoker settings under the searcher configuration so the standard binary can start.","Or build/obtain a Quickwit binary compiled with the `lambda` cargo feature (cargo build --features lambda).","If you intended local (non-Lambda) searching only, delete the leftover lambda section from quickwit.yaml.","Check for environment-driven config overrides injecting lambda settings unexpectedly (env var config overlays)."],"exampleFix":"// before (searcher config in quickwit.yaml, standard build)\nsearcher:\n  lambda:\n    function_name: quickwit-leaf-search\n// after\nsearcher: {}","handlingStrategy":"validation","validationCode":"// Guard config before launching a standard (non-lambda) quickwit binary\nconst cfg = loadQuickwitConfig('quickwit.yaml');\nif (cfg.searcher?.lambda) {\n  throw new Error('lambda invoker configured but binary lacks the lambda feature; remove searcher.lambda or use a lambda-enabled build');\n}","typeGuard":"function lambdaConfigured(config) {\n  return Boolean(config?.searcher?.lambda);\n}","tryCatchPattern":"try {\n  await serveQuickwit(config);\n} catch (e) {\n  if (e.message.includes('lambda support is statically disabled')) {\n    console.error('Either drop searcher.lambda from config or deploy a build compiled with --features lambda.');\n  }\n  throw e;\n}","preventionTips":["Keep per-build config profiles: lambda-enabled config only with lambda-enabled binaries.","Document the cargo `lambda` feature requirement wherever the lambda searcher config is documented.","Scrub lambda sections when copying configs between environments.","Pin deployment manifests so a lambda-enabled config cannot be applied to a standard image."],"tags":["configuration","feature-gate","lambda","compile-time-flags"],"backgroundTag":"feature-not-enabled","analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}