Skip to content

Fix ConcurrentModificationException in AndroidTransform.simplify - #1773

Merged
autonomousapps merged 1 commit into
autonomousapps:mainfrom
SubhrajyotiSen:android-transform-concurrent-modification-exception
Jul 15, 2026
Merged

Fix ConcurrentModificationException in AndroidTransform.simplify#1773
autonomousapps merged 1 commit into
autonomousapps:mainfrom
SubhrajyotiSen:android-transform-concurrent-modification-exception

Conversation

@SubhrajyotiSen

@SubhrajyotiSen SubhrajyotiSen commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

When adding the v3.16.1 version of the plugin to a private Android project, running ./gradlew :buildHealth leads to the following exception:

Caused by: java.util.ConcurrentModificationException
        at com.autonomousapps.internal.transform.AndroidTransform.simplify(AndroidTransform.kt:522)
        at com.autonomousapps.internal.transform.AndroidTransform.reduce(AndroidTransform.kt:112)
        at com.autonomousapps.tasks.DependencyAdviceBuilder.computeDependencyAdvice$lambda$1(ComputeAdviceTask.kt:353)
        at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:363)
        at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:351)
        at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:247)
        at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:202)
        at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:227)
        at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:356)
        at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:351)
        at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:806)
        at kotlin.sequences.SequencesKt___SequencesJvmKt.toSortedSet(_SequencesJvm.kt:49)
        at com.autonomousapps.tasks.DependencyAdviceBuilder.<init>(ComputeAdviceTask.kt:326)
        at com.autonomousapps.tasks.ComputeAdviceTask$ComputeAdviceAction.execute(ComputeAdviceTask.kt:220)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:64)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:61)
        at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:61)
        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:210)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:205)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:54)
        at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:58)
        at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:191)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$500(DefaultConditionalExecutionQueue.java:112)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:168)
        at org.gradle.internal.Factories$1.create(Factories.java:30)
        at org.gradle.internal.work.DefaultWorkerLeaseService.lambda$withLocksAcquired$0(DefaultWorkerLeaseService.java:280)
        at org.gradle.internal.work.ResourceLockStatistics$1.measure(ResourceLockStatistics.java:43)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocksAcquired(DefaultWorkerLeaseService.java:278)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:270)
        at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:129)
        at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:134)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:163)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:125)
        ... 2 more

The exact fix is a copy of the existing fix for a similar issue - https://github.com/autonomousapps/dependency-analysis-gradle-plugin/pull/1762/changes

@SubhrajyotiSen
SubhrajyotiSen force-pushed the android-transform-concurrent-modification-exception branch from 1a56f1f to b6ceb53 Compare July 14, 2026 22:03

@autonomousapps autonomousapps left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this!

@autonomousapps
autonomousapps merged commit 2f9ed54 into autonomousapps:main Jul 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants