{"record":{"id":"e1e5fb7a0dbb2f52","repo":"influxdata/influxdb","slug":"no-plugin-directory-configured","errorCode":null,"errorMessage":"No plugin directory configured","messagePattern":"No plugin directory configured","errorType":"exception","errorClass":"ProcessingEngineError::PluginError","httpStatus":null,"severity":"error","filePath":"influxdb3_processing_engine/src/lib.rs","lineNumber":1057,"sourceCode":"    }\n\n    pub async fn create_plugin_file(\n        self: &Arc<Self>,\n        plugin_filename: &str,\n        content: &str,\n    ) -> Result<(), ProcessingEngineError> {\n        if self.environment_manager.plugin_dir_only {\n            return Err(ProcessingEngineError::PluginError(\n                PluginError::PluginInstallationDisabled,\n            ));\n        }\n\n        let plugin_dir = self\n            .environment_manager\n            .plugin_dir\n            .as_ref()\n            .ok_or_else(|| {\n                ProcessingEngineError::PluginError(plugins::PluginError::AnyhowError(anyhow!(\n                    \"No plugin directory configured\"\n                )))\n            })?;\n\n        let plugin_path = validate_path_within_plugin_dir(plugin_dir, plugin_filename)?;\n\n        // Create parent directories if they don't exist (for multi-file plugins)\n        if let Some(parent) = plugin_path.parent() {\n            async_fs::create_dir_all(parent).await.map_err(|e| {\n                ProcessingEngineError::PluginError(plugins::PluginError::ReadPluginError(e))\n            })?;\n        }\n\n        async_fs::write(&plugin_path, content).await.map_err(|e| {\n            ProcessingEngineError::PluginError(plugins::PluginError::ReadPluginError(e))\n        })?;\n\n        Ok(())","sourceCodeStart":1039,"sourceCodeEnd":1075,"githubUrl":"https://github.com/influxdata/influxdb/blob/d28e26e048401c53cbb98cf2d6ab0cf1e98048ca/influxdb3_processing_engine/src/lib.rs#L1039-L1075","documentation":"When a plugin is installed (save path in influxdb3_processing_engine), the engine resolves the target directory from its environment manager. If the server was started without --plugin-dir, plugin_dir is None and the install fails with ProcessingEngineError::PluginError('No plugin directory configured'). This is distinct from PluginInstallationDisabled, which is returned when the server runs in plugin-dir-only mode.","triggerScenarios":"Starting `influxdb3 serve` without --plugin-dir and then creating/uploading a plugin through the HTTP plugin endpoints (e.g. /api/v3/plugins/files) or the equivalent engine save_plugin call.","commonSituations":"Minimal dev/test server launched without the plugin flag; Kubernetes manifests or Docker compose files missing --plugin-dir; assuming the plugin directory can be set via environment variable after startup.","solutions":["Restart the server with --plugin-dir /path/to/plugins and retry the install","Make sure the directory exists and the server process has write permission (it creates parent dirs for multi-file plugins)","Confirm you are not hitting the other error: plugin-dir-only mode yields 'Plugin installation disabled', which needs a different config change"],"exampleFix":"# before: no plugin dir -> install fails with 'No plugin directory configured'\ninfluxdb3 serve --node-id n1 --object-store file:///data\n\n# after\ninfluxdb3 serve --node-id n1 --object-store file:///data --plugin-dir /data/plugins","handlingStrategy":"validation","validationCode":"# make the plugin dir and confirm writability before the server starts\nmkdir -p /var/lib/influxdb3/plugins\ntest -w /var/lib/influxdb3/plugins || { echo \"plugin dir not writable\" >&2; exit 1; }\ninfluxdb3 serve --plugin-dir /var/lib/influxdb3/plugins \"$@\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always start the server with --plugin-dir if you plan to install processing-engine plugins","Bake the flag into systemd units / Helm values so it cannot be forgotten","Distinguish this from 'plugin installation disabled' (plugin-dir-only mode) when diagnosing"],"tags":["influxdb","processing-engine","plugins","configuration","serve"],"backgroundTag":"plugin-directory-not-configured","analyzedSha":"d28e26e048401c53cbb98cf2d6ab0cf1e98048ca","analyzedAt":"2026-08-16T19:53:34.623Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}