{"record":{"id":"9f551f10b91fd0b1","repo":"sgl-project/sglang","slug":"either-master-server-address-or-client-server-addr","errorCode":null,"errorMessage":"Either master_server_address or client_server_address is required in config file","messagePattern":"Either master_server_address or client_server_address is required in config file","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/mem_cache/storage/mooncake_store/mooncake_store.py","lineNumber":127,"sourceCode":"    @staticmethod\n    def from_file() -> \"MooncakeStoreConfig\":\n        \"\"\"Load the config from a JSON file.\"\"\"\n        if not envs.SGLANG_HICACHE_MOONCAKE_CONFIG_PATH.is_set():\n            raise RuntimeError(\n                f\"Config file path not set. Please set {envs.SGLANG_HICACHE_MOONCAKE_CONFIG_PATH.name}\"\n            )\n        file_path = envs.SGLANG_HICACHE_MOONCAKE_CONFIG_PATH.get()\n        try:\n            with open(file_path) as fin:\n                config = json.load(fin)\n        except Exception as e:\n            raise RuntimeError(f\"Failed to load config from {file_path}: {str(e)}\")\n\n        if (\n            \"master_server_address\" not in config\n            and \"client_server_address\" not in config\n        ):\n            raise ValueError(\n                \"Either master_server_address or client_server_address is required in config file\"\n            )\n\n        return MooncakeStoreConfig(\n            local_hostname=config.get(\n                \"local_hostname\", envs.MOONCAKE_LOCAL_HOSTNAME.default\n            ),\n            metadata_server=config.get(\n                \"metadata_server\", envs.MOONCAKE_TE_META_DATA_SERVER.default\n            ),\n            global_segment_size=_parse_global_segment_size(\n                config.get(\n                    \"global_segment_size\", envs.MOONCAKE_GLOBAL_SEGMENT_SIZE.default\n                )\n            ),\n            protocol=config.get(\"protocol\", envs.MOONCAKE_PROTOCOL.default),\n            device_name=config.get(\"device_name\", envs.MOONCAKE_DEVICE.default),\n            master_server_address=config.get(","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/mem_cache/storage/mooncake_store/mooncake_store.py#L109-L145","documentation":"The parsed mooncake JSON config contains neither master_server_address nor client_server_address, but at least one is mandatory to locate the transfer-engine metadata service. This is a semantic validation right after successful JSON parsing.","triggerScenarios":"A config JSON with only optional keys (local_hostname, protocol, device_name, ...) and no master/client server address.","commonSituations":"Copied a partial example config; renamed key incorrectly (e.g. master_address).","solutions":["Add \"master_server_address\": \"ip:port\" (or client_server_address) to the JSON"],"exampleFix":"// before\n{\"local_hostname\": \"10.0.0.1\"}\n// after\n{\"local_hostname\": \"10.0.0.1\", \"master_server_address\": \"10.0.0.2:2379\"}","handlingStrategy":"validation","validationCode":"def mooncake_config_has_server(cfg: dict) -> bool:\n    return 'master_server_address' in cfg or 'client_server_address' in cfg\nassert mooncake_config_has_server(json.load(open(path)))","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use a JSON schema requiring one of master_server_address/client_server_address","Templated configs: assert required keys after rendering"],"tags":["config","mooncake","validation","missing-field"],"backgroundTag":"required-config-field-missing","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}