{"record":{"id":"946fbbbb4b023645","repo":"juicedata/juicefs","slug":"parse-s-s-946fbb","errorCode":null,"errorMessage":"parse %s: %s","messagePattern":"parse (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/object/etcd.go","lineNumber":174,"sourceCode":"\tq := u.Query()\n\ttsinfo.CAFile = q.Get(\"cacert\")\n\ttsinfo.CertFile = q.Get(\"cert\")\n\ttsinfo.KeyFile = q.Get(\"key\")\n\ttsinfo.ServerName = q.Get(\"server-name\")\n\ttsinfo.InsecureSkipVerify = q.Get(\"insecure-skip-verify\") != \"\"\n\tif tsinfo.CAFile != \"\" || tsinfo.CertFile != \"\" || tsinfo.KeyFile != \"\" || tsinfo.ServerName != \"\" {\n\t\treturn tsinfo.ClientConfig()\n\t}\n\treturn nil, nil\n}\n\nfunc newEtcd(addr, user, passwd, token string) (ObjectStorage, error) {\n\tif !strings.HasPrefix(addr, \"etcd://\") {\n\t\taddr = \"etcd://\" + addr\n\t}\n\tu, err := url.Parse(addr)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"parse %s: %s\", addr, err)\n\t}\n\thosts := strings.Split(u.Host, \",\")\n\tfor i, h := range hosts {\n\t\th, _, err := net.SplitHostPort(h)\n\t\tif err != nil {\n\t\t\thosts[i] = net.JoinHostPort(h, \"2379\")\n\t\t}\n\t}\n\tconf := etcd.Config{\n\t\tEndpoints:        hosts,\n\t\tUsername:         user,\n\t\tPassword:         passwd,\n\t\tAutoSyncInterval: time.Minute,\n\t}\n\tconf.TLS, err = buildTlsConfig(u)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"build tls config from %s: %s\", u.RawQuery, err)\n\t}","sourceCodeStart":156,"sourceCodeEnd":192,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/pkg/object/etcd.go#L156-L192","documentation":"Returned by newEtcd when the etcd:// address URL cannot be parsed. The endpoint must be a valid URL (host list plus optional query parameters like cacert/key); the wrapped parse error shows the defect.","triggerScenarios":"Thrown at pkg/object/etcd.go:174 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Correct the etcd URL syntax, e.g. etcd://host1:2379,host2:2379?cacert=/path/ca.crt"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c9a67b23e8e08ec23ec331aa6f1675e2319e921c","analyzedAt":"2026-09-06T17:55:48.476Z","contentChangedAt":"2026-09-06T17:55:48.476Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}