{"record":{"id":"3952c748ce0d87a6","repo":"influxdata/influxdb","slug":"unexpectedeof","errorCode":"UnexpectedEOF","errorMessage":"UnexpectedEOF","messagePattern":"UnexpectedEOF","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/catalog_cache/src/api/list/v2.rs","lineNumber":196,"sourceCode":"        Self {\n            response,\n            current: Default::default(),\n            decoder: ListDecoder::default(),\n        }\n    }\n}\n\n/// Decode [`ListEntry`] from a v2 list response\npub fn decode_response(response: Response) -> Result<impl Stream<Item = Result<ListEntry>>> {\n    let response = response.error_for_status()?;\n    let state = ListStreamState::new(response);\n    Ok(stream::try_unfold(state, async move |mut state| {\n        loop {\n            if state.current.is_empty() {\n                match state.response.chunk().await? {\n                    Some(new) => state.current = new,\n                    None => {\n                        ensure!(state.decoder.is_message_boundary(), UnexpectedEOFSnafu);\n                        return Ok(None);\n                    }\n                }\n            }\n\n            if let Some(x) = state.decoder.decode(&mut state.current)? {\n                return Ok(Some((x, state)));\n            }\n        }\n    }))\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    use crate::CacheValue;\n\n    #[test]","sourceCodeStart":178,"sourceCodeEnd":214,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/core/catalog_cache/src/api/list/v2.rs#L178-L214","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","solutions":["Read the wrapped PluginEnvironmentError message to see which package/command failed.","Verify network/proxy access to the package index from the server host.","Fix the requirements list in the plugin (correct names/versions compatible with the Python runtime).","Pre-install the packages manually into the plugin environment or bake them into the image, then restart the trigger."],"exampleFix":"// before (plugin file)\n# requirements: pandas==9.9.9\n// after\n# requirements: pandas==2.2.2  # version that exists and matches the runtime Python","handlingStrategy":"try-catch","validationCode":"# check requirements resolve before deploying\npip download -r requirements.txt -d /tmp/check || echo 'unresolvable requirements'","typeGuard":null,"tryCatchPattern":"match result {\n    Err(ProcessingEngineError::PythonPackageError(e)) => error!(\"package install failed: {e}; check network and requirements\"),\n    Ok(v) => v,\n}","preventionTips":["Pin known-good, existing package versions in plugin requirements.","Verify PyPI/proxy reachability from the server host.","Pre-bake heavy dependencies into the server image.","Ensure pip exists in the plugin environment's Python."],"tags":["python","plugin-environment","package-install","pip"],"backgroundTag":"missing-dependency","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}