{"record":{"id":"158f524d6323b05f","repo":"argoproj/argo-workflows","slug":"failed-to-create-plugin-driver-for-s-w","errorCode":null,"errorMessage":"failed to create plugin driver for %s: %w","messagePattern":"failed to create plugin driver for (.+?): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/artifacts/artifacts.go","lineNumber":285,"sourceCode":"\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\taccountKey = accountKeyBytes\n\t\t}\n\t\tdriver := azure.ArtifactDriver{\n\t\t\tAccountKey:  accountKey,\n\t\t\tContainer:   art.Azure.Container,\n\t\t\tEndpoint:    art.Azure.Endpoint,\n\t\t\tUseSDKCreds: art.Azure.UseSDKCreds,\n\t\t}\n\t\treturn &driver, nil\n\t}\n\n\tif art.Plugin != nil {\n\t\t// Get the socket path from the driver configuration\n\t\t// This would typically come from the workflow controller configuration\n\t\tdriver, err := plugin.NewDriver(ctx, art.Plugin.Name, art.Plugin.Name.SocketPath(), art.Plugin.ConnectionTimeout())\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create plugin driver for %s: %w\", art.Plugin.Name, err)\n\t\t}\n\t\treturn driver, nil\n\t}\n\n\treturn nil, ErrUnsupportedDriver\n}\n","sourceCodeStart":267,"sourceCodeEnd":292,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/artifacts/artifacts.go#L267-L292","documentation":"When an artifact uses the Plugin type, newDriver connects to the artifact-plugin socket (plugin.NewDriver) and wraps any failure as 'failed to create plugin driver for <name>: <cause>'. The underlying cause is typically a bad socket path, connection timeout, or failed handshake.","triggerScenarios":"art.Plugin != nil and plugin.NewDriver fails: plugin socket path missing/wrong in the controller config (artifactDrivers.plugin), the plugin container is not running, or the connection timeout elapses before the plugin responds.","commonSituations":"Plugin not deployed or crashed in the controller namespace; socketPath misconfigured in the artifact plugin config; plugin version incompatible with the controller; network policy blocking the Unix socket/TCP endpoint.","solutions":["Check the artifact plugin is running (kubectl get pods) and its socket path matches artifactDrivers.plugin.socketPath in the controller configmap.","Increase artifactDrivers.plugin.connectionTimeout if the plugin is slow to start.","Inspect the wrapped cause (%w) in the full error message and controller logs for the real failure.","Verify plugin API compatibility between the plugin version and the Argo controller version."],"exampleFix":"// before — controller configmap\nartifactDrivers:\n  plugin:\n    address: /var/run/argo/artifact-plugin.sock\n    timeout: 10s\n// after — socket matches deployed plugin\nartifactDrivers:\n  plugin:\n    address: /var/run/argo/artifact-plugin.sock\n    timeout: 30s","handlingStrategy":"try-catch","validationCode":"cfg, err := clientset.CoreV1().ConfigMaps(ns).Get(ctx, \"workflow-controller-configmap\", metav1.GetOptions{})\n// verify artifactDrivers.plugin.socketPath is set and the plugin pod is Running before submit","typeGuard":null,"tryCatchPattern":"driver, err := artifacts.NewDriver(ctx, art, ri)\nvar perr error\nif errors.As(err, &perr) && strings.Contains(err.Error(), \"failed to create plugin driver\") {\n\tlogger.Error(ctx, \"artifact plugin unreachable; check plugin pod and socketPath config\", err)\n\treturn nil\n}","preventionTips":["Health-check the artifact plugin before deploying workflows that use Plugin artifacts.","Keep socketPath and connectionTimeout in one reviewed configmap.","Monitor the plugin pod with liveness probes so failures surface early."],"tags":["plugin","artifacts","connection"],"backgroundTag":"plugin-driver-connection-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"}