instantexecution

Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Ensure that the implementation hash for a task defined in a Groovy DSL build script is the same when the task is deserialized from the instant execution cache as when it was serialized to cache.

Previously, a task defined in a Groovy DSL script was always treated as out-of-date when first deserialized from the instant execution cache.

    • -15
    • +13
    ./InstantExecutionClassLoaderScopeRegistryListener.kt
  1. … 7 more files in changeset.
Simplify and improve the reliability of serializing classes to the instant execution cache.

Fixes a case where loading the instant execution cache after writing a task graph that references a different set of build scripts to that referenced last time the task graph was written.

    • -4
    • +13
    ./InstantExecutionClassLoaderScopeRegistryListener.kt
  1. … 7 more files in changeset.
Fix `ClassNotFoundExeception` when loading objects whose class is defined in a build script from the instant execution cache, after recreating the cache from a daemon process that has previously successfully used the cache.

For example, running `gradle taskA`, `gradle taskA`, `gradle taskB`, `gradle taskB` would fail if `taskB` uses types from a build script.

This was happening because the script ClassLoaders are cached and reused, but the association between ClassLoader and scope was lost, and this association is what instant execution uses to know how to load the class.

This change fixes one case of this problem, but the same problem can still happen if the set of build scripts being referenced changes.

    • -8
    • +19
    ./InstantExecutionClassLoaderScopeRegistryListener.kt
  1. … 25 more files in changeset.
Move the functional tests for concurrent usage of build services into a separate test class, and fix for instant execution.

    • -1
    • +3
    ./serialization/codecs/ProviderCodecs.kt
    • -2
    • +19
    ./serialization/codecs/TaskNodeCodec.kt
  1. … 9 more files in changeset.
Add `BuildServiceParameters.None` marker type that is used to indicate that a build service does not take any parameters, to match the pattern used in other places.

Extract some validation logic from several places so it can be reused in the places where parameterized isolated objects, such as artifact transforms or build services, are registered.

    • -1
    • +1
    ./serialization/codecs/ProviderCodecs.kt
  1. … 35 more files in changeset.
Let InstantExecutionGradleExecuter set instant execution quiet mode

in order to not disturb output assertions

Signed-off-by: Paul Merlin <paul@gradle.com>

  1. … 1 more file in changeset.
Log instant execution problems report summary at warning level

instead of lifecycle

Signed-off-by: Paul Merlin <paul@gradle.com>

Serialize build service providers to the instant execution cache as a spec that is used to recreate the service instance in subsequent builds.

    • -1
    • +30
    ./serialization/codecs/ProviderCodecs.kt
  1. … 8 more files in changeset.
Enable instant execution only when the system property has a value of 'true', to make it easier for tooling to disable instant execution when it has been enabled.

  1. … 3 more files in changeset.
Ensure that managed task properties that were not initialized prior to serialization can be used after deserialization.

  1. … 1 more file in changeset.
Change instant execution serialization to handle abstract model types.

Reuse the approach used to serialize the state of abstract task types.

    • -2
    • +11
    ./serialization/beans/BeanPropertyReader.kt
    • -3
    • +3
    ./serialization/beans/BeanStateReader.kt
    • -8
    • +16
    ./serialization/codecs/BeanCodec.kt
    • -1
    • +1
    ./serialization/codecs/SerializableWriteObjectCodec.kt
  1. … 4 more files in changeset.
Remove support from instant execution for convention mappings used with `Provider` typed properties.

    • -15
    • +0
    ./serialization/beans/BeanPropertyWriter.kt
Introduce system property to fail instant execution store on warnings

Main intent is usage in coverage

Signed-off-by: Paul Merlin <paul@gradle.com>

  1. … 1 more file in changeset.
Only capture declarative includes/excludes on PatternSet

Signed-off-by: Paul Merlin <paul@gradle.com>

    • -0
    • +40
    ./serialization/codecs/PatternSetCodec.kt
  1. … 1 more file in changeset.
Serialize FileTree pattern set

Signed-off-by: Paul Merlin <paul@gradle.com>

    • -8
    • +11
    ./serialization/codecs/FileTreeCodec.kt
Merge branch 'release'

  1. … 2 more files in changeset.
Deprecate querying the value of a `Provider` whose value is a mapped a task output file, prior to completion of the producing task.

  1. … 16 more files in changeset.
Make paths/names of included builds immutable (#10998)

Changes the “build path” for included builds to be determined at inclusion time based on the directory name, or a user supplied override. Previously, we tried to use the root project name defined in the included build. This caused a lot of complexity due to it not being known until part way through building the included build.

This change also disallows use of `buildSrc` as a project name, as it collides with the `buildSrc` nested build.

  1. … 72 more files in changeset.
Also get Instant Execution system properties directly

if not in startParameter

This is temporary adding on top of the temporary way to enable

instant execution in order to be able to configure an IDE to always

use instant execution easily.

Signed-off-by: Paul Merlin <paul@gradle.com>

Move temporarily ignored Android fields to Workarounds

Signed-off-by: Paul Merlin <paul@gradle.com>

Polish `TransformerCodec.kt`

- Silence warning via `uncheckedCast` utility

    • -1
    • +2
    ./serialization/codecs/TransformerCodec.kt
Add instant execution codec for ListenerManager service

Signed-off-by: Paul Merlin <paul@gradle.com>

  1. … 1 more file in changeset.
Run all tasks read from the instant execution cache in parallel. Each of the tasks is isolated from the project state and so can run in parallel.

    • -2
    • +4
    ./serialization/codecs/TaskNodeCodec.kt
  1. … 5 more files in changeset.
Fix `:instantExecution` warnings

    • -3
    • +8
    ./serialization/codecs/ArtifactCollectionCodec.kt
    • -19
    • +23
    ./serialization/codecs/ProviderCodecs.kt
Polish `ProxyCodec`

- Remove unchecked cast warnings by using specialized operations

- Replace `if (c) e else null` by `e.takeIf { c }`

Support serialization of proxy instances to the instant execution cache. Previously this would work by accident when the cache was read by the same daemon process that wrote to the cache.

    • -0
    • +48
    ./serialization/codecs/ProxyCodec.kt
Include the property display name, if defined, in error messages when a `Property` value is set using a value or provider whose type is not assignable to the property type.

Also validate and sanitize the values used to set a `Property` convention.

    • -34
    • +4
    ./serialization/codecs/ProviderCodecs.kt
  1. … 9 more files in changeset.
Let instant execution handle ExecOperations service

Signed-off-by: Paul Merlin <paul@gradle.com>

  1. … 1 more file in changeset.
Work around AGP static state in instant execution

Signed-off-by: Paul Merlin <paul@gradle.com>

    • -0
    • +50
    ./serialization/Workarounds.kt
  1. … 1 more file in changeset.
Create immutable file collection when de-serializing