Sun, 22 May 2016 11:43:18 +0900 commandserver: add new forking server implemented without using SocketServer
Yuya Nishihara <yuya@tcha.org> [Sun, 22 May 2016 11:43:18 +0900] rev 29544
commandserver: add new forking server implemented without using SocketServer SocketServer.ForkingMixIn of Python 2.x has a couple of issues, such as: - race condition that leads to 100% CPU usage (Python 2.6) https://bugs.python.org/issue21491 - can't wait for children belonging to different process groups (Python 2.6) - leaves at least one zombie process (Python 2.6, 2.7) https://bugs.python.org/issue11109 The first two are critical because we do setpgid(0, 0) in child process to isolate terminal signals. The last one isn't, but ForkingMixIn seems to be doing silly. So there are two choices: a) backport and maintain SocketServer until we can drop support for Python 2.x b) replace SocketServer by simpler one and eliminate glue codes I chose (b) because it's great time for getting rid of utterly complicated SocketServer stuff, and preparing for future move towards prefork service. New unixforkingservice is implemented loosely based on chg 531f8ef64be6. It is monolithic but much simpler than SocketServer. unixservicehandler provides customizing points for chg, and it will be shared with future prefork service. Old unixservice class is still used by chgserver. It will be removed later. Thanks to Jun Wu for investigating these issues.
Sun, 22 May 2016 12:49:22 +0900 commandserver: extract function that serves for the current connection
Yuya Nishihara <yuya@tcha.org> [Sun, 22 May 2016 12:49:22 +0900] rev 29543
commandserver: extract function that serves for the current connection This will be used by new server implementation.
Sun, 22 May 2016 12:44:25 +0900 commandserver: manually create file objects from socket
Yuya Nishihara <yuya@tcha.org> [Sun, 22 May 2016 12:44:25 +0900] rev 29542
commandserver: manually create file objects from socket Prepares for moving away from SocketServer. See the subsequent patches for why.
Wed, 13 Jul 2016 10:46:26 +0200 bdiff: split bdiff into cpy-aware and cpy-agnostic part
Maciej Fijalkowski <fijall@gmail.com> [Wed, 13 Jul 2016 10:46:26 +0200] rev 29541
bdiff: split bdiff into cpy-aware and cpy-agnostic part
Wed, 13 Jul 2016 10:07:17 +0200 bdiff: rename functions and structs to be amenable for later exporting
Maciej Fijalkowski <fijall@gmail.com> [Wed, 13 Jul 2016 10:07:17 +0200] rev 29540
bdiff: rename functions and structs to be amenable for later exporting
Wed, 13 Jul 2016 09:36:24 +0200 bdiff: use ssize_t in favor of Py_ssize_t in cpython-unaware locations
Maciej Fijalkowski <fijall@gmail.com> [Wed, 13 Jul 2016 09:36:24 +0200] rev 29539
bdiff: use ssize_t in favor of Py_ssize_t in cpython-unaware locations This function and struct will be exposed via cffi, so we need to remove the cpython API dependency they currently have.
Thu, 14 Jul 2016 12:33:44 +0800 hgweb: enumerate lines in loop header, not before
Anton Shestakov <av6@dwimlabs.net> [Thu, 14 Jul 2016 12:33:44 +0800] rev 29538
hgweb: enumerate lines in loop header, not before Doing this will allow access to the lines in arbitrary order (because the result of enumerate() is an iterator), and that will help calculating rowspan for annotate blocks.
(0) -10000 -3000 -1000 -300 -100 -30 -10 -7 +7 +10 +30 +100 +300 +1000 +3000 +10000 tip