dokka icon indicating copy to clipboard operation
dokka copied to clipboard

ReenteringLazyValueComputationException while dokkaHtml Android gradlew task

Open fanysoft opened this issue 1 year ago • 2 comments

Describe the bug While running gradlew command in Android Studios terminal - dokka Html task keeps crashing. Command ./gradlew sdk:dokkaHtml Task Progress in terminal

  1. Initializing plugins
  2. Dokka is performing: documentation for sdk
  3. Validity check
  4. Creating documentation models
  5. Crash `* What went wrong: Execution failed for task ':sdk:dokkaHtml'.

org.jetbrains.kotlin.util.ReenteringLazyValueComputationException (no error message)

  • Try:

Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sdk:dokkaHtml'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:140) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) 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:157)`

Expected behaviour Javadocs created by Dokka, meaning no crash during execution

Screenshots n-a

To Reproduce Steps to reproduce the behavior, ideally with an example project I can not share project.

  1. Import Dokka to project according to documentation
  2. Run gradlew task to generate Javadocs

Dokka configuration Configuration of dokka used to reproduce the bug

     Gradle 7.4.1

Installation

  • Operating system: Windows 11
  • Build tool: Gradle
  • Dokka version: 1.9.10

Additional context

Are you willing to provide a PR? no

fanysoft avatar Dec 12 '23 15:12 fanysoft

I do have the same issue happening from time to time

codlab avatar Jan 11 '24 10:01 codlab

I've faced the same cryptic issue and found a minimal working example:

SomeKotlinClass.kt

class SomeKotlinClass {
 val javaClassUsingThis = JavaClassUsingThis(this) // Dangerous to pass this during construction. In my production case unavoidable.
}

JavaClassUsingThis.java

class JavaClassUsingThis {

    SomeKotlinClass someKotlinClass;

    public JavaClassUsingThis(SomeKotlinClass someKotlinClass) {
        this.someKotlinClass = someKotlinClass;
    }
}

I've experimented for some time now and found that either a) converting the Java class to Kotlin or b) explicitly typing val javaClassUsingThis: JavaClassUsingThis = JavaClassUsingThis(this) serves as a workaround.

I suspect the type inference via Kotlin -> Java -> Kotlin with classes importing each other doesn't work properly.

LukasHenkeEPG avatar Mar 22 '24 14:03 LukasHenkeEPG