{"record":{"id":"68c54e9f5e601e69","repo":"argoproj/argo-workflows","slug":"failed-to-load-input-artifacts-from-plugin-q-w","errorCode":null,"errorMessage":"failed to load input artifacts from plugin %q: %w","messagePattern":"failed to load input artifacts from plugin %q: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/argoexec/commands/supervisor.go","lineNumber":160,"sourceCode":"func runSupervisorPreMain(ctx context.Context, stages preMainStages, pluginNames []wfv1.ArtifactPluginName) error {\n\tif err := stages.WriteTemplate(); err != nil {\n\t\treturn fmt.Errorf(\"failed to write template: %w\", err)\n\t}\n\tif err := stages.StageFiles(ctx); err != nil {\n\t\treturn fmt.Errorf(\"failed to stage files: %w\", err)\n\t}\n\n\tg, gctx := errgroup.WithContext(ctx)\n\tg.Go(func() error {\n\t\tif err := stages.LoadArtifactsWithoutPlugins(gctx); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to load non-plugin input artifacts: %w\", err)\n\t\t}\n\t\treturn nil\n\t})\n\tfor _, name := range pluginNames {\n\t\tg.Go(func() error {\n\t\t\tif err := stages.LoadArtifactsFromPlugin(gctx, name); err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to load input artifacts from plugin %q: %w\", name, err)\n\t\t\t}\n\t\t\treturn nil\n\t\t})\n\t}\n\treturn g.Wait()\n}\n\n// inputArtifactPluginNames reads the controller-supplied list of input\n// artifact plugin names from the supervisor's environment.\nfunc inputArtifactPluginNames() []wfv1.ArtifactPluginName {\n\traw := common.SplitPluginNames(os.Getenv(common.EnvVarInputArtifactPluginNames))\n\tnames := make([]wfv1.ArtifactPluginName, 0, len(raw))\n\tfor _, p := range raw {\n\t\tnames = append(names, wfv1.ArtifactPluginName(p))\n\t}\n\treturn names\n}\n","sourceCodeStart":142,"sourceCodeEnd":178,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/cmd/argoexec/commands/supervisor.go#L142-L178","documentation":"In runSupervisorPreMain's errgroup, each artifact plugin gets its own goroutine calling LoadArtifactsFromPlugin; failures are wrapped as \"failed to load input artifacts from plugin %q\" with the plugin name. Plugin-based artifact loading (artifact plugins handle fetch themselves) failing means the named plugin sidecar/service did not deliver the artifact, and the errgroup aborts pre-main.","triggerScenarios":"supervisorPreMain's per-plugin errgroup goroutine: LoadArtifactsFromPlugin(gctx, name) fails — the plugin container isn't running, its socket/service is unreachable, or the plugin reported an error for the artifact.","commonSituations":"Artifact plugin sidecar crashed or OOMed; plugin name typo in the Workflow's artifact plugin configuration; plugin not registered in the executor's plugin discovery (env var / volume mount missing); version mismatch between plugin and executor.","solutions":["Check the named plugin in the error for container crash/logs in the same pod","Verify the plugin is configured and discoverable by argoexec (mount/env wiring in the pod spec)","Confirm the plugin name in the Workflow matches the registered plugin name","Restart/redeploy the plugin sidecar and retry the workflow node"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// verify plugin registration before submit:\n// argo executor-plugin build / verify plugin is mounted and named correctly\n// kubectl get pod <pod> -o jsonpath='{.containers[*].name}'  # plugin sidecar present?","typeGuard":null,"tryCatchPattern":"// errgroup already aggregates: match by plugin name from the message\nif err := runSupervisorPreMain(ctx, stages, pluginNames); err != nil {\n    if strings.Contains(err.Error(), \"failed to load input artifacts from plugin\") {\n        // fall back to non-plugin loading path or restart the plugin sidecar\n    }\n}","preventionTips":["Health-check plugin sidecars before artifact loading begins","Keep plugin names in the Workflow exactly matching registered names","Pin plugin and executor versions to compatible releases","Set resource requests on plugin containers to avoid OOM kills"],"tags":["go","argo-executor","supervisor","artifacts","plugins"],"backgroundTag":"artifact-plugin-load-failed","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"}