Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
3006d6e
fix proactor error hang
graingert Aug 31, 2026
60187dd
Merge branch 'main' into fix-proactor-error-hang
graingert Sep 4, 2026
d57cb23
fix DatagramTransport when errror_recieved calls sendto
graingert Sep 4, 2026
f843371
gh-156920: fix ProactorEventLoop datagram transports drop buffered da…
graingert Sep 4, 2026
bb80478
Merge branch 'main' of github.com:python/cpython into fix-proactor-er…
graingert Sep 5, 2026
0db5dd3
Merge branch 'fix-proactor-error-hang' into fix-proactor-close-flush
graingert Sep 5, 2026
37a9b5b
Update Lib/asyncio/proactor_events.py
graingert Sep 5, 2026
d8f9aae
Merge branch 'main' into fix-proactor-error-hang
graingert Sep 6, 2026
9eda8d0
don't resume a closed transport
graingert Sep 6, 2026
9fcd45c
Merge branch 'main' into fix-proactor-error-hang
graingert Sep 7, 2026
4822ab7
add test for close called in error_recieved
graingert Sep 7, 2026
ce2168b
Merge branch 'fix-proactor-error-hang' into fix-proactor-close-flush
graingert Sep 7, 2026
b52b945
Revert "add test for close called in error_recieved"
graingert Sep 7, 2026
d4ee8a9
add test_datagram_write_error_close_from_callback
graingert Sep 7, 2026
b74ffb3
use SHORT_TIMEOUT instead of hardcoded 10
graingert Sep 11, 2026
01b328a
Merge branch 'main' into fix-proactor-error-hang
graingert Sep 11, 2026
b43d1fc
Merge branch 'fix-proactor-error-hang' into fix-proactor-close-flush
graingert Sep 11, 2026
55706b8
drop datagram write-error tests that pass without the fix
graingert Sep 11, 2026
92d347c
Merge branch 'main' into fix-proactor-close-flush
graingert Sep 11, 2026
757a9fb
check self._closing in Datagram _loop_reading
graingert Sep 11, 2026
386268a
Apply suggestion from @kumaraditya303
graingert Sep 12, 2026
5d6ac18
Merge branch 'main' into fix-proactor-close-flush
graingert Sep 12, 2026
1adb870
replace arm with schedule
graingert Sep 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
use SHORT_TIMEOUT instead of hardcoded 10
  • Loading branch information
graingert committed Sep 11, 2026
commit b74ffb352e277077db8003ad1bd1fc570d9b1834
15 changes: 10 additions & 5 deletions Lib/test/test_asyncio/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -1626,7 +1626,8 @@ def error_received(self, exc):
transport.sendto(second, addr)

loop.run_until_complete(
asyncio.wait_for(protocol.error_received_event, 10))
asyncio.wait_for(protocol.error_received_event,
support.SHORT_TIMEOUT))
self.assertTrue(protocol.errors)
self.assertIsInstance(protocol.errors[0], OSError)

Expand Down Expand Up @@ -1699,7 +1700,8 @@ def error_received(self, exc):
# The 'extra' datagram sent from error_received() is delivered
# back to the same socket; waiting for it proves the write loop
# kept running instead of wedging or crashing.
loop.run_until_complete(asyncio.wait_for(protocol.done, 10))
loop.run_until_complete(
asyncio.wait_for(protocol.done, support.SHORT_TIMEOUT))

test_utils.run_until(
loop, lambda: transport.get_write_buffer_size() == 0)
Expand Down Expand Up @@ -1759,7 +1761,8 @@ def connection_lost(self, exc):
transport.sendto(b'second', addr)
transport.close()

loop.run_until_complete(asyncio.wait_for(protocol.lost, 10))
loop.run_until_complete(
asyncio.wait_for(protocol.lost, support.SHORT_TIMEOUT))

test_utils.run_until(
loop, lambda: len(receiver.received) >= 2)
Expand Down Expand Up @@ -1806,7 +1809,8 @@ def connection_lost(self, exc):
transport.sendto(oversized, addr)
transport.close()

loop.run_until_complete(asyncio.wait_for(protocol.lost, 10))
loop.run_until_complete(
asyncio.wait_for(protocol.lost, support.SHORT_TIMEOUT))
self.assertTrue(protocol.errors)

def test_datagram_write_error_close_from_callback(self):
Expand Down Expand Up @@ -1847,7 +1851,8 @@ def connection_lost(self, exc):
transport.sendto(oversized, addr)
transport.sendto(oversized, addr)

loop.run_until_complete(asyncio.wait_for(protocol.lost, 10))
loop.run_until_complete(
asyncio.wait_for(protocol.lost, support.SHORT_TIMEOUT))
self.assertEqual(len(protocol.errors), 2)

def test_datagram_recvfrom_connection_reset_recovers(self):
Expand Down
Loading