{"record":{"id":"280c808187a72cce","repo":"sgl-project/sglang","slug":"extra-config-ssd-io-backend-must-be-one-of-pos","errorCode":null,"errorMessage":"extra_config['ssd_io_backend'] must be one of: posix, io_uring","messagePattern":"extra_config\\['ssd_io_backend'\\] must be one of: posix, io_uring","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/mem_cache/storage/umbp/umbp_store.py","lineNumber":340,"sourceCode":"            cfg.ssd.segment_size_bytes = int(extra[\"ssd_segment_size_bytes\"])\n        if \"ssd_copy_batch_max_ops\" in extra:\n            cfg.copy_pipeline.batch_max_ops = int(extra[\"ssd_copy_batch_max_ops\"])\n        if \"ssd_queue_depth\" in extra:\n            cfg.ssd.io.queue_depth = int(extra[\"ssd_queue_depth\"])\n        if \"ssd_copy_worker_threads\" in extra:\n            cfg.copy_pipeline.worker_threads = int(extra[\"ssd_copy_worker_threads\"])\n        if \"auto_promote_on_read\" in extra:\n            cfg.eviction.auto_promote_on_read = _strict_bool(\n                extra[\"auto_promote_on_read\"], \"auto_promote_on_read\"\n            )\n        if \"eviction_policy\" in extra:\n            cfg.eviction.policy = str(extra[\"eviction_policy\"])\n        if \"eviction_candidate_window\" in extra:\n            cfg.eviction.candidate_window = int(extra[\"eviction_candidate_window\"])\n        if \"ssd_io_backend\" in extra:\n            backend = str(extra[\"ssd_io_backend\"]).strip().lower()\n            if backend not in (\"posix\", \"io_uring\"):\n                raise ValueError(\n                    \"extra_config['ssd_io_backend'] must be one of: posix, io_uring\"\n                )\n            if UMBPIoBackend is not None:\n                cfg.ssd.io.backend = (\n                    UMBPIoBackend.Posix if backend == \"posix\" else UMBPIoBackend.IoUring\n                )\n        if \"ssd_durability_mode\" in extra:\n            # Validate even when the enum is unavailable (older mori / mocks).\n            durability = str(extra[\"ssd_durability_mode\"]).strip().lower()\n            if durability not in (\"strict\", \"sync\", \"relaxed\", \"async\"):\n                raise ValueError(\n                    \"extra_config['ssd_durability_mode'] must be one of: \"\n                    \"strict, sync, relaxed, async\"\n                )\n            if UMBPDurabilityMode is not None:\n                if durability in (\"strict\", \"sync\"):\n                    cfg.ssd.durability.mode = UMBPDurabilityMode.Strict\n                else:","sourceCodeStart":322,"sourceCodeEnd":358,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/mem_cache/storage/umbp/umbp_store.py#L322-L358","documentation":"extra_config['ssd_io_backend'] only accepts 'posix' or 'io_uring' (case-insensitive, trimmed); anything else is rejected before the UMBPIoBackend enum is set.","triggerScenarios":"Setting ssd_io_backend to 'libaio', 'aio', 'uring' or a typo'd string in the UMBP store extra_config.","commonSituations":"Porting config from another storage engine with different backend names; typo 'io_uring' vs 'iouring'.","solutions":["Use 'posix' or 'io_uring' exactly (case-insensitive)","Confirm io_uring support in the kernel/mori build if selecting io_uring"],"exampleFix":"# before\nextra['ssd_io_backend'] = 'aio'\n# after\nextra['ssd_io_backend'] = 'io_uring'","handlingStrategy":"validation","validationCode":"assert str(extra.get('ssd_io_backend','')).strip().lower() in ('posix','io_uring')","typeGuard":"def is_valid_io_backend(v) -> bool:\n    return isinstance(v, str) and v.strip().lower() in ('posix', 'io_uring')","tryCatchPattern":null,"preventionTips":["Restrict backend names in deployment manifests to the documented enum","Lint extra_config keys/values in CI"],"tags":["umbp","config-validation","io-backend"],"backgroundTag":"invalid-enum-value","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}