{"record":{"id":"df6e1d1d9c522a1a","repo":"sgl-project/sglang","slug":"data-parallel-rank-is-deprecated-use-routed-dp","errorCode":null,"errorMessage":"'data_parallel_rank' is deprecated, use 'routed_dp_rank' instead.","messagePattern":"'data_parallel_rank' is deprecated, use 'routed_dp_rank' instead\\.","errorType":"console","errorClass":"DeprecationWarning","httpStatus":null,"severity":"warning","filePath":"python/sglang/srt/entrypoints/engine.py","lineNumber":338,"sourceCode":"        try:\n            self.loop = asyncio.get_running_loop()\n        except RuntimeError:\n            self.loop = asyncio.new_event_loop()\n            asyncio.set_event_loop(self.loop)\n\n    def get_all_child_pids(self) -> List[int]:\n        \"\"\"Returns a list of all child process PIDs.\"\"\"\n        return self._scheduler_init_result.all_child_pids\n\n    def _resolve_routed_dp_rank(\n        self,\n        routed_dp_rank: Optional[int],\n        data_parallel_rank: Optional[int],\n    ) -> Optional[int]:\n        if data_parallel_rank is not None:\n            import warnings\n\n            warnings.warn(\n                \"'data_parallel_rank' is deprecated, use 'routed_dp_rank' instead.\",\n                DeprecationWarning,\n                stacklevel=3,\n            )\n            if routed_dp_rank is None:\n                routed_dp_rank = data_parallel_rank\n\n        if routed_dp_rank is not None:\n            dp_size = get_parallel().dp_size\n            if dp_size <= 1 and routed_dp_rank == 0:\n                logger.debug(\n                    f\"routed_dp_rank={routed_dp_rank} is ignored because dp_size={dp_size}\"\n                )\n                return None\n            if routed_dp_rank < 0 or routed_dp_rank >= dp_size:\n                raise ValueError(\n                    f\"routed_dp_rank={routed_dp_rank} out of range [0, {dp_size})\"\n                )","sourceCodeStart":320,"sourceCodeEnd":356,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/entrypoints/engine.py#L320-L356","documentation":"Engine.generate/async_generate accepted a 'data_parallel_rank' argument to pick a DP rank. That name is deprecated in favor of 'routed_dp_rank'; the old value is migrated transparently (old wins only when new is unset) and a DeprecationWarning is raised.","triggerScenarios":"Passing data_parallel_rank=... to Engine.generate / async_generate (directly or via a wrapper) instead of routed_dp_rank.","commonSituations":"Upgrading sglang after older DP load-balancing code was written; third-party serving frameworks that wrap the engine API and still use the old kwarg.","solutions":["Rename the kwarg to routed_dp_rank in the call","Update wrappers/proxies that forward **kwargs under the old name","Run with -W error::DeprecationWarning in tests to catch remaining uses"],"exampleFix":"# before\nengine.generate(prompt, sampling_params, data_parallel_rank=2)\n# after\nengine.generate(prompt, sampling_params, routed_dp_rank=2)","handlingStrategy":"validation","validationCode":"engine.generate(prompt, sampling_params, routed_dp_rank=rank)  # never pass data_parallel_rank","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Grep codebase for data_parallel_rank after upgrades","Run tests with DeprecationWarning as error"],"tags":["deprecation","data-parallel","engine-api","migration"],"backgroundTag":"deprecated-argument","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}