Skip to content

Commit 25291d9

Browse files
authored
Apply suggestions from code review
1 parent 3fb9d1e commit 25291d9

3 files changed

Lines changed: 7 additions & 5 deletions

File tree

‎Lib/asyncio/locks.py‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,8 @@ def __init__(self, parties):
489489
self._parties = parties
490490
self._state = _BarrierState.FILLING
491491
self._count = 0 # count tasks in Barrier
492-
self._index = self._parties - 1 # index number returned when barrier drains
492+
# index number returned when barrier drains
493+
self._index = self._parties - 1
493494

494495
def __repr__(self):
495496
res = super().__repr__()
@@ -523,7 +524,7 @@ async def wait(self):
523524
else:
524525
await self._wait()
525526
index = self._index
526-
self._index = (self._index + 1) % self.parties
527+
self._index = (self._index + 1) % self._parties
527528
return index
528529
finally:
529530
self._count -= 1
@@ -571,7 +572,7 @@ def _exit(self):
571572
if self._count == 0:
572573
if self._state in (_BarrierState.RESETTING, _BarrierState.DRAINING):
573574
self._state = _BarrierState.FILLING
574-
self._index = self.parties - 1
575+
self._index = self._parties - 1
575576
self._cond.notify_all()
576577

577578
async def reset(self):
@@ -587,7 +588,7 @@ async def reset(self):
587588
self._state = _BarrierState.RESETTING
588589
else:
589590
self._state = _BarrierState.FILLING
590-
self._index = self.parties - 1
591+
self._index = self._parties - 1
591592
self._cond.notify_all()
592593

593594
async def abort(self):

‎Lib/test/test_asyncio/test_locks.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1850,5 +1850,6 @@ async def coro():
18501850
self.assertEqual(sorted(results), list(range(self.N)))
18511851
self.assertEqual(barrier.n_waiting, 0)
18521852

1853+
18531854
if __name__ == '__main__':
18541855
unittest.main()
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Fix the returned value of the :meth:`asyncio.Barrier.wait`. This value is now calculated on demand during the *draining* phasis.
1+
Fix :meth:`asyncio.Barrier.wait` returning duplicate indices when a waiting task is cancelled before the barrier is released.```

0 commit comments

Comments
 (0)