{"record":{"id":"1c7a20d99964d5b5","repo":"milvus-io/milvus","slug":"metastoretype-s-not-supported","errorCode":null,"errorMessage":"MetaStoreType %s not supported","messagePattern":"MetaStoreType (.+?) not supported","errorType":"console","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"cmd/tools/migration/mmap/tool/main.go","lineNumber":145,"sourceCode":"\tcase util.MetaStoreTypeEtcd:\n\t\tvar metaKV kv.MetaKv\n\t\tvar err error\n\n\t\tif metaKV, err = metaKVCreator(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcatalog = kvmetestore.NewCatalog(metaKV)\n\tcase util.MetaStoreTypeTiKV:\n\t\tmlog.Info(ctx, \"Using tikv as meta storage.\")\n\t\tvar metaKV kv.MetaKv\n\t\tvar err error\n\n\t\tif metaKV, err = metaKVCreator(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcatalog = kvmetestore.NewCatalog(metaKV)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"MetaStoreType %s not supported\", paramtable.Get().MetaStoreCfg.MetaStoreType.GetValue()))\n\t}\n\n\tvar meta rootcoord.IMetaTable\n\tif meta, err = rootcoord.NewMetaTable(ctx, catalog, allocator); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn meta, catalog\n}\n\nfunc prepareDataCoordCatalog() metastore.DataCoordCatalog {\n\tkv, err := metaKVCreator()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn datacoord.NewCatalog(kv, \"\", \"\")\n}\n","sourceCodeStart":127,"sourceCodeEnd":163,"githubUrl":"https://github.com/milvus-io/milvus/blob/b43a76673a9fe5f01f158979731dc8fd542df81f/cmd/tools/migration/mmap/tool/main.go#L127-L163","documentation":"This panic comes from the Milvus mmap migration tool's root-coord catalog setup (cmd/tools/migration/mmap/tool/main.go:145). The tool's switch over the configured meta store backend only implements two cases, util.MetaStoreTypeEtcd (\"etcd\") and util.MetaStoreTypeTiKV (\"tikv\") (pkg/util/constant.go:31-32); any other value for metastore.type in the supplied milvus.yaml falls into default and aborts the tool before any migration runs.","triggerScenarios":"Running the migration tool binary with -config pointing at a milvus.yaml whose `metastore.type` value is anything other than exactly \"etcd\" or \"tikv\" — e.g. an empty value from a mis-parsed YAML path, a typo like \"etcd3\"/\"Etcd\", a quoted env placeholder that never got substituted, or a backend constant this tool build does not support.","commonSituations":"YAML indentation mistake putting `type:` under the wrong parent so the key never lands in metastore; deploying with templated configs (helm values, ${META_STORE_TYPE} unsubstituted); running the tool against a Milvus deployment whose meta backend was compiled/configured differently from the tool's supported set; version skew between the migration tool and the milvus.yaml schema.","solutions":["Set `metastore.type: etcd` (or `tikv`) under the correct `metastore:` key in the config file passed via -config, matching the backend your Milvus deployment actually uses","Verify the value is exactly the lowercase constant: grep the YAML for `metastore` and check nesting/indentation so the key is not silently ignored","Confirm the deployment really uses etcd or tikv as meta storage; if it uses another backend, this tool build cannot migrate it — use a matching tool version or migrate meta storage first","Check for unsubstituted env placeholders in templated configs before handing the file to the tool"],"exampleFix":"# before (milvus.yaml)\nmetastore:\n  type: etcd3   # typo -> panic: MetaStoreType etcd3 not supported\n\n# after\nmetastore:\n  type: etcd","handlingStrategy":"validation","validationCode":"// Run before starting the mmap migration tool / equivalent switch over meta store type.\nfunc validateMetaStoreType(yamlPath string) error {\n    cfg, err := yaml.UnmarshalFile(yamlPath) // or use your config loader\n    _ = cfg\n    t := os.Getenv(\"META_STORE_TYPE\") // or read from parsed yaml: metastore.type\n    if t == \"\" {\n        return fmt.Errorf(\"metastore.type is empty — set 'etcd' or 'tikv' in %s\", yamlPath)\n    }\n    switch t {\n    case \"etcd\", \"tikv\":\n        return nil\n    default:\n        return fmt.Errorf(\"metastore.type %q not supported by this tool (use etcd or tikv)\", t)\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin `metastore.type` explicitly in the config passed to -config instead of relying on defaults or templated values","Validate the config file in CI/deploy scripts for allowed values {etcd, tikv} before running migration tools","Keep the migration tool version in lock-step with the Milvus version whose milvus.yaml you feed it","Grep rendered configs for unsubstituted ${...} placeholders after templating"],"tags":["go","milvus","migration-tool","configuration","meta-store","startup-failure"],"backgroundTag":null,"analyzedSha":"b43a76673a9fe5f01f158979731dc8fd542df81f","analyzedAt":"2026-08-15T10:29:28.408Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}