TaskFilePropertyCompareStrategyTest.groovy

Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Retain hierarchical structure in file system mirror (#5844)

The `FileSystemSnapshotter` now returns a root for each snapshotted file, possible containing all the children in hierarchy as the directory would no the file system.

This PR also contains some performance related changes:

- Stop interning path segments: That was only necessary when we stored the same path segments in many RelativePath objects. We don't do this any more, so interning should not be necessary and make things faster.

Actually, up-to-date assemble on largeMonolithicJavaProject (parallel false)

is about 40ms faster with this change (2.5 %).

- Don't use IndexedNormalizedFileSnapshots: It seems like there are no real performance gains by using IndexedNormalizedFileSnapshots.

    • -323
    • +0
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 131 more files in changeset.
Use visitor for file collection changes

    • -5
    • +11
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 8 more files in changeset.
Add test for re-ordering snapshots

When the normalized path is the same (e.g. with PathSensivity.NONE),

we should take the actual file hashes into account to determine

if files have been modified or added.

    • -0
    • +12
    ./TaskFilePropertyCompareStrategyTest.groovy
Use our own hashing architecture, take 2 (#2817)

This replaces Guava's hashing. We need this for two reasons:

- it allows the addition of custom hash functions, like BLAKE2b which would not be possible with Guava's closed design

- it fixes a few performance issues that Guava only fixes in version 20 (which we can't upgrade to right now, because we still need to support Java 5 in places)

    • -7
    • +7
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 159 more files in changeset.
Move FileHasher to base-services

+review REVIEW-6562

    • -1
    • +1
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 74 more files in changeset.
Report MISSING outputs as removed (#2541)

For the end user it is better understandable to report a file gone missing as removed and a file which changed from missing as added instead of reporting these two changes as modified.

    • -31
    • +38
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 6 more files in changeset.
Store task state even if task has failed (#2383)

Previously when a failing task created new files, those files would be recognized as overlapping outputs from some unknown source. Overlapping outputs would then cause task output caching to be disabled for the task.

We now persist the task's state even after a failed execution. But in the failure case we only persist the snapshots if there was a change to the outputs. When we do this, we also record that the execution failed. However, if the failing task didn't change its outputs, there is no need to persist its state. This will allow the task to run in incremental mode the next time it's executed.

For tasks that do modify their outputs incremental execution was always disabled the next time they were executed, and this change preserves that behavior.

    • -73
    • +109
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 35 more files in changeset.
Revert "Report removed outputs as REMOVED"

This reverts commit a44ecc144cf2e2f4d44829f7f71f14203a118483.

We didn't intend this to be a (behavior) breaking change.

#2346

    • -22
    • +20
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 4 more files in changeset.
Report removed outputs as REMOVED

When a file changes from File/Directory to Missing, then we report the

changes as `MODIFIED`. We should better report this change as

`ADDED`/`REMOVED`.

    • -20
    • +22
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 4 more files in changeset.
Remove "replaced" file change state introduced in 3.1

Instead of reporting a replacement we now report a removal and an addition.

The problem with the newly introduced change was that there was no public API to query for it. Because of this, incremental tasks relying on `InputFileDetails.isModified()` didn't notice replacement. Replacements were only reported for `@OrderSensitive` and `@Classpath` properties.

+review REVIEW-6345

    • -6
    • +6
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 3 more files in changeset.
Move classpath normalization to the annotation handler

+review REVIEW-6241

    • -1
    • +1
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 13 more files in changeset.
Reworked the order-insensitive file snapshot comparison algorithm so that it is more efficient when absolute file paths are relevant.

    • -1
    • +74
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 12 more files in changeset.
Use custom snapshot normalization for classpaths

This way `PathSensitivity` doesn't have to expose a special type for `CLASSPATH`.

+review REVIEW-6241

    • -1
    • +1
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 23 more files in changeset.
Refactor code for easier readability

- folded some classes into TaskFilePropertyCompareStrategy

- merged and cleaned up tests for compare strategies

- better name for TaskFilePropertyPathSensitivity

+review REVIEW-6170

    • -0
    • +189
    ./TaskFilePropertyCompareStrategyTest.groovy
  1. … 27 more files in changeset.