aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java
Commit message (Collapse)AuthorAge
* EvaluationProgressReceiver absorbs other progress trackers.Gravatar Chloe Calvarin2016-10-06
| | | | | | | | | | Remove DirtyKeyTracker and inflight node tracking as independent progress tracking bits of code, and instead use an internal-facing DirtyTrackingProgressReceiver wrapper of the user's EvaluationProgressReceiver. -- MOS_MIGRATED_REVID=135291924
* Fixed EvaluationProgressReceiver object namesGravatar Googler2016-09-27
| | | | | | | | | | EvaluationProgressReceiver objects have two common naming schemes currently, and calling them invalidationReceiver is misleading, so to make the naming convention standard, all object names are based on "progressReceiver." -- MOS_MIGRATED_REVID=134411011
* Introduce a Builder for ForkJoinQuiescingExecutor.Gravatar Nathan Harmata2016-09-21
| | | | | -- MOS_MIGRATED_REVID=133714902
* Allow reverse dependency lookups on Skyframe graph to throw InteruptedExceptionGravatar Googler2016-09-14
| | | | | -- MOS_MIGRATED_REVID=132999234
* Allow Skyframe graph lookups and value retrievals to throw InterruptedException.Gravatar Janak Ramakrishnan2016-08-16
| | | | | | | The only place we now don't handle InterruptedException is in the action graph created after analysis, since I'm not sure that will be around for that much longer. -- MOS_MIGRATED_REVID=130327770
* Get rid of InvalidatableGraph. This explicit concept is no longer needed.Gravatar Nathan Harmata2016-08-11
| | | | | -- MOS_MIGRATED_REVID=129895423
* Augment the QueryableGraph#get[BatchWithFieldHints] method to take in ↵Gravatar Nathan Harmata2016-07-27
| | | | | | | parameters conveying the requesting node (if any), the requested node(s), as well as a reason for the skyframe graph lookup. Alternate graph implementations may be interested in this information. -- MOS_MIGRATED_REVID=128496089
* Refactor QueryableGraph and ThinNodeQueryableGraph to be independent ↵Gravatar Janak Ramakrishnan2016-07-11
| | | | | | | interfaces, in preparation for further changes. -- MOS_MIGRATED_REVID=126924789
* Remove ability of AbstractQueueVisitor to continue after an interrupt. That ↵Gravatar Janak Ramakrishnan2016-06-15
| | | | | | | functionality was only used in tests. -- MOS_MIGRATED_REVID=124841573
* Allow AQV users to inject arbitrary handling of classified errors.Gravatar Nathan Harmata2016-05-27
| | | | | -- MOS_MIGRATED_REVID=123347295
* Assert batch existence of nodes in DirtyingNodeVisitor#visit.Gravatar Janak Ramakrishnan2016-05-24
| | | | | | | | | | | Now that we batch-prefetch the nodes, there is no reason to delay this check until the async Runnable runs, since we have more debugging information this way. -- Change-Id: Ic73d99ed8de184ba1e29f0dee5375f5d45b5379d Reviewed-on: https://bazel-review.googlesource.com/3680 MOS_MIGRATED_REVID=123018542
* Stop converting temporary direct deps to a set. In almost all cases, this ↵Gravatar Janak Ramakrishnan2016-05-16
| | | | | | | conversion is unnecessary and wasteful. In the remaining cases, the set conversion can be explicit. -- MOS_MIGRATED_REVID=122294939
* Parallelize top-level invalidation. No need to do all of these in sequence.Gravatar Eric Fellheimer2016-01-29
| | | | | -- MOS_MIGRATED_REVID=113313675
* Use Bazel Preconditions variant which avoids varargs array creationGravatar Mark Schaller2015-12-10
| | | | | | | Reduces garbage. -- MOS_MIGRATED_REVID=109914243
* Track changed and dirtied keys separately during invalidationGravatar Mark Schaller2015-11-30
| | | | | | | | Reduces the number of allocations during invalidation. Has a magnified effect when optional support for interruptibility is turned off. -- MOS_MIGRATED_REVID=108978068
* Make support for interruptibility optional during dirtyingGravatar Mark Schaller2015-11-25
| | | | | | | Reduces the amount of work needed when interruptibility isn't needed. -- MOS_MIGRATED_REVID=108611609
* Presize invalidation pairs collectionGravatar Mark Schaller2015-11-24
| | | | | | | Reduces garbage generated during array resizing. -- MOS_MIGRATED_REVID=108528430
* Presize invalidation sets for better performanceGravatar Mark Schaller2015-11-20
| | | | | -- MOS_MIGRATED_REVID=108266475
* Batch reverse dep retrieval in invalidationGravatar Mark Schaller2015-11-18
| | | | | | | | | | | Rather than retrieve and process the reverse deps of an invalidated node one at a time, batch request the set of reverse deps and then process each of them. This reduces the overhead of requesting values from the graph. -- MOS_MIGRATED_REVID=108062933
* Return rdeps when marking a node dirtyGravatar Mark Schaller2015-11-18
| | | | | | | | | | The thread that succeeds at marking a node dirty during invalidation must then schedule that node's reverse deps for invalidation. Providing the set of reverse deps as a return value from marking a node dirty makes some future optimizations possible. -- MOS_MIGRATED_REVID=108045473
* Improve concurrency level in invalidation setsGravatar Mark Schaller2015-11-17
| | | | | -- MOS_MIGRATED_REVID=107974602
* Permit use of ForkJoinQuiescingExecutor for invalidationGravatar Mark Schaller2015-11-04
| | | | | | | | | | Changes InvalidatingNodeVisitor's use of AbstractQueueVisitor from inheritance to composition. This allows it to vary its executor implementation. A ForkJoinPool-specialized implementation option is provided. -- MOS_MIGRATED_REVID=106960011
* Introduce ErrorClassifierGravatar Mark Schaller2015-11-02
| | | | | | | | | | 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
* Introduce QuiescingExecutorGravatar Mark Schaller2015-11-02
| | | | | | | | | | | | 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
* Don't log SchedulerExceptions.Gravatar Nathan Harmata2015-10-20
| | | | | | | RELNOTES: None -- MOS_MIGRATED_REVID=105787681
* Allow other ExecutorService implementations in AbstractQueueVisitorGravatar Mark Schaller2015-10-13
| | | | | | | Previously, only ThreadPoolExecutor implementations were allowed. -- MOS_MIGRATED_REVID=105340237
* Refactoring: Move ThreadPoolExecutorParams to top-level.Gravatar Eric Fellheimer2015-09-30
| | | | | -- MOS_MIGRATED_REVID=104250152
* Rationalize copyright headersGravatar Damien Martin-Guillerez2015-09-25
| | | | | | | | | | | 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
* Don't remove reverse deps until node is known to be changed. This helps ↵Gravatar Janak Ramakrishnan2015-09-23
| | | | | | | avoid mutating the deps of nodes that are still going to be deps after evaluation is finished. -- MOS_MIGRATED_REVID=103659429
* Fail fast on a crash in an InvalidatingNodeVisitor worker thread, just like ↵Gravatar Nathan Harmata2015-09-15
| | | | | | | we do in ParallelEvaluator. -- MOS_MIGRATED_REVID=103031770
* Delay cleaning of in-flight nodes until the following build. This allows us ↵Gravatar Janak Ramakrishnan2015-09-11
| | | | | | | | | to interrupt evaluation in constant time. Some ParallelEvaluator tests that implicitly relied on cleaning happening before the next evaluation were moved into MemoizingEvaluatorTest as a result. -- MOS_MIGRATED_REVID=102696653
* Refactor NodeEntry, create node representation without a valueGravatar Mark Schaller2015-09-02
| | | | | | | | | | | This CL introduces a ThinNodeEntry, which is a NodeEntry without the means of accessing its value. The InvalidatingNodeVisitor does not need to access nodes' values while doing its work, so it is provided with a ThinNodeQueryableGraph, capable of producing only ThinNodeEntries. -- MOS_MIGRATED_REVID=102088111
* Don't log timing information in InvalidatingNodeVisitor. Instead, callers ↵Gravatar Nathan Harmata2015-08-17
| | | | | | | can log timing information if they wish. -- MOS_MIGRATED_REVID=100712340
* Don't return SkyValue when dirtying nodeGravatar Mark Schaller2015-08-11
| | | | | | | | The invalidator is no longer using the SkyValue, so there's no need to return it when dirtying a node. -- MOS_MIGRATED_REVID=100307211
* Convert invalidated tracking from per-value to per-keyGravatar Mark Schaller2015-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The primary user of invalidation tracking is the SkyframeBuildView, which monitored which ConfiguredTargetValues were invalidated. It did that so the SkyframeExecutor could limit its search for artifact conflicts to when the set of configured targets in the build changed. For the newly introduced set of dirtied keys, "dirtiedConfiguredTargetKeys" in SkyframeBuildView, to be as useful as the "dirtyConfiguredTargets" set it replaced, the ConfiguredTargetValueInvalidationReceiver must only remove a key from the set if it was found to be clean when it was re-evaluated. If it was rebuilt, then the key must stay in the set, to represent that the set of configured target values has truly changed. This CL introduces a semantic change that hopefully has a small effect, if any. Previously, the informInvalidationReceiver method in InvalidatingNodeVisitor only informed the invalidationReceiver when a non-null value was invalidated. (This is usually, but not always, equivalent to a non-error value. The uncommon exception is that in keep-going builds, some nodes with errors may also have values, and the invalidator would inform the receiver when such a node was invalidated.) Now, the receiver is informed that a node is invalidated regardless of whether its value is null. Because the receiver uses this information to determine whether artifact conflict search has to be rerun, and that search is expensive, it's possible this change will negatively impact performance. However, the only way an extra search could be invoked is if the invalidated configured target nodes are all in error. That seems like it would happen rarely, if at all. Further cleanup of unused SkyValues returned by markDirty to come in a subsequent CL. -- MOS_MIGRATED_REVID=100304744
* Add threadpool injectability to invalidatorGravatar Mark Schaller2015-08-06
| | | | | -- MOS_MIGRATED_REVID=99961435
* Log time spent on invalidation, and the number of nodes visited.Gravatar Eric Fellheimer2015-07-30
| | | | | -- MOS_MIGRATED_REVID=99411089
* Improve debugging message in case of unexpected getBatch <-> directDeps ↵Gravatar Janak Ramakrishnan2015-07-17
| | | | | | | mismatch. -- MOS_MIGRATED_REVID=98388239
* Batch retrieval of children when removing reverse deps.Gravatar Janak Ramakrishnan2015-06-29
| | | | | -- MOS_MIGRATED_REVID=97022077
* Update from Google.Gravatar Han-Wen Nienhuys2015-02-25
-- MOE_MIGRATED_REVID=85702957