{"record":{"id":"555b6e8d71849586","repo":"influxdata/influxdb","slug":"reading-plugin-file-0","errorCode":null,"errorMessage":"reading plugin file: {0}","messagePattern":"reading plugin file: (.+?)","errorType":"exception","errorClass":"PluginError","httpStatus":null,"severity":"error","filePath":"influxdb3_processing_engine/src/plugins.rs","lineNumber":50,"sourceCode":"\n#[derive(Debug, Error)]\npub enum PluginError {\n    #[error(\"invalid database {0}\")]\n    InvalidDatabase(String),\n\n    #[error(\"couldn't find db\")]\n    MissingDb,\n\n    #[error(transparent)]\n    PyError(#[from] pyo3::PyErr),\n\n    #[error(transparent)]\n    WriteBufferError(#[from] write_buffer::Error),\n\n    #[error(transparent)]\n    AnyhowError(#[from] anyhow::Error),\n\n    #[error(\"reading plugin file: {0}\")]\n    ReadPluginError(#[from] std::io::Error),\n\n    #[error(\"error executing plugin: {0}\")]\n    PluginExecutionError(#[from] influxdb3_py_api::error::ExecutePluginError),\n\n    #[error(\"invalid cron syntax: {0}\")]\n    InvalidCronSyntax(#[from] cron::error::Error),\n\n    #[error(\"cron schedule never triggers: {0}\")]\n    CronScheduleNeverTriggers(String),\n\n    #[error(\"non-schedule plugin with schedule trigger: {0}\")]\n    NonSchedulePluginWithScheduleTrigger(String),\n\n    #[error(\"error fetching plugin from repository: {0} {1}\")]\n    FetchingFromRepository(reqwest::StatusCode, String),\n\n    #[error(","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_processing_engine/src/plugins.rs#L32-L68","documentation":"PluginError::ReadPluginError wraps a std::io::Error (via #[from]) encountered while reading a Python plugin file from disk on behalf of the processing engine. It is a generic IO guard, so it fires for any filesystem failure in that path — file not found, permission denied, or an unreadable plugin directory — not for errors inside the plugin's execution (those surface as PluginExecutionError). The offending input is the plugin file path being read, with the underlying io::Error as the message payload.","triggerScenarios":"Thrown at influxdb3_processing_engine/src/plugins.rs:50 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the wrapped io::Error for the concrete file failure","Verify the plugin file path exists and is readable by the server process","Re-upload or restore the plugin file if it was removed"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}