Commit Graph

35273 Commits

Author SHA1 Message Date
Victor Stinner 2fa2c3dfc5 (Merge 3.4) Python issue #21645, Tulip issue 192: Rewrite signal handling
Since Python 3.3, the C signal handler writes the signal number into the wakeup
file descriptor and then schedules the Python call using Py_AddPendingCall().

asyncio uses the wakeup file descriptor to wake up the event loop, and relies
on Py_AddPendingCall() to schedule the final callback with call_soon().

If the C signal handler is called in a thread different than the thread of the
event loop, the loop is awaken but Py_AddPendingCall() was not called yet. In
this case, the event loop has nothing to do and go to sleep again.
Py_AddPendingCall() is called while the event loop is sleeping again and so the
final callback is not scheduled immediatly.

This patch changes how asyncio handles signals. Instead of relying on
Py_AddPendingCall() and the wakeup file descriptor, asyncio now only relies on
the wakeup file descriptor. asyncio reads signal numbers from the wakeup file
descriptor to call its signal handler.
2014-07-17 22:45:42 +02:00
Victor Stinner fe5649c7b7 Python issue #21645, Tulip issue 192: Rewrite signal handling
Since Python 3.3, the C signal handler writes the signal number into the wakeup
file descriptor and then schedules the Python call using Py_AddPendingCall().

asyncio uses the wakeup file descriptor to wake up the event loop, and relies
on Py_AddPendingCall() to schedule the final callback with call_soon().

If the C signal handler is called in a thread different than the thread of the
event loop, the loop is awaken but Py_AddPendingCall() was not called yet. In
this case, the event loop has nothing to do and go to sleep again.
Py_AddPendingCall() is called while the event loop is sleeping again and so the
final callback is not scheduled immediatly.

This patch changes how asyncio handles signals. Instead of relying on
Py_AddPendingCall() and the wakeup file descriptor, asyncio now only relies on
the wakeup file descriptor. asyncio reads signal numbers from the wakeup file
descriptor to call its signal handler.
2014-07-17 22:43:40 +02:00
Victor Stinner dc2539f957 (Merge 3.4) asyncio: Fix test_stdin_broken_pipe(), drain() can also raise
ConnectionResetError
2014-07-17 14:01:39 +02:00
Victor Stinner ddc8c8db1c asyncio: Fix test_stdin_broken_pipe(), drain() can also raise
ConnectionResetError
2014-07-17 14:01:14 +02:00
Victor Stinner edfdf54790 (Merge 3.4) asyncio, tulip issue 190: Process.communicate() now ignores
ConnectionResetError too
2014-07-17 13:12:20 +02:00
Victor Stinner d55b54d5c0 asyncio, tulip issue 190: Process.communicate() now ignores
ConnectionResetError too
2014-07-17 13:12:03 +02:00
Victor Stinner 0d35741b16 (Merge 3.4) asyncio, tulip issue 190: Process.communicate() must ignore
BrokenPipeError

If you want to handle the BrokenPipeError, you can easily reimplement
communicate().

Add also a unit test to ensure that stdin.write() + stdin.drain() raises
BrokenPipeError.
2014-07-17 12:48:33 +02:00
Victor Stinner cc996b5789 asyncio, tulip issue 190: Process.communicate() must ignore BrokenPipeError
If you want to handle the BrokenPipeError, you can easily reimplement
communicate().

Add also a unit test to ensure that stdin.write() + stdin.drain() raises
BrokenPipeError.
2014-07-17 12:25:27 +02:00
Serhiy Storchaka a98faefd68 Issue 21044: tarfile.open() now handles fileobj with an integer 'name'
attribute.  Based on patch by Martin Panter.
2014-07-17 00:00:26 +03:00
Serhiy Storchaka 2c6a3aedeb Issue 21044: tarfile.open() now handles fileobj with an integer 'name'
attribute.  Based on patch by Martin Panter.
2014-07-16 23:58:58 +03:00
Zachary Ware 3481e21e98 Issue #21918: Convert test_tools.py to a sub-package of test.
Merge with 3.4.
2014-07-16 14:31:51 -05:00
Zachary Ware 2b0a610297 Issue #21918: Convert test_tools.py to a sub-package of test. 2014-07-16 14:26:09 -05:00
Victor Stinner c3fcf4b360 (Merge 3.4) asyncio: test_as_completed(): disable "slow callback" warning 2014-07-16 18:54:25 +02:00
Victor Stinner accef5ce36 asyncio: test_as_completed(): disable "slow callback" warning 2014-07-16 18:54:13 +02:00
Victor Stinner f85581f6e5 (Merge 3.4) Issue #21163: Fix "destroy pending task" warning in test_wait_errors() 2014-07-16 18:50:54 +02:00
Victor Stinner e931f7b768 Issue #21163: Fix "destroy pending task" warning in test_wait_errors() 2014-07-16 18:50:39 +02:00
Victor Stinner 845212af41 (Merge 3.4) Issue #21163, asyncio: Ignore "destroy pending task" warnings for
private tasks in gather().
2014-07-16 18:36:58 +02:00
Victor Stinner f03b3c7564 Issue #21163, asyncio: Ignore "destroy pending task" warnings for private tasks
in gather().
2014-07-16 18:36:24 +02:00
Victor Stinner 72f8e256f6 (Merge 3.4) asyncio: test_selector_events: remove duplicate call to
_on_handshake() method

The _SelectorSslTransport constructor already calls it.
2014-07-16 18:03:26 +02:00
Victor Stinner 1314f06293 asyncio: test_selector_events: remove duplicate call to _on_handshake() method
The _SelectorSslTransport constructor already calls it.
2014-07-16 18:02:10 +02:00
Tal Einat 2e4394ee0d Issue #21765: Add support for non-ascii identifiers to HyperParser 2014-07-16 16:41:14 +03:00
Tal Einat 9b7f9e6c5a Issue #21765: Add support for non-ascii identifiers to HyperParser 2014-07-16 16:33:36 +03:00
Victor Stinner b5cace8980 Issue #21645, #21985: Remove debug code 2014-07-16 10:24:27 +02:00
Guido van Rossum e82881cea7 Fix getargspec() doctring (varkw -> keywords). 2014-07-15 12:29:11 -07:00
Terry Jan Reedy 24fb2d4012 Merge with 3.4 2014-07-14 23:07:47 -04:00
Terry Jan Reedy cfa8950aab Issue #21982: Add minimal unittest for configDialog with 46% coverage.
Fix regression that this test would have caught.
2014-07-14 23:07:32 -04:00
Victor Stinner bbbf45b08d Merge with Python 3.4 2014-07-14 22:26:57 +02:00
Victor Stinner 1cae9ec966 asyncio tests: make quiet the logs of SSL handshake failures when running tests
in debug mode
2014-07-14 22:26:34 +02:00
Victor Stinner ed589f5354 Issue #21645: test_asyncio, log debug trace into sys.__stderr__, not in
sys.stderr, to get output even if tests are run with the -j command line
option.
2014-07-14 22:04:18 +02:00
Victor Stinner 24f2a5093f Issue #21645: Add debug code to analyze a failure on FreeBSD 9 2014-07-14 21:29:23 +02:00
Victor Stinner daded80283 Merge with Python 3.4 2014-07-14 18:36:24 +02:00
Victor Stinner acdb782a83 asyncio: sync with Tulip
* Tulip issue #184: Log subprocess events in debug mode

  - Log stdin, stdout and stderr transports and protocols
  - Log process identifier (pid)
  - Log connection of pipes
  - Log process exit
  - Log Process.communicate() tasks: feed stdin, read stdout and stderr
  - Add __repr__() method to many classes related to subprocesses


* Add BaseSubprocessTransport._pid attribute. Store the pid so it is still
  accessible after the process exited. It's more convinient for debug.

* create_connection(): add the socket in the "connected to" debug log

* Clean up some docstrings and comments. Remove unused unimplemented
  _read_from_self().
2014-07-14 18:33:40 +02:00
Terry Jan Reedy e0a9a0156e Merge with 3.4 2014-07-13 17:27:41 -04:00
Terry Jan Reedy 5283c4e108 Issue #18592: Method return signature changes made to SearchDialogBase for
test purposes are now reflected in GrepDialog and ReplaceDialog.  Docstrings
are improved. Initial patch by Saimadhav Heblikar
2014-07-13 17:27:26 -04:00
Ned Deily 55966193f2 Issue #21323: Fix http.server to again handle scripts in CGI subdirectories,
broken by the fix for security issue #19435.  Patch by Zach Byrne.
2014-07-12 22:20:15 -07:00
Ned Deily 5d0d2e6ed6 Issue #21323: Fix http.server to again handle scripts in CGI subdirectories,
broken by the fix for security issue #19435.  Patch by Zach Byrne.
2014-07-12 22:16:56 -07:00
Ned Deily 217f4cd7ee Issue #21323: Fix http.server to again handle scripts in CGI subdirectories,
broken by the fix for security issue #19435.  Patch by Zach Byrne.
2014-07-12 22:12:39 -07:00
Ned Deily 915a30fb0d Issue #21323: Fix http.server to again handle scripts in CGI subdirectories,
broken by the fix for security issue #19435.  Patch by Zach Byrne.
2014-07-12 22:06:26 -07:00
Alexander Belopolsky 007a90317d Issue #21966: Respect -q command-line option when code module is ran.
Contributed by Anton Barkovsky.
2014-07-12 16:36:33 -04:00
Berker Peksag de1fb6660b Issue #19076: Merge with 3.4. 2014-07-12 18:26:03 +03:00
Berker Peksag ad5ffd4767 Issue #19076: Don't pass the redundant 'file' argument to self.error(). 2014-07-12 18:24:32 +03:00
Victor Stinner 5c6e6fc57e Issue #21932: Skip test_os.test_large_read() on 32-bit system 2014-07-12 11:03:53 +02:00
Victor Stinner 59d77e8a05 Merge with 3.4 2014-07-12 03:12:30 +02:00
Victor Stinner e912e652f8 asyncio: sync with Tulip
* Tulip issue #183: log socket events in debug mode

  - Log most important socket events: socket connected, new client, connection
    reset or closed by peer (EOF), etc.
  - Log time elapsed in DNS resolution (getaddrinfo)
  - Log pause/resume reading
  - Log time of SSL handshake
  - Log SSL handshake errors
  - Add a __repr__() method to many classes

* Fix ProactorEventLoop() in debug mode. ProactorEventLoop._make_self_pipe()
  doesn't call call_soon() directly because it checks for the current loop
  which fails, because the method is called to build the event loop.

* Cleanup _ProactorReadPipeTransport constructor. Not need to set again
  _read_fut attribute to None, it is already done in the base class.
2014-07-12 03:11:53 +02:00
Victor Stinner 4fee7aab90 Merge 3.4 2014-07-11 23:48:10 +02:00
Victor Stinner 8ebeb03740 asyncio: improve the documentation of servers
- Fix the documentation of Server.close(): it closes sockets
- Replace AbstractServer with Server
- Document Server.sockets attribute
2014-07-11 23:47:40 +02:00
Victor Stinner b28dbac86d asyncio, Tulip issue 180: Make Server attributes and methods private
- loop, waiters and active_count attributes are now private
- attach(), detach() and wakeup() methods are now private

The sockets attribute remains public.
2014-07-11 22:52:21 +02:00
Berker Peksag 6960c1a94b Issue #21906: Merge from 3.4. 2014-07-11 20:44:39 +03:00
Berker Peksag 7aee3ecd57 Issue #21906: Make Tools/scripts/md5sum.py work in Python 3.
Patch by Zachary Ware.
2014-07-11 20:42:18 +03:00
Berker Peksag d8089e0d04 Issue #16382: Improve exception message of warnings.warn() for bad category.
Initial patch by Phil Elson.
2014-07-11 19:50:25 +03:00