influxdata/influxdb · error · Error

Connection error

Error message

Connection error: {}{}

What it means

ProcessingEngineError::PackageInstallationDisabled transparently forwards the message of a PluginEnvironmentError indicating that installing Python packages is not permitted in the current configuration. It is produced by the From<PluginEnvironmentError> conversion that discriminates 'install attempted while disabled' from general install failures. It exists so operators see the exact underlying reason verbatim.

Solutions

  1. Enable package installation in the server configuration (the relevant plugin-env/package-manager option) if policy allows.
  2. Pre-install the required packages into the plugin virtual environment so no install is needed.
  3. Remove package requirements from the plugin if the runtime should be dependency-free.
  4. Bake dependencies into the container image and restart.

Example fix

// before
influxdb3 serve ...  # package installs disabled, plugin requires 'requests'
// after
influxdb3 serve ... --plugin-env-enable-package-install  # or pre-install requests into the venv
Defensive patterns

Strategy: validation

Validate before calling

# before enabling a trigger that needs packages
if !package_install_enabled(config) && plugin_has_requirements(plugin) {
    echo "enable package installation or pre-install deps"
}

Try / catch

match result {
    Err(ProcessingEngineError::PackageInstallationDisabled(e)) => error!("installs disabled: {e}; enable package manager or pre-install"),
    Ok(v) => v,
}

Prevention

When it happens

Trigger: Enabling/creating a Python plugin trigger that requires packages while the server is configured to disallow package installation (e.g. package_manager disabled in config or the environment setup function returns that PluginEnvironmentError).

Common situations: Production deployments with package installs turned off for security; server started with a flag like --plugin-env or package-manager disabled; operator forgot to enable package management or pre-provision packages.

Related errors


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/12e5e51e3fa16ce6. Report an issue: GitHub.

Appendix: source

Thrown at core/client_util/src/connection.rs:79

    /// Return a reference to the base uri of the IOx http API endpoint
    pub fn uri(&self) -> &Uri {
        &self.uri
    }
}

/// The default User-Agent header sent by the HTTP client.
pub const USER_AGENT: &str = concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION"));
/// The default connection timeout
pub const DEFAULT_CONNECT_TIMEOUT: Duration = Duration::from_secs(1);
/// The default request timeout
pub const DEFAULT_TIMEOUT: Duration = Duration::from_secs(30);

/// Errors returned by the ConnectionBuilder
#[derive(Debug, Error)]
pub enum Error {
    /// Server returned an invalid argument error
    #[error("Connection error: {}{}", source, details)]
    TransportError {
        /// underlying [`tonic::transport::Error`]
        source: tonic::transport::Error,
        /// stringified version of the tonic error's source
        details: String,
    },

    /// Client received an unexpected error from the server
    #[error("Invalid URI: {}", .0)]
    InvalidUri(#[from] http::Error),
}

// Custom impl to include underlying source (not included in tonic
// transport error)
impl From<tonic::transport::Error> for Error {
    fn from(source: tonic::transport::Error) -> Self {
        use std::error::Error;
        let details = source

View on GitHub (pinned to 06200ef96b)