Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WSL2] Gradle build on Windows fail for project located on WSL filesystem due to filesystem lock issue. #4309

Closed
bbhopesh opened this issue Jul 16, 2019 · 8 comments

Comments

@bbhopesh
Copy link

bbhopesh commented Jul 16, 2019

Please fill out the below information:

  • Your Windows build number: (Type ver at a Windows Command Prompt)
    Microsoft Windows [Version 10.0.18936.1000]

  • What you're doing and what's happening: (Copy&paste the full set of specific command-line steps necessary to reproduce the behavior, and their output. Include screen shots if that helps demonstrate the problem.)
    A Gradle based Java project is located on WSL2 filesystem as I needed to share it between some Windows and Linux tools. WSL2 filesystem is mapped as a network drive on Windows and I use project with IntelliJ idea for Windows. The Gradle build fails due to a filesystem lock issue both inside IntelliJ and also from PowerShell command line. As a workaround, I had to move project to /mnt/c/
    Gradle version is 4.10.1
    Java version: Tried with Java8 and Java12. Build fails with both.

  • What's wrong / what should be happening instead:
    The Gradle build should succeed. Basic error stacktrace is shown here. I am attaching detailed gradle logs as file.

./gradlew.bat : 
At line:1 char:1
+ ./gradlew.bat --stacktrace 2>&1 >> gradlelogs1.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
FAILURE: 
Build failed with an exception.




* What went wrong:


Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().


> 
Could not create service of type FileHasher using BuildSessionScopeServices.createFileSnapshotter().




* Try:


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



* Exception is:


org.gradle.internal.service.ServiceCreationException: Could not create service of type ScriptPluginFactory using 
BuildScopeServices.createScriptPluginFactory().


	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:823)


	at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:774)


	at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.
java:568)


	at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:625)


	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:787)


	at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:773)


	at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.
java:568)


	at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:625)


	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:787)


	at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:773)


	at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.
java:568)


	at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:625)


	at org.gradle.internal.service.DefaultServiceRegistry.find(DefaultServiceRegistry.java:292)


	at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:281)
	at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:276)


	at org.gradle.initialization.DefaultGradleLauncherFactory.doNewInstance(DefaultGradleLauncherFactory.java:172)


	at org.gradle.initialization.DefaultGradleLauncherFactory.newInstance(DefaultGradleLauncherFactory.java:99)


	at org.gradle.composite.internal.DefaultRootBuildState.<init>(DefaultRootBuildState.java:46)


	at org.gradle.composite.internal.DefaultIncludedBuildRegistry.addRootBuild(DefaultIncludedBuildRegistry.java:85)


	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)


	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)


	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)


	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)


	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)


	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)


	at 
org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)


	at 
org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)


	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.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBu
ildActionExecuter.java:43)


	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBu
ildActionExecuter.java:29)


	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecute
r.java:59)


	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecute
r.java:31)


	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExe
cuter.java:59)


	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExe
cuter.java:44)


	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)


	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)

	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)

	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)


	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)


	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)


	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)


	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)


	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)


	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)


	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)

	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)


	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)


	at org.gradle.util.Swapper.swap(Swapper.java:38)


	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)


	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)


	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)


	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)


	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)


	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.internal.service.ServiceCreationException: Could not create service of type FileHasher using 
BuildSessionScopeServices.createFileSnapshotter().
	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:823)
	at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:774)
	at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.
java:568)
	at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:625)
	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:787)
	at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:773)
	at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.
java:568)
	at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:625)
	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:787)
	at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:773)
	at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.
java:568)
	at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:625)
	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:787)
	at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:773)
	at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.
java:568)
	at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:625)
	at org.gradle.internal.service.DefaultServiceRegistry.find(DefaultServiceRegistry.java:292)
	at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:281)
	at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:276)
	at org.gradle.internal.service.scopes.BuildScopeServices.defaultScriptPluginFactory(BuildScopeServices.java:318)
	at org.gradle.internal.service.scopes.BuildScopeServices.createScriptPluginFactory(BuildScopeServices.java:310)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35)
	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:821)
	... 63 more
Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: Incorrect function
	at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedExc
eption.java:57)
	at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:40)
	at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:110)
	at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.incrementLockCount(LockOnDemandCrossProcessCacheAcces
s.java:106)
	at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.acquireFileLock(LockOnDemandCrossProcessCacheAccess.j
ava:165)
	at org.gradle.cache.internal.DefaultCacheAccess.onStartWork(DefaultCacheAccess.java:368)
	at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:213)
	at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:203)
	at org.gradle.cache.internal.DefaultCacheAccess.newCache(DefaultCacheAccess.java:298)
	at org.gradle.cache.internal.DefaultCacheAccess.newCache(DefaultCacheAccess.java:57)
	at org.gradle.cache.internal.DefaultPersistentDirectoryStore.createCache(DefaultPersistentDirectoryStore.java:160)
	at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.createCache(DefaultCacheFactory.java:185)
	at org.gradle.api.internal.changedetection.state.CrossBuildFileHashCache.createCache(CrossBuildFileHashCache.java:60)
	at org.gradle.api.internal.changedetection.state.CachingFileHasher.<init>(CachingFileHasher.java:45)
	at 
org.gradle.internal.service.scopes.BuildSessionScopeServices.createFileSnapshotter(BuildSessionScopeServices.java:161)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35)
	at 
org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:821)
	... 86 more
Caused by: java.io.IOException: Incorrect function
	at org.gradle.cache.internal.filelock.LockStateAccess.tryLock(LockStateAccess.java:91)
	at org.gradle.cache.internal.filelock.LockFileAccess.tryLockState(LockFileAccess.java:85)
	at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock$4.run(DefaultFileLockManager.java:350)
	at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock$4.run(DefaultFileLockManager.java:344)
	at org.gradle.cache.internal.DefaultFileLockManager$ExponentialBackoff.retryUntil(DefaultFileLockManager.java:412)
	at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.lockStateRegion(DefaultFileLockManager.java:344)
	at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.lock(DefaultFileLockManager.java:288)
	at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.<init>(DefaultFileLockManager.java:161)
	at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:107)
	... 101 more


* Get more help at https://help.gradle.org

BUILD FAILED in 1s

gradlelogs.txt

@bbhopesh bbhopesh changed the title [WSL2] Gradle build on Windows fail for project located on WSL filesystem. [WSL2] Gradle build on Windows fail for project located on WSL filesystem due to filesystem lock issue. Jul 17, 2019
@lzlrd
Copy link

lzlrd commented Jul 20, 2019

IIRC Microsoft advises using shared files on a Windows drive. You can create a case-sensitive directory as per here.

There are caveats to this tho, such as aux.c file naming issue.

I'd like to ask what path are you using to try access to WSL1/2 FS? \\wsl$ (AKA using the 9P server) or directly via %localappdata%/<pathtodirectvhdx/files>? The latter was unadvised by Microsoft and said to cause issues.

@toshiSat
Copy link

I'm getting the same errors using a mapped drive to access WSL2 \wsl$

@marcelofrau
Copy link

Any solution on this? I was trying to use gradle from windows side (in intellij ide) and I have the same result, I have tried to create a link with mklink and it also didn't worked. Looking the java stacktrace it tried to lock the file, but inside a linux filesystem you don't have a lock on files, that's why the exception is occurring I guess.. I am on Windows 1909 and using Ubuntu 20.04.. So still on WSL1 but the problem also occur here.. Any ideas apart from using the %localappdata% unadvised solution?

@dagguh
Copy link

dagguh commented Jan 18, 2021

Caused by #5762 ?

@javiercornejo
Copy link

Exactly same here also with WSL2

@dweerd
Copy link

dweerd commented Sep 28, 2021

@marcelofrau as mentioned in the opening post, you can work around it by moving your project to (some folder inside) /mnt/c/. Having the project there caused a new issue for me - file ownership etc. was no longer working as on linux. I used this solution to fix that: https://stackoverflow.com/a/63710590/125661

@gavenkoa
Copy link

Originally I described the problem here: https://stackoverflow.com/questions/47143864/running-gradle-to-start-a-docker-container-that-will-mount-the-current-directory/72602415#72602415

I tried to share Windows & WSL 1 ~/.gradle to save space through the WSL 1 symlink to Windows GRADLE_USER_HOME =
c:/srv/gradle.

Removal of the simlink solved the problem for me.

Another approach could be with the option:

-g, --gradle-user-home             Specifies the gradle user home directory.

to move to the FS with full lock capabilities.

Copy link
Contributor

This issue has been automatically closed since it has not had any activity for the past year. If you're still experiencing this issue please re-file this as a new issue or feature request.

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants