sgl-project/sglang · error · RuntimeError
The installed Mooncake version does not support tenant_id in
Error message
The installed Mooncake version does not support tenant_id in MooncakeDistributedStore.setup(). Please upgrade Mooncake to use non-default Mooncake tenants with SGLang.
What it means
MooncakeDistributedStore.setup() rejected a tenant_id keyword, a TypeError that SGLang detects and converts into an explicit 'installed Mooncake is too old' RuntimeError. It only fires when a non-default Mooncake tenant_id was configured for the embedding store.
Source
Thrown at python/sglang/srt/mem_cache/storage/mooncake_store/mooncake_embedding_store.py:39
self.store = MooncakeDistributedStore()
self.config = self._load_config(storage_config)
setup_kwargs = {}
if self.config.tenant_id != DEFAULT_TENANT_ID:
setup_kwargs["tenant_id"] = self.config.tenant_id
try:
ret_code = self.store.setup(
self.config.local_hostname,
self.config.metadata_server,
self.config.global_segment_size,
16 * 1024 * 1024, # Internal local buffer size
self.config.protocol,
self.config.device_name,
self.config.master_server_address,
**setup_kwargs,
)
except TypeError as e:
if "tenant_id" in setup_kwargs and "tenant_id" in str(e):
raise RuntimeError(
"The installed Mooncake version does not support tenant_id "
"in MooncakeDistributedStore.setup(). Please upgrade "
"Mooncake to use non-default Mooncake tenants with SGLang."
) from e
raise
if ret_code != 0:
raise RuntimeError(f"Failed to setup Mooncake Embedding Store: {ret_code}")
logger.info("Mooncake Embedding Store initialized successfully.")
def get_key(self, mm_hash: str) -> str:
return f"emb_{mm_hash}"
def batch_get(
self, hashes: List[str], ptrs: List[int], sizes: List[int]
) -> List[bool]:
keys = [self.get_key(h) for h in hashes]
results = self.store.batch_get_into(keys, ptrs, sizes)View on GitHub (pinned to 0132848349)
Solutions
- pip install mooncake-transfer-engine --upgrade
- Or remove/unset tenant_id so the default tenant is used
Defensive patterns
Strategy: type-guard
Validate before calling
import inspect
from mooncake.store import MooncakeDistributedStore
SUPPORTS_TENANT = 'tenant_id' in inspect.signature(MooncakeDistributedStore.setup).parameters
if tenant_id and tenant_id != 'default' and not SUPPORTS_TENANT:
raise SystemExit('upgrade mooncake-transfer-engine or unset tenant_id') Type guard
def mooncake_supports_tenant() -> bool:
import inspect
from mooncake.store import MooncakeDistributedStore
return 'tenant_id' in inspect.signature(MooncakeDistributedStore.setup).parameters Try / catch
try:
store = MooncakeEmbeddingStore(cfg)
except RuntimeError as e:
if 'tenant_id' in str(e):
# fall back to default tenant
cfg.tenant_id = 'default'
store = MooncakeEmbeddingStore(cfg)
else:
raise Prevention
- Pin mooncake-transfer-engine >= version with tenant support in requirements when using tenants
- Smoke-test setup() signature in CI
When it happens
Trigger: Constructing MooncakeEmbeddingStore with a tenant_id set (via config/env) while the installed mooncakestore package's setup() signature lacks tenant_id (older mooncake).
Common situations: Upgrading SGLang but keeping an old mooncake-transfer-engine; setting MOONCAKE_TENANT_ID or tenant_id in the mooncake config file with a legacy Mooncake build.
Related errors
- The installed Mooncake version does not support tenant_id in
- Please install mooncake by following the instructions at htt
- Mooncake's batch register requires a newer version of moonca
- Mooncake's batch transfer requires mooncake-transfer-engine
- Failed to import 'set_transfer_engine' from 'mooncake.pg'. P
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/33a982f31e95bb1d.
Report an issue: GitHub.