{"record":{"id":"6ab9fcdf3d18ca0f","repo":"argoproj/argo-workflows","slug":"plugin-s-load-failed-s","errorCode":null,"errorMessage":"plugin %s load failed: %s","messagePattern":"plugin (.+?) load failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/artifacts/plugin/plugin.go","lineNumber":157,"sourceCode":"func (d *Driver) Close() error {\n\tif d.conn != nil {\n\t\treturn d.conn.Close()\n\t}\n\treturn nil\n}\n\n// Load implements ArtifactDriver.Load by calling the plugin service\nfunc (d *Driver) Load(ctx context.Context, inputArtifact *wfv1.Artifact, path string) error {\n\tgrpcArtifact := convertToGRPC(inputArtifact)\n\tresp, err := d.client.Load(ctx, &artifact.LoadArtifactRequest{\n\t\tInputArtifact: grpcArtifact,\n\t\tPath:          path,\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"plugin %s load failed: %w\", d.pluginName, err)\n\t}\n\tif !resp.Success {\n\t\treturn fmt.Errorf(\"plugin %s load failed: %s\", d.pluginName, resp.Error)\n\t}\n\treturn nil\n}\n\n// OpenStream implements ArtifactDriver.OpenStream by calling the plugin service\nfunc (d *Driver) OpenStream(ctx context.Context, a *wfv1.Artifact) (io.ReadCloser, error) {\n\tgrpcArtifact := convertToGRPC(a)\n\tstream, err := d.client.OpenStream(ctx, &artifact.OpenStreamRequest{\n\t\tArtifact: grpcArtifact,\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"plugin %s open stream failed: %w\", d.pluginName, err)\n\t}\n\n\treader, writer := io.Pipe()\n\n\tgo func() {\n\t\tdefer writer.Close()","sourceCodeStart":139,"sourceCodeEnd":175,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/artifacts/plugin/plugin.go#L139-L175","documentation":"Driver.Load reached the plugin and got a response, but the plugin set Success=false and returned its own error string. This is a plugin-side business failure (e.g. source artifact not found in the plugin's backing store, invalid artifact configuration), not a transport problem.","triggerScenarios":"The Load RPC succeeded and returned LoadArtifactResponse{Success:false, Error:\"...\"}; the plugin could not fetch/ materialize the artifact at the requested path (bad key, missing object in storage, invalid plugin Configuration).","commonSituations":"Artifact key/Configuration typo in the workflow spec, plugin's storage credentials revoked or expired, object deleted upstream before the workflow ran, path not writable in the plugin's view of the volume.","solutions":["Read the wrapped plugin error text in the message — it names the plugin-side cause","Validate the artifact's plugin key and Configuration against the plugin's documentation","Check the plugin's storage credentials and that the source object still exists","Confirm the destination path is writable by the plugin inside the workflow pod"],"exampleFix":"// before\nplugin:\n  key: artifacts/{{workflow.name}}/out.tgz\n// after: fix wrong key\nplugin:\n  key: artifacts/{{workflow.namespace}}/{{workflow.name}}/out.tgz","handlingStrategy":"try-catch","validationCode":"// validate artifact plugin config before submission\nif art.Plugin == nil || art.Plugin.Key == \"\" {\n    return fmt.Errorf(\"artifact %q has empty plugin key\", art.Name)\n}\nif err := validatePluginConfiguration(art.Plugin.Configuration); err != nil {\n    return fmt.Errorf(\"invalid plugin configuration for %q: %w\", art.Plugin.Name, err)\n}","typeGuard":null,"tryCatchPattern":"if err != nil {\n    return err // transport failure\n}\n// resp.Success==false surfaces as 'plugin %s load failed: <plugin text>' —\n// match on the plugin's message to branch on known causes\nif strings.Contains(err.Error(), \"not found\") {\n    return fmt.Errorf(\"artifact key missing upstream; regenerate the source artifact\")\n}\nreturn err","preventionTips":["Validate artifact keys and plugin Configuration at workflow lint/submit time","Grant the plugin's service account correct storage credentials before running workflows","Log the plugin's resp.Error text verbatim — it is the authoritative cause"],"tags":["plugin-logic","artifact-load","configuration","plugin-driver"],"backgroundTag":"plugin-artifact-load-rejected","analyzedSha":"35bff19146f5a6ada77468c431f2624bd577e373","analyzedAt":"2026-09-03T19:34:35.908Z","contentChangedAt":"2026-09-03T19:34:35.908Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}