| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
Silently handle EINTR, which is normal when we have received a signal
such as SIGINT. Also, raise StopIteration in order to break out of our
current iteration and respond appropriately to the signal as soon as
possible.
|
|
|
|
|
|
| |
Synchronous waiting for status is not supported, since it would be
vulnerable to hitting the recursion limit when a large number of tasks
need to be terminated simultaneously, like in bug #402335.
|
|
|
|
|
|
|
| |
This fixes infinite loops triggered by Ctrl-C, where timeout calls
would exhaust the poll event queue because _poll was not re-entrant.
Now, re-entrance is only prohibited for individual callback functions,
in order to protect against infinite recursion.
|
| |
|
|
|
|
| |
See https://bugs.pypy.org/issue833 for details.
|
|
|
|
|
|
| |
The corresponding hashlib issues are fixed in PyPy 1.8:
https://bugs.pypy.org/issue957
|
|
|
|
|
|
|
|
|
| |
This fixes a regression in termination signal handling since commit
8c1fcf5a9ba9fa4d406a4d0cc284fe73a84f5a63, which cause termination
signals to be ignored until a running job had exited. This regression
is not really noticeable for Ctrl-C handling, since in that case the
SIGINT propagets to subprocesses, causing them to exit and trigger a
_schedule() call whichtriggers a termination check.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Regenerate metadata for given cpv in each repository.
|
| |
|
| |
|
|
|
|
| |
The _keep_scheduling() template method is used instead.
|
|
|
|
|
|
|
|
| |
Raising StopIteration doesn't work with GlibEventLoop, since it catches
all exceptions and logs them. So, just use a boolean expression to
terminate the while loop. This depends on commit
dcb9fab8463996542d06d29bc383f5933bf0d677 so that IpcDaemonTestCase
timeouts work correctly with both EventLoop and GlibEventLoop.
|
|
|
|
|
|
|
|
|
| |
This fixes EventLoop.iteration() so that it doesn't poll too long when
there are timeouts registered, since it's not nice to spend a long time
polling for an IO event that might never arrive even though a timeout
may have changed some state that would terminate a timeout loop like
in QueueScheduler.run() or AbstractPollTask._wait_loop(). This makes
EventLoop.iteration() behave more like GlibEventLoop.iteration().
|
|
|
|
|
| |
This has been broken since commit
93b654199a32fc3df1299b030317720b9294b0c3.
|
|
|
|
|
| |
Use --echangelog=force to force ChangeLog generation in this case.
See bug #398009.
|
|
|
|
|
|
| |
As suggested here:
http://archives.gentoo.org/gentoo-dev/msg_06a47ad55977f4d16bfe18769c6c38b8.xml
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The way we don't leave an leak a reference to the Scheduler instance
in the global EventLoop instance.
|
|
|
|
|
|
|
|
| |
This is needed since commit 7a6c34cc6bd6eb20a97e05347f87a0157f4ae58a in
order to ensure that the build dir is unlocked before exit listeners
are called. It fixes failures in catalyst stage 1 builds where two
instances of the same package, built sequentially for separate roots,
interfere with eachother's build dir lock.
|
| |
|
|
|
|
|
|
| |
It's conceivable the constants could be implementation dependent, so
use glib's generic IO_* names rather than the POLL* names which are
associated specifically with python's select.poll object.
|
| |
|
|
|
|
|
|
| |
This causes all PollScheduler instances within a given process to share
a singleton EventLoop instance, and also makes it possible to swap in
glib's main loop for all portage event loops in the main process.
|
|
|
|
|
|
| |
This should fix a Scheduler hang which is triggered when that merge
queue, a SequentialTaskQueue, doesn't decrement its merge count until
after other exit listeners have already run.
|
|
|
|
|
| |
Use a StopIteration exception to jump out of EventLoop.iterate()
before the poll loop.
|
|
|
|
| |
This caused emerge to consume 100% cpu.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
We can use iteration() instead, and _poll_loop's exit behavior doesn't
seem practical to emulate with glib.MainLoop.
|
| |
|
|
|
|
|
| |
PollScheduler and subclasses be should already be calling
self._schedule() when necessary.
|
|
|
|
|
| |
Since commit 4620d6aba1c5c10344e311585516ee43819b703c, the first
prefetcher is started as soon as it's added to the task queue.
|
|
|
|
| |
Also, remove unecessary _dirty flag.
|
|
|
|
|
|
| |
Since commit 4620d6aba1c5c10344e311585516ee43819b703c, the
SequentialTaskQueue.add() method starts the task immediately, so
initialize start_time before that happens.
|
|
|
|
|
|
|
| |
This is needed to compensate for the removal of _idle_schedule in
commit 8c1fcf5a9ba9fa4d406a4d0cc284fe73a84f5a63, so that the
Scheduler's task queues operate without needing their schedule methods
called inside Scheduler._schedule_tasks().
|
|
|
|
|
| |
This shouldn't be needed, since _schedule() should already be called
automatically when there are any relevant state changes.
|
| |
|
| |
|