Status Update
Comments
au...@google.com <au...@google.com> #2
This requirement for addObserver
to be called on the main thread is part of the 2.3.0-alpha06
release notes
LifecycleRegistry now verifies that its methods are called on main thread. It was always a requirement for lifecycles of activities, fragments etc. An addition of observers from non-main threads resulted in hard to catch crashes in runtime.
It affects all APIs that use Lifecycle, including Navigation.
au...@google.com <au...@google.com> #3
Thanks! Somehow I've missed that.
bb...@gmail.com <bb...@gmail.com> #4
Branch: androidx-main
commit 76230d4cbcf193ad3c01e2fb317a1bb3c571b1de
Author: Ian Lake <ilake@google.com>
Date: Tue Apr 06 12:53:25 2021
Mark navigate/setGraph as @MainThread
With the upgrade to Lifecycle 2.3.1,
Lifecycle now enforces that all creation and
changes to the Lifecycle state (including adding
and removing observers) should be done on the
main thread.
By marking navigate() and setGraph() as
`@MainThread`, we can give developeres better
visibility that these operations should only
be done on the main thread.
Relnote: "Navigation now depends on
[Lifecycle `2.3.1`](/jetpack/androidx/releases/lifecycle#2.3.1)
and now marks `setGraph()` and `navigate()`, the
methods that update the `NavBackStackEntry` `Lifecycle`,
as `@MainThread`, aligning Navigation with the main thread
enforcement introduced in Lifecycle `2.3.0`."
Test: existing and updated tests pass
BUG: 171125856
Change-Id: Ifcbe407d9cb186b50f05cbbd8bc5e11e19115a82
M navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicNavHostFragmentTest.kt
M navigation/navigation-runtime/api/current.txt
M navigation/navigation-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-runtime/api/restricted_current.txt
M navigation/navigation-runtime/build.gradle
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
ga...@google.com <ga...@google.com>
bi...@google.com <bi...@google.com> #5
For the upcoming Navigation 2.4.0-alpha01 release, we've made it explicit that setGraph()
and navigate()
should only be called on the main thread (by adding @MainThread
annotations to the methods), thus aligning with the main thread enforcement of Lifecycle 2.3.
au...@google.com <au...@google.com> #6
Branch: androidx-main
commit 00c608a86c44b066198bd8c1dc7e2aef6088d4e1
Author: Ian Lake <ilake@google.com>
Date: Mon Apr 12 14:04:54 2021
Mark popBackStack and navigateUp as @MainThread
In addition to the navigate() and setGraph()
methods updated in
the methods for popping the back stack
should also be marked as @MainThread.
Relnote: "Navigation now depends on
[Lifecycle `2.3.1`](/jetpack/androidx/releases/lifecycle#2.3.1)
and now marks all of the methods that update the
`NavBackStackEntry` `Lifecycle`, including `setGraph()`,
`navigate()`, `popBackStack()`, and `navigateUp()`,
as `@MainThread`, aligning Navigation with the main thread
enforcement introduced in Lifecycle `2.3.0`."
Test: existing and updated tests pass
BUG: 171125856
Change-Id: Ib8bedbb3fe384b28c7441cbd57a0751eba307a2b
M navigation/navigation-runtime/api/current.txt
M navigation/navigation-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-runtime/api/restricted_current.txt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
au...@google.com <au...@google.com> #7
Sadly, the report doesnt give you traces (I asked rodrigo from gradle to add it in the future version of gradle), so we only see it is coming from plugin 'com.android.internal.library'
bi...@google.com <bi...@google.com> #8
As far as I know, the most effective way to get the traces is to debug a build running with gradle by adding a break point here
jo...@google.com <jo...@google.com> #9
The folder path '../../out/androidx/appsearch/appsearch-local-storage/build/intermediates/cxx' originates from ProjectInfo::getIntermediatesDir() which is deprecated with a message that says "Use the version that returns a provider".
The files mentioned in
The files in
A question maybe for Ivan, I thought the tests under com.android.build.gradle.integration.ndk.* would fail if they violated configuration caching (I recall the original push for configuration caching required some of these tests to be temporarily exempted). Is there a new constraint arriving with Gradle 8.1? In other words, are these regressions or have they always existed? It might help narrow down the cause/fix.
au...@google.com <au...@google.com> #10
Re #8:
if you upgrade androidx to 8.1 and run the following:
./gradlew appsearch:appsearch-local-storage:assembleDebug
you'll get that code path triggered.
There is also the whole gerrit topic you can apply if you want the 8.2-alpha** agp.
Re #9:
Gradle now instruments all file calls (exists(), isDirectory(), etc) and makes them part of configuration cache input if it happens during the configuration. This is a new requirement starting 8.1
jo...@google.com <jo...@google.com> #11
Gradle now instruments all file calls (exists(), isDirectory(), etc) and makes them part of configuration cache input if it happens during the configuration. This is a new requirement starting 8.1
In that case, we should be able to find the issues directly by running tests under com.android.build.gradle.integration.ndk.* and failing when configuration caching misses now when it didn't before (I have no idea how to do that though).
au...@google.com <au...@google.com> #12
Note, this affects the second run, so you need to make sure the tests call for a second build and validate that there is a cache hit on the second run.
bi...@google.com <bi...@google.com> #14
Thanks for your input Jomo! Do you have some cycles helping us making cxx compatible with the new constraint of config caching?
Running build twice in a row for cxx integration tests like com.android.build.gradle.integration.ndk.*
and check if we have a config cache hit using
For example, add the following code at
val result = executor.run(":app:build${appBuildSystem.build}Debug[arm64-v8a]")
result.assertConfigurationCacheHit()
The way recommended by Gradle is to fix is to do the file calls inside ValueSource
. AGP has a "helper" class
bi...@google.com <bi...@google.com> #15
Add more details on debugging gradle on top of
- download the latest gradle source code from
https://github.com/gradle/gradle/blob/master/CONTRIBUTING.md and open it in intellij - create a remote debugger with port
5005
in the gradle project - build a sample project from command line with
-Dorg.gradle.debug=true --no-daemon
- run the debugger from the gradle project
jo...@google.com <jo...@google.com>
au...@google.com <au...@google.com> #16
For /ssd/ssd5/androidx-main/frameworks/support/.cxx/structured-log
trace is the following
fileIsDirectory:382, Instrumented (org.gradle.internal.classpath)
intercept_isDirectory:88, FileInterceptorsDeclaration (org.gradle.internal.classpath.declarations)
<init>:49, IssueReporterLoggingEnvironment (com.android.build.gradle.internal.cxx.logging)
<init>:68, IssueReporterLoggingEnvironment (com.android.build.gradle.internal.cxx.logging)
createCxxTasks:87, CxxCreateGradleTasksKt (com.android.build.gradle.internal.cxx.configure)
createTopLevelTasks:211, VariantTaskManager (com.android.build.gradle.internal)
createTopLevelTasks:84, ApplicationTaskManager (com.android.build.gradle.internal.tasks)
createTasks:135, VariantTaskManager (com.android.build.gradle.internal)
createAndroidTasks:720, BasePlugin (com.android.build.gradle.internal.plugins)
call:596, BasePlugin$createTasks$2$1 (com.android.build.gradle.internal.plugins)
record:69, ThreadRecorder (com.android.builder.profile)
record:54, ThreadRecorder (com.android.builder.profile)
recordBlockAtConfiguration:224, AnalyticsResourceManager (com.android.build.gradle.internal.profile)
recordBlock:91, AnalyticsConfiguratorService (com.android.build.gradle.internal.profile)
accept:591, BasePlugin$createTasks$2 (com.android.build.gradle.internal.plugins)
accept:588, BasePlugin$createTasks$2 (com.android.build.gradle.internal.plugins)
execute:37, CrashReporting$afterEvaluate$1 (com.android.build.gradle.internal.crash)
execute:35, CrashReporting$afterEvaluate$1 (com.android.build.gradle.internal.crash)
execute:123, DefaultUserCodeApplicationContext$CurrentApplication$1 (org.gradle.configuration.internal)
run:171, DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1 (org.gradle.configuration.internal)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:168, DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction (org.gradle.configuration.internal)
dispatch:97, BroadcastDispatch$ActionInvocationHandler (org.gradle.internal.event)
dispatch:85, BroadcastDispatch$ActionInvocationHandler (org.gradle.internal.event)
dispatch:43, AbstractBroadcastDispatch (org.gradle.internal.event)
dispatch:257, BroadcastDispatch$SingletonDispatch (org.gradle.internal.event)
dispatch:164, BroadcastDispatch$SingletonDispatch (org.gradle.internal.event)
dispatch:83, AbstractBroadcastDispatch (org.gradle.internal.event)
dispatch:69, AbstractBroadcastDispatch (org.gradle.internal.event)
dispatch:363, BroadcastDispatch$CompositeDispatch (org.gradle.internal.event)
dispatch:261, BroadcastDispatch$CompositeDispatch (org.gradle.internal.event)
dispatch:148, ListenerBroadcast (org.gradle.internal.event)
dispatch:37, ListenerBroadcast (org.gradle.internal.event)
invoke:94, ProxyDispatchAdapter$DispatchingInvocationHandler (org.gradle.internal.dispatch)
afterEvaluate:-1, $Proxy78 (jdk.proxy1)
execute:247, LifecycleProjectEvaluator$NotifyAfterEvaluate$1 (org.gradle.configuration.project)
execute:244, LifecycleProjectEvaluator$NotifyAfterEvaluate$1 (org.gradle.configuration.project)
stepEvaluationListener:1483, DefaultProject (org.gradle.api.internal.project)
run:253, LifecycleProjectEvaluator$NotifyAfterEvaluate (org.gradle.configuration.project)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
lambda$run$0:114, LifecycleProjectEvaluator$EvaluateProject (org.gradle.configuration.project)
accept:-1, LifecycleProjectEvaluator$EvaluateProject$$Lambda$1453/0x00000008015f0dc0 (org.gradle.configuration.project)
lambda$applyToMutableState$1:395, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
apply:-1, DefaultProjectStateRegistry$ProjectStateImpl$$Lambda$1419/0x00000008015bf550 (org.gradle.api.internal.project)
fromMutableState:413, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
applyToMutableState:394, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
run:100, LifecycleProjectEvaluator$EvaluateProject (org.gradle.configuration.project)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
evaluate:72, LifecycleProjectEvaluator (org.gradle.configuration.project)
evaluate:779, DefaultProject (org.gradle.api.internal.project)
evaluate:156, DefaultProject (org.gradle.api.internal.project)
lambda$ensureSelfConfigured$2:84, ProjectLifecycleController (org.gradle.api.internal.project)
run:-1, ProjectLifecycleController$$Lambda$1450/0x00000008015eb3c0 (org.gradle.api.internal.project)
lambda$doTransition$14:255, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$375/0x0000000801009798 (org.gradle.internal.model)
doTransition:266, StateTransitionController (org.gradle.internal.model)
doTransition:254, StateTransitionController (org.gradle.internal.model)
lambda$maybeTransitionIfNotCurrentlyTransitioning$10:199, StateTransitionController (org.gradle.internal.model)
run:-1, StateTransitionController$$Lambda$1451/0x00000008015eb5e8 (org.gradle.internal.model)
withLock:34, DefaultSynchronizer (org.gradle.internal.work)
maybeTransitionIfNotCurrentlyTransitioning:195, StateTransitionController (org.gradle.internal.model)
ensureSelfConfigured:84, ProjectLifecycleController (org.gradle.api.internal.project)
ensureConfigured:369, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
configure:33, TaskPathProjectEvaluator (org.gradle.execution)
configureHierarchy:49, TaskPathProjectEvaluator (org.gradle.execution)
getSelection:61, DefaultTaskSelector (org.gradle.execution)
resolveTaskName:98, DefaultBuildTaskSelector (org.gradle.execution.selection)
parseTasks:49, CommandLineTaskParser (org.gradle.execution.commandline)
scheduleRequestedTasks:50, TaskNameResolvingBuildTaskScheduler (org.gradle.execution)
scheduleRequestedTasks:72, DefaultTasksBuildTaskScheduler (org.gradle.execution)
lambda$scheduleRequestedTasks$0:46, DefaultTaskExecutionPreparer (org.gradle.initialization)
run:-1, DefaultTaskExecutionPreparer$$Lambda$1824/0x000000080181b328 (org.gradle.initialization)
create:31, Factories$1 (org.gradle.internal)
withReplacedLocks:345, DefaultWorkerLeaseService (org.gradle.internal.work)
withMutableStateOfAllProjects:228, DefaultProjectStateRegistry$DefaultBuildProjectRegistry (org.gradle.api.internal.project)
withMutableStateOfAllProjects:221, DefaultProjectStateRegistry$DefaultBuildProjectRegistry (org.gradle.api.internal.project)
scheduleRequestedTasks:45, DefaultTaskExecutionPreparer (org.gradle.initialization)
lambda$scheduleRequestedTasks$0:76, VintageBuildModelController (org.gradle.initialization)
run:-1, VintageBuildModelController$$Lambda$1823/0x000000080181b100 (org.gradle.initialization)
lambda$inState$1:99, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$326/0x0000000800fd3838 (org.gradle.internal.model)
lambda$inState$2:114, StateTransitionController (org.gradle.internal.model)
create:-1, StateTransitionController$$Lambda$327/0x0000000800fd3a60 (org.gradle.internal.model)
withLock:44, DefaultSynchronizer (org.gradle.internal.work)
inState:110, StateTransitionController (org.gradle.internal.model)
inState:98, StateTransitionController (org.gradle.internal.model)
scheduleRequestedTasks:76, VintageBuildModelController (org.gradle.initialization)
scheduleRequestedTasks:55, ConfigurationCacheAwareBuildModelController (org.gradle.configurationcache)
addRequestedTasks:282, DefaultBuildLifecycleController$DefaultWorkGraphBuilder (org.gradle.internal.build)
lambda$scheduleRequestedTasks$0:38, DefaultBuildTreeWorkPreparer (org.gradle.internal.buildtree)
accept:-1, DefaultBuildTreeWorkPreparer$$Lambda$1818/0x0000000801818600 (org.gradle.internal.buildtree)
lambda$populateWorkGraph$7:178, DefaultBuildLifecycleController (org.gradle.internal.build)
accept:-1, DefaultBuildLifecycleController$$Lambda$1822/0x000000080181a3b0 (org.gradle.internal.build)
populateWorkGraph:42, DefaultBuildWorkPreparer (org.gradle.internal.build)
populateTaskGraph:115, BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph (org.gradle.internal.build)
run:101, BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph (org.gradle.internal.build)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
populateWorkGraph:74, BuildOperationFiringBuildWorkPreparer (org.gradle.internal.build)
lambda$populateWorkGraph$8:178, DefaultBuildLifecycleController (org.gradle.internal.build)
run:-1, DefaultBuildLifecycleController$$Lambda$1821/0x000000080181a188 (org.gradle.internal.build)
lambda$inState$1:99, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$326/0x0000000800fd3838 (org.gradle.internal.model)
lambda$inState$2:114, StateTransitionController (org.gradle.internal.model)
create:-1, StateTransitionController$$Lambda$327/0x0000000800fd3a60 (org.gradle.internal.model)
withLock:44, DefaultSynchronizer (org.gradle.internal.work)
inState:110, StateTransitionController (org.gradle.internal.model)
inState:98, StateTransitionController (org.gradle.internal.model)
populateWorkGraph:178, DefaultBuildLifecycleController (org.gradle.internal.build)
populateWorkGraph:167, DefaultBuildWorkGraphController$DefaultBuildWorkGraph (org.gradle.internal.build)
populateWorkGraph:73, DefaultBuildController (org.gradle.composite.internal)
withWorkGraph:150, DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraphBuilder (org.gradle.composite.internal)
lambda$scheduleRequestedTasks$1:38, DefaultBuildTreeWorkPreparer (org.gradle.internal.buildtree)
accept:-1, DefaultBuildTreeWorkPreparer$$Lambda$1817/0x000000080180bc48 (org.gradle.internal.buildtree)
run:197, DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph$1 (org.gradle.composite.internal)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
scheduleWork:192, DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph (org.gradle.composite.internal)
scheduleRequestedTasks:37, DefaultBuildTreeWorkPreparer (org.gradle.internal.buildtree)
invoke:41, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1$result$1 (org.gradle.configurationcache)
invoke:40, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1$result$1 (org.gradle.configurationcache)
invoke:134, DefaultConfigurationCache$loadOrScheduleRequestedTasks$1 (org.gradle.configurationcache)
invoke:133, DefaultConfigurationCache$loadOrScheduleRequestedTasks$1 (org.gradle.configurationcache)
runWorkThatContributesToCacheEntry:296, DefaultConfigurationCache (org.gradle.configurationcache)
loadOrScheduleRequestedTasks:133, DefaultConfigurationCache (org.gradle.configurationcache)
apply:40, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1 (org.gradle.configurationcache)
apply:39, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1 (org.gradle.configurationcache)
withNewWorkGraph:109, DefaultIncludedBuildTaskGraph (org.gradle.composite.internal)
scheduleAndRunRequestedTasks:39, ConfigurationCacheAwareBuildTreeWorkController (org.gradle.configurationcache)
lambda$scheduleAndRunTasks$1:68, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
get:-1, DefaultBuildTreeLifecycleController$$Lambda$329/0x0000000800fd1480 (org.gradle.internal.buildtree)
lambda$runBuild$4:98, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
get:-1, DefaultBuildTreeLifecycleController$$Lambda$330/0x0000000800fd16a8 (org.gradle.internal.buildtree)
lambda$transition$6:169, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$332/0x0000000800fd1af8 (org.gradle.internal.model)
doTransition:266, StateTransitionController (org.gradle.internal.model)
lambda$transition$7:169, StateTransitionController (org.gradle.internal.model)
create:-1, StateTransitionController$$Lambda$331/0x0000000800fd18d0 (org.gradle.internal.model)
withLock:44, DefaultSynchronizer (org.gradle.internal.work)
transition:169, StateTransitionController (org.gradle.internal.model)
runBuild:95, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
scheduleAndRunTasks:68, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
scheduleAndRunTasks:63, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
run:53, BuildModelActionRunner (org.gradle.tooling.internal.provider.runner)
run:35, ChainingBuildActionRunner (org.gradle.launcher.exec)
run:49, ProblemReportingBuildActionRunner (org.gradle.internal.buildtree)
run:65, BuildOutcomeReportingBuildActionRunner (org.gradle.launcher.exec)
run:140, FileSystemWatchingBuildActionRunner (org.gradle.tooling.internal.provider)
run:41, BuildCompletionNotifyingBuildActionRunner (org.gradle.launcher.exec)
lambda$execute$0:40, RootBuildLifecycleBuildActionExecutor (org.gradle.launcher.exec)
apply:-1, RootBuildLifecycleBuildActionExecutor$$Lambda$296/0x0000000800fbb048 (org.gradle.launcher.exec)
run:122, DefaultRootBuildState (org.gradle.composite.internal)
execute:40, RootBuildLifecycleBuildActionExecutor (org.gradle.launcher.exec)
execute:58, InitDeprecationLoggingActionExecutor (org.gradle.internal.buildtree)
execute:40, DefaultBuildTreeContext (org.gradle.internal.buildtree)
lambda$execute$0:65, BuildTreeLifecycleBuildActionExecutor (org.gradle.launcher.exec)
apply:-1, BuildTreeLifecycleBuildActionExecutor$$Lambda$171/0x0000000800e32f08 (org.gradle.launcher.exec)
run:53, BuildTreeState (org.gradle.internal.buildtree)
execute:65, BuildTreeLifecycleBuildActionExecutor (org.gradle.launcher.exec)
call:61, RunAsBuildOperationBuildActionExecutor$3 (org.gradle.launcher.exec)
call:57, RunAsBuildOperationBuildActionExecutor$3 (org.gradle.launcher.exec)
execute:204, DefaultBuildOperationRunner$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:199, DefaultBuildOperationRunner$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
call:53, DefaultBuildOperationRunner (org.gradle.internal.operations)
call:73, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:57, RunAsBuildOperationBuildActionExecutor (org.gradle.launcher.exec)
lambda$execute$0:36, RunAsWorkerThreadBuildActionExecutor (org.gradle.launcher.exec)
create:-1, RunAsWorkerThreadBuildActionExecutor$$Lambda$168/0x0000000800e11160 (org.gradle.launcher.exec)
withLocks:249, DefaultWorkerLeaseService (org.gradle.internal.work)
runAsWorkerThread:109, DefaultWorkerLeaseService (org.gradle.internal.work)
execute:36, RunAsWorkerThreadBuildActionExecutor (org.gradle.launcher.exec)
execute:110, ContinuousBuildActionExecutor (org.gradle.tooling.internal.provider.continuous)
execute:64, SubscribableBuildActionExecutor (org.gradle.tooling.internal.provider)
execute:46, DefaultBuildSessionContext (org.gradle.internal.session)
apply:100, BuildSessionLifecycleBuildActionExecuter$ActionImpl (org.gradle.tooling.internal.provider)
apply:88, BuildSessionLifecycleBuildActionExecuter$ActionImpl (org.gradle.tooling.internal.provider)
run:69, BuildSessionState (org.gradle.internal.session)
execute:62, BuildSessionLifecycleBuildActionExecuter (org.gradle.tooling.internal.provider)
execute:41, BuildSessionLifecycleBuildActionExecuter (org.gradle.tooling.internal.provider)
execute:64, StartParamsValidatingActionExecuter (org.gradle.tooling.internal.provider)
execute:32, StartParamsValidatingActionExecuter (org.gradle.tooling.internal.provider)
execute:50, SessionFailureReportingActionExecuter (org.gradle.tooling.internal.provider)
execute:38, SessionFailureReportingActionExecuter (org.gradle.tooling.internal.provider)
execute:47, SetupLoggingActionExecuter (org.gradle.tooling.internal.provider)
execute:31, SetupLoggingActionExecuter (org.gradle.tooling.internal.provider)
doBuild:65, ExecuteBuild (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:39, WatchForDisconnection (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:29, ResetDeprecationLogger (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:35, RequestStopIfSingleUsedDaemon (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
create:78, ForwardClientInput$2 (org.gradle.launcher.daemon.server.exec)
create:75, ForwardClientInput$2 (org.gradle.launcher.daemon.server.exec)
swap:38, Swapper (org.gradle.util.internal)
execute:75, ForwardClientInput (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:64, LogAndCheckHealth (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
doBuild:63, LogToClient (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
doBuild:84, EstablishBuildEnvironment (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
run:52, StartBuildOrRespondWithBusy$1 (org.gradle.launcher.daemon.server.exec)
run:297, DaemonStateCoordinator$1 (org.gradle.launcher.daemon.server)
onExecute:64, ExecutorPolicy$CatchAndRecordFailures (org.gradle.internal.concurrent)
run:49, ManagedExecutorImpl$1 (org.gradle.internal.concurrent)
runWorker:1136, ThreadPoolExecutor (java.util.concurrent)
run:635, ThreadPoolExecutor$Worker (java.util.concurrent)
run:833, Thread (java.lang)
au...@google.com <au...@google.com> #17
There is also .cxx/structured-log
that is being read
au...@google.com <au...@google.com> #18
Also
../../out/androidx/appsearch/appsearch-local-storage/build/intermediates/cxx/AbiConfiguration_6x4t4x14_key.json
../../out/androidx/appsearch/appsearch-local-storage/build/intermediates/cxx/NdkLocatorRecord_433w5i5v_key.json
Description
DESCRIBE THE ISSUE IN DETAIL:
AGP cmake causes configuration cache invalidation.
STEPS TO REPRODUCE:
./gradlew zipTestConfigsWithApks
in the androidx project./gradlew zipTestConfigsWithApks
(second time)EXPECTED
Configuration cache is used the second time
ACTUAL
Configuration cache is not used the second time
It seems that AGP is checking for existence of this directory, thus making this an input to the configuration cache. As stuff is written to this directory, it invalidates the configuration cache.