Gradle build delay of 20 seconds

Answered

I just started a new project as Kotlin - Console Application with Gradle Kotlin. This gives me a Hello World application. Latest Intellij, tried also EAP.

I noticed that building takes an enormous amount of time with about 21 seconds for each recompile while the gradle task is finished in 622 ms.

When I change the gradle settings "Use Gradle from "wrapper task" to "gradle-wrapper.properties file" the build is less than a second.

The build is successful, then the delay of around 20 seconds, then the task, see below.

Any idea what could cause the wrapper to wait?

13:40:44: Executing task ':classes'...

> Task :wrapper

BUILD SUCCESSFUL in 224ms
1 actionable task: 1 executed

*** here delay of 20 seconds  ***

> Task :compileKotlin
'compileJava' task (current target is 11) and 'compileKotlin' task (current target is 1.8) jvm target compatibility should be set to the same Java version.

> Task :compileJava NO-SOURCE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE

BUILD SUCCESSFUL in 622ms
1 actionable task: 1 executed
13:41:06: Task execution finished ':classes'.

 

0
5 comments

It is hard to say without profiling the process. Could you please take jstack dumps of the Gradle daemon process that IDE creates for the build? You can see the PID of the process using Help | Find Action and type Show Gradle daemons action:

In the dialog then you will see the PID:

Please take several jstack thread dumps (jstack is a JDK utility) of the process at the moment of the issue. Please make sure to use the correct daemon PID (there could be several of them). Please provide the thread dumps and IDE logs zipped (you can use Help | Collect Logs and Diagnostic Data action to collect the logs). Please also provide a sample project if available.

For uploading you can use https://uploads.jetbrains.com service. Thank you.

0

This seems to be an issue with gradle 7.x.

I repeatedly switched gradle versions. Switching to 6.9.1 solves the issue. Tried 7.1, 7.2, switching back and forth from 6.9. Happens with the 7.x versions only.

Find the dumps and logs here:

Upload id: 2021_11_01_GhDRW1mvMPtnNUMd (files: dump2.txt and 4 more)

0

Thanks. It is seen that Gradle is executing tasks related to file system synchronization:

"Daemon worker Thread 4" #1292 prio=5 os_prio=0 cpu=62.50ms elapsed=3.03s tid=0x0000000022f37000 nid=0xd1c runnable [0x000000002561c000]
java.lang.Thread.State: RUNNABLE
at net.rubygrapefruit.platform.internal.jni.PosixFileSystemFunctions.listFileSystems(Native Method)
at net.rubygrapefruit.platform.internal.PosixFileSystems.getFileSystems(PosixFileSystems.java:30)
at org.gradle.internal.watch.vfs.impl.DefaultWatchableFileSystemDetector.detectUnsupportedFileSystems(DefaultWatchableFileSystemDetector.java:60)
at org.gradle.internal.watch.registry.impl.WatchableHierarchies.invalidateUnsupportedFileSystems(WatchableHierarchies.java:125)
at org.gradle.internal.watch.registry.impl.WatchableHierarchies.removeUnwatchableFileSystems(WatchableHierarchies.java:114)
at org.gradle.internal.watch.registry.impl.WatchableHierarchies.removeUnwatchableContent(WatchableHierarchies.java:83)
at org.gradle.internal.watch.registry.impl.HierarchicalFileWatcherUpdater.buildFinished(HierarchicalFileWatcherUpdater.java:114)
at org.gradle.internal.watch.registry.impl.DefaultFileWatcherRegistry.buildFinished(DefaultFileWatcherRegistry.java:157)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$2.lambda$call$0(WatchingVirtualFileSystem.java:199)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$2$$Lambda$985/0x000000010098ec40.get(Unknown Source)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.withWatcherChangeErrorHandling(WatchingVirtualFileSystem.java:320)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.access$1000(WatchingVirtualFileSystem.java:53)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$2.call(WatchingVirtualFileSystem.java:199)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$2.call(WatchingVirtualFileSystem.java:179)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$$Lambda$95/0x000000010021d840.apply(Unknown Source)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.lambda$beforeBuildFinished$5(WatchingVirtualFileSystem.java:179)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$$Lambda$984/0x000000010098e840.apply(Unknown Source)
at org.gradle.internal.vfs.impl.VfsRootReference.update(VfsRootReference.java:40)
at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.beforeBuildFinished(WatchingVirtualFileSystem.java:179)
at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:94)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor$$Lambda$149/0x0000000100336c40.apply(Unknown Source)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:154)
at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:56)
at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor$$Lambda$96/0x000000010021dc40.apply(Unknown Source)
at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:56)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$$Lambda$95/0x000000010021d840.apply(Unknown Source)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:38)
at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor$$Lambda$94/0x000000010021e440.create(Unknown Source)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:211)
at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:38)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:103)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.lambda$execute$0(BuildSessionLifecycleBuildActionExecuter.java:56)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$$Lambda$87/0x000000010021f840.apply(Unknown Source)
at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:55)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:63)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.11/ThreadPoolExecutor.java:1128)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.11/ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
at java.lang.Thread.run(java.base@11.0.11/Thread.java:829)

Locked ownable synchronizers:
- <0x00000000e000f2f0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
- <0x00000000ef73c8e0> (a java.util.concurrent.ThreadPoolExecutor$Worker)

Do you have any network mounds? WSL projects? 

At this time does not look related to the IDE. Does it happen with any new minimal sample project for you? 

Have you tried the latest versions of 7.X Gradle? There were some related improvements: https://github.com/gradle/gradle/issues/16802

Do you have antivirus/firewall? Please try with it disabled or make sure that IDE settings directories IDE installation home and project files are excluded from the scan.

0

Indeed, I have a number of old network mounts, which do not produce a result. I also noticed that my archive disks are spinning up during build. I am really not a friend of software which searches all my drives, not sure what the reason for this behavior is.

Timing with a stopwatch resulted in around 20 seconds before the timeout kicks in. Your analysis is head on.

There is already a bug report on it
https://github.com/gradle/gradle/issues/17955

Solved:
gradle.properties

org.gradle.vfs.watch=true or false, both reduce the build time effectively

 

0

Thanks for the information!

0

Please sign in to leave a comment.