influxdata/influxdb · error

UnexpectedEOF

UnexpectedEOF

Error message

UnexpectedEOF

What it means

ProcessingEngineError::PythonPackageError wraps a PluginEnvironmentError raised while installing Python packages for a plugin's virtual environment. It occurs when pip/package installation inside the plugin environment fails (network issues, unavailable package versions, broken index). The library throws it lazily when it tries to set up the environment for a Python trigger.

Solutions

  1. Read the wrapped PluginEnvironmentError message to see which package/command failed.
  2. Verify network/proxy access to the package index from the server host.
  3. Fix the requirements list in the plugin (correct names/versions compatible with the Python runtime).
  4. Pre-install the packages manually into the plugin environment or bake them into the image, then restart the trigger.

Example fix

// before (plugin file)
# requirements: pandas==9.9.9
// after
# requirements: pandas==2.2.2  # version that exists and matches the runtime Python
Defensive patterns

Strategy: try-catch

Validate before calling

# check requirements resolve before deploying
pip download -r requirements.txt -d /tmp/check || echo 'unresolvable requirements'

Try / catch

match result {
    Err(ProcessingEngineError::PythonPackageError(e)) => error!("package install failed: {e}; check network and requirements"),
    Ok(v) => v,
}

Prevention

When it happens

Trigger: Enabling/creating a Python trigger whose plugin declares package requirements when pip install fails: no network access, nonexistent package name/version, incompatible Python version, or the packages are already installed so install is skipped (see PackageInstallationDisabled for the disabled case).

Common situations: Air-gapped or firewalled cluster where PyPI is unreachable; typo'd package or pinned version that doesn't exist; base Python image lacking pip; corporate proxy requiring credentials.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


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

Appendix: source

Thrown at core/catalog_cache/src/api/list/v2.rs:196

        Self {
            response,
            current: Default::default(),
            decoder: ListDecoder::default(),
        }
    }
}

/// Decode [`ListEntry`] from a v2 list response
pub fn decode_response(response: Response) -> Result<impl Stream<Item = Result<ListEntry>>> {
    let response = response.error_for_status()?;
    let state = ListStreamState::new(response);
    Ok(stream::try_unfold(state, async move |mut state| {
        loop {
            if state.current.is_empty() {
                match state.response.chunk().await? {
                    Some(new) => state.current = new,
                    None => {
                        ensure!(state.decoder.is_message_boundary(), UnexpectedEOFSnafu);
                        return Ok(None);
                    }
                }
            }

            if let Some(x) = state.decoder.decode(&mut state.current)? {
                return Ok(Some((x, state)));
            }
        }
    }))
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::CacheValue;

    #[test]

View on GitHub (pinned to 06200ef96b)