| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
count and possibly use that value to make dynamic decisions around scheduling.
--
MOS_MIGRATED_REVID=116351222
|
|
|
|
|
|
|
| |
Reduces garbage.
--
MOS_MIGRATED_REVID=109914243
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=109835697
|
|
|
|
|
|
|
| |
Reduces garbage.
--
MOS_MIGRATED_REVID=108707405
|
|
|
|
|
|
|
| |
Reduces garbage.
--
MOS_MIGRATED_REVID=108641543
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=107806099
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL introduces a QuiescingExecutor implementation specialized for
ForkJoinPools with the same interrupt handling, error propagation, and
task completion semantics as AbstractQueueVisitor. Currently it does
this by largely sharing its implementation with AQV.
Future refactoring could let it rely more on ForkJoinPool's own
awaitQuiescence implementation to avoid the overhead of AQV's
remainingTasks counter maintenance.
Subtasks spawned by tasks executing in ForkJoinQuiescingExecutor will
rely on ForkJoinPool's thread-local task deques for low contention
and (mostly) LIFO ordering.
--
MOS_MIGRATED_REVID=106864395
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes the following synchronization issue with
AbstractQueueVisitor's jobsMustBeStoppedField: it was read in
awaitTermination in a block synchronized on zeroRemainingTasks, but
in markToStopAllJobsIfNeeded it was read and written in a block
synchronized on the AQV instance. Now, it is always read or written
in a block synchronized on zeroRemainingTasks, because it is used in
the condition represented by that object.
This also thoroughly cleans up obsolete and irregular documentation in
the class.
--
MOS_MIGRATED_REVID=106849236
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Raises the level of abstraction of ValueVisitor's dependence on
AbstractQueueVisitor. Except for the "ForTestingOnly" methods now
available on the QuiescingExecutor interface, ValueVisitor is
agnostic to the implementation of its executor.
This also cleans up the full spectrum of visibility modifiers on
ValueVisitor methods, all of which ought to be private.
--
MOS_MIGRATED_REVID=106847453
|
|
|
|
|
|
|
|
|
|
| |
Changes the AbstractQueueVisitor strategy for varying its response to
unhandled exceptions from inheritance to composition. This will help
with a forthcoming switch from inheritance to delegation for
ValueVisitor's use of AbstractQueueVisitor.
--
MOS_MIGRATED_REVID=106730708
|
|
|
|
|
|
|
|
|
|
|
|
| |
This interface (mostly) encapsulates what the ValueVisitor expects
from the AbstractQueueVisitor class it currently inherits from. This
makes it easier for a future CL to change ValueVisitor's strategy of
code reuse from inheritance to composition.
RELNOTES:
--
MOS_MIGRATED_REVID=106728863
|
|
|
|
|
|
|
|
|
| |
order. In general, there's no advantage in Blaze to FIFO, and it means that we effectively do breadth-first graph traversal. When we must hold state for incomplete nodes (as we do with action execution, or more generally, as we do in Skyframe), this increases our memory footprint.
LIFO is not exactly depth-first traversal, since we are multithreaded, but to a first approximation, it looks like a depth-first traversal with "width" the number of threads (at each level of the graph, #(threads) nodes are visited).
--
MOS_MIGRATED_REVID=105995014
|
|
|
|
|
|
|
| |
RELNOTES: None
--
MOS_MIGRATED_REVID=105787681
|
|
|
|
|
|
|
|
|
| |
Uses an AtomicLong to count remaining tasks. Only obtains the
zeroRemainingTasks lock when remaining tasks have gone to zero or
the codepath needs to wait on that condition.
--
MOS_MIGRATED_REVID=105348523
|
|
|
|
|
|
|
|
|
|
| |
Removes unnecessary final keyword on private methods, inlines the
un-overridden protected method getWorkQueue, and restructures internal
constructors to be flatter (i.e. every constructor implementation calls
at most one other constructor).
--
MOS_MIGRATED_REVID=105344413
|
|
|
|
|
|
|
| |
Previously, only ThreadPoolExecutor implementations were allowed.
--
MOS_MIGRATED_REVID=105340237
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=105312426
|
|
|
|
|
|
|
| |
If there's a holdup propagating the exception, at least we will see it in the logs.
--
MOS_MIGRATED_REVID=105075242
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=104250152
|
|
|
|
|
|
|
|
|
|
|
| |
The headers were modified with
`find . -type f -exec 'sed' '-Ei' 's|Copyright 201([45]) Google|Copyright 201\1 The Bazel Authors|' '{}' ';'`
And manual edit for not Google owned copyright. Because of the nature of ijar, I did not modified the header of file owned by Alan Donovan.
The list of authors were extracted from the git log. It is missing older Google contributors that can be added on-demand.
--
MOS_MIGRATED_REVID=103938715
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=103747062
|
|
|
|
|
|
|
| |
become zombies.
--
MOS_MIGRATED_REVID=103541217
|
|
|
|
|
|
|
| |
the documentation for AQV#work to reflect the semantics of critical errors.
--
MOS_MIGRATED_REVID=103140100
|
|
|
|
|
|
|
| |
visibility from other threads, so we may end up storing the non-first unhandled exception and/or decline to not run new tasks because we don't realize there already is an unhandled exception.
--
MOS_MIGRATED_REVID=103127733
|
|
|
|
|
|
|
| |
stores a striped set of reentrant locks.
--
MOS_MIGRATED_REVID=102198213
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=100843669
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=100399962
|
|
|
|
|
|
|
| |
removing the key.
--
MOS_MIGRATED_REVID=100314916
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=99961435
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Ended up not being necessary; I was able to rephrase things using SettableFuture instead.
*** Original change description ***
Introduce a simple concurrent Multimap-like data structure with reference counting.
--
MOS_MIGRATED_REVID=96884190
|
|
|
|
|
|
|
| |
shutdown operations.
--
MOS_MIGRATED_REVID=96351438
|
|
|
|
|
|
|
| |
counting.
--
MOS_MIGRATED_REVID=96024804
|
|
|
|
|
|
|
| |
needed. Also clean up some lint warnings/unresolved references.
--
MOS_MIGRATED_REVID=92380618
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=90282858
|
|
|
|
|
|
|
|
|
|
|
| |
(i) Change the semantics of KeyedLocker.AutoUnlocker#close such that it can be called at most once per AutoUnlocker instance.
(ii) Change KeyedLocker.AutoUnlocker#close to throw a IllegalUnlockException (RuntimeException) on error, rather than leave the behavior intentionally underspecified.
(iii) explicitly mention in AutoLocker#lock that a thread can call lock(k) multiple times before unlocking. Combined with (i), this implies that KeyedLocker#lock implementations will want to return fresh AutoUnlocker instances.
These semantics are bit nicer to use anyway, but I also want them because I will soon be introducing KeyedLocker#lockBatch, and it's much easier to specify that given the above.
--
MOS_MIGRATED_REVID=90259645
|
|
|
|
|
|
|
| |
mutexes, and RefCountedMultisetKeyedLocker, an efficient implementation of this abstraction.
--
MOS_MIGRATED_REVID=88000985
|
|
--
MOE_MIGRATED_REVID=85702957
|