dependency-analysis-gradle-plugin
dependency-analysis-gradle-plugin copied to clipboard
FileNotFoundException when running running buildHealth after deleting a file
Plugin version 2.6.0
Gradle version 8.11.1
JDK version 22
(Optional) Kotlin and Kotlin Gradle Plugin (KGP) version 2.1.0
(Optional) Android Gradle Plugin (AGP) version 8.7.3
Describe the bug
If I run buildHealth, then delete a file, then run buildHealth again, I get a FileNotFoundException. If I run buildHealth --no-configuration-cache then it succeeds (but running again without --no-configuration-cache continues to fail until presumably the configuration cache is invalidated).
java.io.FileNotFoundException: /home/eli/workspace/my-app/library/src/main/kotlin/com/myapp/DeviceType.kt (No such file or directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:152)
at com.autonomousapps.internal.parse.SourceListener$Companion.newSimpleParser(SourceListener.kt:39)
at com.autonomousapps.internal.parse.SourceListener$Companion.parseSourceFileForImports(SourceListener.kt:33)
at com.autonomousapps.tasks.SourceExploder.explode(CodeSourceExploderTask.kt:119)
at com.autonomousapps.tasks.CodeSourceExploderTask$CodeSourceExploderWorkAction.execute(CodeSourceExploderTask.kt:87)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
at org.gradle.internal.Factories$1.create(Factories.java:31)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
... 5 more
Thanks for the report. You're just deleting a normal Kotlin source file, it looks like? Is this an Android app?
Yes, just deleted a regular Kotlin source file, and it's an Android app.
This also happens when renaming a file.
Is it worth adding a workaround to check for the file's existence, just so the issue stops happening, and then try and figure out the underlying cache issue later?
In my debugging, I've discovered that this is only an issue with Android projects. JVM projects work fine without these changes. Something to do with this code.
Yes I forgot to call that out in the PR. I was only able to get failing tests on Android.