@@ -190,36 +190,42 @@ def test_coordination_lock_describe_full_sync(self, sync_coordination_node):
190190
191191 async def test_coordination_lock_racing_async (self , async_coordination_node ):
192192 client , node_path , initial_config = async_coordination_node
193- small_timeout = 2
193+ timeout = 5 # таймаут для CI/нагрузки
194194
195195 lock = client .lock ("test_lock" , node_path )
196-
197196 await lock .create (init_limit = 1 , init_data = b"init-data" )
198197
199198 describe_resp : DescribeLockResult = await lock .describe ()
200199 assert describe_resp .status == StatusCode .SUCCESS
201200
202201 lock2_started = asyncio .Event ()
203202 lock2_acquired = asyncio .Event ()
203+ lock2_release = asyncio .Event ()
204204
205205 async def second_lock_task ():
206206 lock2_started .set ()
207207 async with client .lock ("test_lock" , node_path ):
208208 lock2_acquired .set ()
209- await asyncio . sleep ( small_timeout )
209+ await lock2_release . wait () # вместо sleep
210210
211211 async with client .lock ("test_lock" , node_path ) as lock1 :
212-
213212 resp : DescribeLockResult = await lock1 .describe ()
214213 assert resp .status == StatusCode .SUCCESS
215214
216215 t2 = asyncio .create_task (second_lock_task ())
217- await lock2_started .wait ()
216+ await asyncio .wait_for (lock2_started .wait (), timeout = timeout )
217+
218+ # Даем t2 шанс реально дойти до попытки acquire (не обязательно, но помогает стабильности)
219+ await asyncio .sleep (0 )
220+
221+ # lock1 держится до выхода из async with
218222
219- await asyncio .sleep (small_timeout )
223+ # После освобождения lock1 второй лок обязан захватиться
224+ await asyncio .wait_for (lock2_acquired .wait (), timeout = timeout )
220225
221- await asyncio .wait_for (lock2_acquired .wait (), timeout = small_timeout )
222- await asyncio .wait_for (t2 , timeout = small_timeout )
226+ # Разрешаем t2 корректно выйти и ждём завершения
227+ lock2_release .set ()
228+ await asyncio .wait_for (t2 , timeout = timeout )
223229
224230 delete_resp = await lock .delete ()
225231 assert delete_resp .status == StatusCode .SUCCESS
0 commit comments