influxdata/influxdb · error · ProcessingEngineError::PluginError

No plugin directory configured

Error message

No plugin directory configured

What it means

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.

Source

Thrown at influxdb3_processing_engine/src/lib.rs:1057

    }

    pub async fn create_plugin_file(
        self: &Arc<Self>,
        plugin_filename: &str,
        content: &str,
    ) -> Result<(), ProcessingEngineError> {
        if self.environment_manager.plugin_dir_only {
            return Err(ProcessingEngineError::PluginError(
                PluginError::PluginInstallationDisabled,
            ));
        }

        let plugin_dir = self
            .environment_manager
            .plugin_dir
            .as_ref()
            .ok_or_else(|| {
                ProcessingEngineError::PluginError(plugins::PluginError::AnyhowError(anyhow!(
                    "No plugin directory configured"
                )))
            })?;

        let plugin_path = validate_path_within_plugin_dir(plugin_dir, plugin_filename)?;

        // Create parent directories if they don't exist (for multi-file plugins)
        if let Some(parent) = plugin_path.parent() {
            async_fs::create_dir_all(parent).await.map_err(|e| {
                ProcessingEngineError::PluginError(plugins::PluginError::ReadPluginError(e))
            })?;
        }

        async_fs::write(&plugin_path, content).await.map_err(|e| {
            ProcessingEngineError::PluginError(plugins::PluginError::ReadPluginError(e))
        })?;

        Ok(())

View on GitHub (pinned to d28e26e048)

Solutions

  1. Restart the server with --plugin-dir /path/to/plugins and retry the install
  2. Make sure the directory exists and the server process has write permission (it creates parent dirs for multi-file plugins)
  3. Confirm you are not hitting the other error: plugin-dir-only mode yields 'Plugin installation disabled', which needs a different config change

Example fix

# before: no plugin dir -> install fails with 'No plugin directory configured'
influxdb3 serve --node-id n1 --object-store file:///data

# after
influxdb3 serve --node-id n1 --object-store file:///data --plugin-dir /data/plugins
Defensive patterns

Strategy: validation

Validate before calling

# make the plugin dir and confirm writability before the server starts
mkdir -p /var/lib/influxdb3/plugins
test -w /var/lib/influxdb3/plugins || { echo "plugin dir not writable" >&2; exit 1; }
influxdb3 serve --plugin-dir /var/lib/influxdb3/plugins "$@"

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of influxdata/influxdb@d28e26e048 (2026-08-16). Data as JSON: /api/errors/e1e5fb7a0dbb2f52. Report an issue: GitHub.