{"record":{"id":"4cd36b96983c04f9","repo":"sgl-project/sglang","slug":"must-not-be-none","errorCode":null,"errorMessage":"{} must not be None","messagePattern":"(.+?) must not be None","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/mem_cache/storage/umbp/umbp_store.py","lineNumber":111,"sourceCode":"    return str(value)\n\n\ndef _default_node_address() -> str:\n    try:\n        return socket.gethostbyname(socket.gethostname())\n    except Exception:\n        return \"127.0.0.1\"\n\n\ndef _select_rank_config_value(\n    value: Any,\n    rank_index: int,\n    field_name: str,\n    cast_type,\n    auto_increment_scalar: bool = False,\n):\n    if value is None:\n        raise ValueError(f\"{field_name} must not be None\")\n\n    candidates = value\n    if isinstance(value, str) and \",\" in value:\n        candidates = [item.strip() for item in value.split(\",\") if item.strip()]\n\n    if isinstance(candidates, (list, tuple)):\n        if not candidates:\n            raise ValueError(f\"{field_name} must not be empty\")\n        if rank_index >= len(candidates):\n            raise ValueError(\n                f\"{field_name} has {len(candidates)} entries, but rank_index={rank_index}\"\n            )\n        return cast_type(candidates[rank_index])\n\n    selected = cast_type(candidates)\n    if auto_increment_scalar:\n        selected = cast_type(selected + rank_index)\n    return selected","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/mem_cache/storage/umbp/umbp_store.py#L93-L129","documentation":"_select_rank_config_value received None for a required rank-scoped field; the UMBP store constructor requires these fields to be set before rank selection can proceed.","triggerScenarios":"Constructing the UMBP store without a required field (e.g. the numa/rank-related config) — value resolves to None and the field name is reported.","commonSituations":"Missing key in extra_config or store args when enabling UMBP storage; partial default config after a version upgrade added a new required field.","solutions":["Identify the field name in the message and set it in the store config/extra_config","Check the UMBP store docs for the required fields of the release you run"],"exampleFix":"# before\nextra = {}  # missing required field, e.g. 'numa_node'\n# after\nextra = {'numa_node': 0}","handlingStrategy":"validation","validationCode":"REQUIRED_UMBP_FIELDS = ['numa_node']  # per release; check error message for the name\nmissing = [f for f in REQUIRED_UMBP_FIELDS if extra.get(f) is None]\nassert not missing, f'missing required extra_config fields: {missing}'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep a checked config template for the UMBP store per sglang release","Assert required fields are non-None before store construction"],"tags":["umbp","config-validation","missing-value"],"backgroundTag":"missing-required-config","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}