From 8153168c96c76cdc77eabcbe03b167f9f3b4385f Mon Sep 17 00:00:00 2001 From: Zhiqiang Xie Date: Wed, 28 Aug 2024 18:57:54 -0700 Subject: [PATCH] fix data racing due to mutable reference using deepcopy (#1255) --- python/sglang/srt/managers/io_struct.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python/sglang/srt/managers/io_struct.py b/python/sglang/srt/managers/io_struct.py index 3f80c64cf..5b91ff62e 100644 --- a/python/sglang/srt/managers/io_struct.py +++ b/python/sglang/srt/managers/io_struct.py @@ -18,8 +18,9 @@ The definition of objects transfered between different processes (TokenizerManager, DetokenizerManager, Controller). """ +import copy import uuid -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import Dict, List, Optional, Union from sglang.srt.managers.schedule_batch import BaseFinishReason @@ -249,6 +250,10 @@ class BatchTokenIDOut: meta_info: List[Dict] finished_reason: List[BaseFinishReason] + def __post_init__(self): + # deepcopy meta_info to avoid modification in place + self.meta_info = copy.deepcopy(self.meta_info) + @dataclass class BatchStrOut: