{"record":{"id":"2690bab57c65e9e5","repo":"argoproj/argo-workflows","slug":"plugin-s-has-more-than-one-server-file","errorCode":null,"errorMessage":"plugin %s has more than one server.* file","messagePattern":"plugin (.+?) has more than one server\\.\\* file","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/argo/commands/executorplugin/io.go","lineNumber":31,"sourceCode":")\n\nfunc loadPluginManifest(pluginDir string) (*spec.Plugin, error) {\n\tmanifest, err := os.ReadFile(filepath.Join(pluginDir, \"plugin.yaml\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp := &spec.Plugin{}\n\terr = yaml.UnmarshalStrict(manifest, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfiles, err := filepath.Glob(filepath.Join(pluginDir, \"server.*\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(files) > 1 {\n\t\treturn nil, fmt.Errorf(\"plugin %s has more than one server.* file\", p.Name)\n\t}\n\tif len(files) == 1 {\n\t\tcode, err := os.ReadFile(files[0])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tp.Spec.Sidecar.Container.Args = []string{string(code)}\n\t}\n\treturn p, p.Validate()\n}\n\nfunc addHeader(x []byte, h string) []byte {\n\treturn fmt.Appendf(nil, \"%s\\n%s\", h, string(x))\n}\n\nfunc addCodegenHeader(x []byte) []byte {\n\treturn addHeader(x, \"# This is an auto-generated file. DO NOT EDIT\")\n}","sourceCodeStart":13,"sourceCodeEnd":49,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/cmd/argo/commands/executorplugin/io.go#L13-L49","documentation":"loadPluginManifest found more than one file matching server.* in the executor plugin directory. A plugin must ship exactly one server binary (e.g. server.go or a single server.<ext>), so the manifest load aborts.","triggerScenarios":"Thrown at cmd/argo/commands/executorplugin/io.go:31 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove extra server.* files from the plugin directory so exactly one remains","Repackage the plugin with a single server.* entrypoint"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}