Skip to content
This repository has been archived by the owner on Aug 10, 2022. It is now read-only.

Randomly Hangs Forever #144

Open
jeb2239 opened this issue Aug 18, 2017 · 27 comments
Open

Randomly Hangs Forever #144

jeb2239 opened this issue Aug 18, 2017 · 27 comments

Comments

@jeb2239
Copy link

jeb2239 commented Aug 18, 2017

./gradlew go:build
Starting a Gradle Daemon (subsequent builds will be faster)

Configure project :go
Found go 1.8.3 in /home/username/go/bin/go, use it.
<=============> 100% CONFIGURING [3s]
IDLE
<=============> 100% CONFIGURING [1m 9s]

It also make no progress. Has this happened to anyone?

@blindpirate
Copy link
Member

blindpirate commented Aug 18, 2017

Nope, it's the first time I see this problem. Some questions:

  • Gradle version?
  • Gogradle version?
  • OS environment?
  • Is it a multi-project?
  • Since it hangs in configuration phase, do you have any other logic in build.gradle
  • How frequent does it hang?

My advice:

  • Remove all logic except apply plugin logic in build.gradle
  • turn on --debug and show me the log
  • If you can provide a minimum reproducible example, I would appreciate it.

@jeb2239
Copy link
Author

jeb2239 commented Aug 18, 2017

gradle is 4.1

gogradle is 0.7 most recent

OS is redhat linux 6.8

yes there is a scala project and go project

go
│   ├── bin
│   │   └── govendor
│   ├── build.gradle
│   └── src
│   └── nova
│   ├── apps
│   │   ├── example
│   │   │   ├── configExample.go
│   │   │   ├── loggerExample.go
│   │   │   └── mcastReader.go
│   │   ├── meService
│   │   │   └── meService.go
| ----common

@jeb2239
Copy link
Author

jeb2239 commented Aug 18, 2017

Also what is this packagePath. I don't understand what its purpose is

plugins {
    id 'com.github.blindpirate.gogradle' version '0.7.0'
}


golang {
    packagePath = 'github/myproject' // go import path of project to be built, NOT local file system path!
}

@jeb2239
Copy link
Author

jeb2239 commented Aug 18, 2017

Like what does this happen

* What went wrong:
Execution failed for task ':go:resolveBuildDependencies'.
> Exception in resolution, message is:
  Cannot recognized package: nova/common/config
  Resolution stack is:
  +- github/mypacj



@blindpirate
Copy link
Member

Well... I highly recommend you to take a look at the doc, which tells you what is golang package.

Anyway, is the project structure that you pasted root project or just a sub project? Please see java and go mixed example as an example.

Please let me know if there's anything not clear.

@jeb2239
Copy link
Author

jeb2239 commented Aug 18, 2017

does one app execuable = one project?

@blindpirate
Copy link
Member

A go project can produce mutiple app executable, but don't mix scala code and go code in one project (i.e. apply both golang and scala plugin in one project).

@jeb2239
Copy link
Author

jeb2239 commented Aug 18, 2017

yes so my top level build.gradle is actually empty and there are two top level folders one is named go and the other is named scala

@blindpirate
Copy link
Member

ok, I guess I know what bothers you. Where does nova/common/config emerge and what's your expectation of this package?

@jeb2239
Copy link
Author

jeb2239 commented Aug 18, 2017

so if I navigate into the go directory i have three folders

bin (pre-gogradle) , src (pre-gogradle) , vendor (this was generated by gogradle) , also I have build.gradle

plugins {
    id 'com.github.blindpirate.gogradle' version '0.7.0'
}


golang {
    packagePath = 'nova' // go import path of project to be built, NOT local file system path!
}
dependencies {
    golang {
        build name:'github.com/DisposaBoy/JsonConfigReader'
        build name:'github.com/denisenkom/go-mssqldb'
        build name:'github.com/gorilla/mux'
        build name:'github.com/sirupsen/logrus'
        build name: 'nova/apps/example'
        
    }
}

then i go into src directory
there is
nova/apps/example/configExample.go
nova/common/config/jsonconfig.go
nova/framework/data/data.go
nova/vendor/vendor.json <--- this was pre gogradle , we are currently using govender.

@blindpirate
Copy link
Member

The project structure you pasted previously is such a mess...

Actually, your structure should be:

go
├── build.gradle
├── apps
├── common
└── framework

And in your build.gradle:

golang {
    packagePath = 'nova'
}

However, you really need to read https://golang.org/doc/code.html first.

@blindpirate
Copy link
Member

And try to make it work in single project, then integrate it with your scala project.

@jeb2239
Copy link
Author

jeb2239 commented Aug 21, 2017

So I read more about go and made this project https://github.com/jeb2239/practice_go . Some things I don't understand is why does there need to a separated directory for each main.go file . Also I still don't understand how this system can be used to build multiple binaries even when I explicitly have 2 go build commands it only makes one of the binaries. Thank you so much for your help!

@blindpirate
Copy link
Member

First question, that behavior is determined by go build command. There should be one main package for each executable.

Second question, for the moment, you need to use the following build.gradle to achieve your goal:

plugins {
    id 'com.github.blindpirate.gogradle' version '0.7.0'

}

golang {
    packagePath = 'nova' // go import path of project to be built, NOT local file system path!
}

task build2(type: com.github.blindpirate.gogradle.Go){
    go 'build -o exampleTwo  nova/apps/example/exampleTwo'
}

build {
    dependsOn build2
    go 'build -o mainExample nova/apps/example/mainExample'
}

The reason is only one command is allowed in build task. So the latter overwrote the former. I should improve it in next release.

@jeb2239
Copy link
Author

jeb2239 commented Aug 22, 2017

why do we need .gogradle and the symlink - this seems to be a gogradle specific requirement.
Ideal situation would be to have src/nova/apps .

@blindpirate
Copy link
Member

blindpirate commented Aug 22, 2017

The symlink is not necessary.

If you confrom to golang's standard structure and have everything under GOPATH, the symlink won't be created. But in this way, it's hard to integrate it into your scala project.

As for .gogradle, it's just a directory to store some temp files, just like .gradle, .idea.

@jeb2239
Copy link
Author

jeb2239 commented Aug 23, 2017

Also why does gogradle resolve dependencies from the latest commit even when a specific commit is requested.

Resolving cached github.com/denisenkom/go-mssqldb: commit='fbf0a491e5ec011522c8870da9b0553135e2f9da', urls=[https://github.com/denisenkom/go-mssqldb.git, git@github.com:denisenkom/go-mssqldb.git]
Resolving cached github.com/gorilla/handlers: commit='a4d79d4487c2430a17d9dc8a1f74d1a6ed6908ca', urls=[https://github.com/gorilla/handlers.git, git@github.com:gorilla/handlers.git]
Resolving cached github.com/gorilla/mux: commit='4c1c3952b7d9d0a061a3fa7b36fd373ba0398ebc', urls=[https://github.com/gorilla/mux.git, git@github.com:gorilla/mux.git]
Resolving cached github.com/sirupsen/logrus: commit='5e5dc898656f695e2a086b8e12559febbfc01562', urls=[https://github.com/sirupsen/logrus.git, git@github.com:sirupsen/logrus.git]
Resolving cached golang.org/x/crypto: commit='8e06e8ddd9629eb88639aba897641bff8031f1d3', urls=[https://go.googlesource.com/crypto]
//=========== why is this here ===>
Resolving golang.org/x/crypto: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/crypto]
Resolving golang.org/x/sys: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/sys]
Resolving github.com/gorilla/context: commit='LATEST_COMMIT', urls=[https://github.com/gorilla/context.git, git@github.com:gorilla/context.git]
Resolving github.com/Sirupsen/logrus: commit='LATEST_COMMIT', urls=[https://github.com/Sirupsen/logrus.git, git@github.com:Sirupsen/logrus.git]
Resolving gopkg.in/gemnasium/logrus-airbrake-hook.v2: commit='LATEST_COMMIT', urls=[https://gopkg.in/gemnasium/logrus-airbrake-hook.v2]
Resolving github.com/sirupsen/logrus: commit='LATEST_COMMIT', urls=[https://github.com/sirupsen/logrus.git, git@github.com:sirupsen/logrus.git]
Resolving cached golang.org/x/crypto: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/crypto]
Resolving cached golang.org/x/sys: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/sys]
Resolving cached github.com/sirupsen/logrus: commit='LATEST_COMMIT', urls=[https://github.com/sirupsen/logrus.git, git@github.com:sirupsen/logrus.git]
Resolving gopkg.in/airbrake/gobrake.v2: commit='LATEST_COMMIT', urls=[https://gopkg.in/airbrake/gobrake.v2]
Resolving golang.org/x/net: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/net]
Resolving cached golang.org/x/crypto: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/crypto]
Resolving golang.org/x/text: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/text]
Resolving golang.org/x/tools: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/tools]
Resolving cached golang.org/x/net: commit='LATEST_COMMIT', urls=[https://go.googlesource.com/net]

@minid33
Copy link

minid33 commented Aug 24, 2017

I'm also getting problems like this after running ./gradlew build and ./gradlew vendor This last section of logs, that is repeated, repeats forever.

The progress indicator locks at <=============> 100% CONFIGURING [4m 35s] and states that the thread is IDLE.

16:20:20.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.resolveBuildDependencies' rule action copyToTaskContainer
16:20:20.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.resolveBuildDependencies using copyToTaskContainer
16:20:20.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.resolveBuildDependencies' to state Initialized.
16:20:20.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.resolveBuildDependencies' to state Mutated.
16:20:20.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.resolveBuildDependencies' to state Finalized.
16:20:20.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.resolveBuildDependencies' to state SelfClosed.
16:20:20.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.resolveBuildDependencies' to state GraphClosed.
16:20:25.427 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
16:20:25.432 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
16:20:25.433 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
16:20:25.433 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
16:20:25.433 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
16:20:25.434 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
16:20:25.434 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
16:20:35.427 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
16:20:35.427 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
16:20:35.428 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
16:20:35.428 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
16:20:35.428 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
16:20:35.428 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
16:20:35.428 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
16:20:45.427 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running

Versions:

------------------------------------------------------------
Gradle 4.1
------------------------------------------------------------

Build time:   2017-08-07 14:38:48 UTC
Revision:     941559e020f6c357ebb08d5c67acdb858a3defc2

Groovy:       2.4.11
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_73 (Oracle Corporation 25.73-b02)
OS:           Mac OS X 10.12.5 x86_64

Seems like there are no more logs after 16:28:57.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.resolveBuildDependencies' to state GraphClosed. when executing ./gradlew --debug -Dorg.gradle.daemon=false build -Dgogradle.mode=DEV

This problem also exists in 0.6.5 but not 0.5.4.

@blindpirate
Copy link
Member

blindpirate commented Aug 24, 2017

@jeb2239 The reason why the latest commit is resolved is that it's someone's transitive dependency. "Resolve" means fetching the metadata and resolving conflict. In this case, you specify a commit, but transitive dependencies includes another version (latest commit), so both will be "resolved" and the latest one will be discarded (See here for conflict resolution strategy). And you can use ./gradlew dependencies to see the dependency tree.

Could you take a look at the final version installed into vendor, is it the correct version (the commit you specified)?

@blindpirate
Copy link
Member

blindpirate commented Aug 24, 2017

@minid33 Does this occur every time? Would you like to try the latest 0.7.0?

I can't find any issue in the log you pasted, so it would be great if you could give me a sample to reproduce it.

@minid33
Copy link

minid33 commented Aug 25, 2017

Without failure @blindpirate, I first encountered this in latest 0.7.0 which I why I went back to see when it didn't exist.

This is a copy of our build.gradle after running gradle init and a few tweaks.

plugins {
    id 'com.github.blindpirate.gogradle' version '0.7.0'
}

golang {
    packagePath = 'company.com/company/product-name/main'
}

repositories {
    golang {
        root ~/git\.company\.com\/company\/[\w-]+/
        vcs 'git'
        url { 
            "ssh://git@company.com/company/${it.split('/')[2]}" 
        }
        
    }
    golang {
        root 'appengine'
        emptyDir()
    }
}

 dependencies {
    golang {
        some mix of many lines like 
        build name:'company.com/company/client/stuff', version:'HEAD', transitive:false
        build name:'github.com/person/project', 
        version:'<commitsha>', transitive:false
        etc
    }
}

@blindpirate
Copy link
Member

build.gradle looks correct. Do you mind pasting the whole debug log to somewhere like gist.github.com so that I can take a look at it? Of course, you can remove the confidential information.

@minid33
Copy link

minid33 commented Aug 25, 2017

I read the whole log and I guess this is what you're looking for...

java.io.UncheckedIOException: java.io.IOException: Cannot run program "/usr/bin/go": error=2, No such file or directory
        at com.github.blindpirate.gogradle.util.ProcessUtils.run(ProcessUtils.java:95)
        at com.github.blindpirate.gogradle.util.ProcessUtils.run(ProcessUtils.java:72)
        at com.github.blindpirate.gogradle.crossplatform.DefaultGoBinaryManager.tryInvokeGoVersion(DefaultGoBinaryManager.java:213)
        at com.github.blindpirate.gogradle.crossplatform.DefaultGoBinaryManager.findGoBinAndVersionHost(DefaultGoBinaryManager.java:203)
        at com.github.blindpirate.gogradle.crossplatform.DefaultGoBinaryManager.determineGoBinaryAndVersion(DefaultGoBinaryManager.java:139)
        at com.github.blindpirate.gogradle.crossplatform.DefaultGoBinaryManager.resolveIfNecessary(DefaultGoBinaryManager.java:125)
        at com.github.blindpirate.gogradle.crossplatform.DefaultGoBinaryManager.getBinaryPath(DefaultGoBinaryManager.java:105)
        at com.github.blindpirate.gogradle.task.go.Gofmt.getGofmtPath(Gofmt.java:53)
        at com.github.blindpirate.gogradle.task.go.Gofmt.afterEvaluate(Gofmt.java:48)
        at com.github.blindpirate.gogradle.GolangPlugin.afterEvaluate(GolangPlugin.java:109)
        at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
        at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy23.afterEvaluate(Unknown Source)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:75)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:69)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100(LifecycleProjectEvaluator.java:33)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureProject.run(LifecycleProjectEvaluator.java:103)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:49)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:651)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:133)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:246)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
        at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:165)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:124)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:107)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:45)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
        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:71)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:51)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
        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(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:58)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:33)
        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:120)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        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:120)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        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:120)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Cannot run program "/usr/bin/go": error=2, No such file or directory
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
        at com.github.blindpirate.gogradle.util.ProcessUtils.run(ProcessUtils.java:93)
        ... 106 more
Caused by: java.io.IOException: error=2, No such file or directory
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:248)
        at java.lang.ProcessImpl.start(ProcessImpl.java:134)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
        ... 107 more

This is a golang install using brew install go and after updating from 1.8 to 1.9 it made no difference.

This is when GOPATH=/Users/minid33/golang and GOROOT=/usr/local/opt/go/libexec are set as env vars and unset

@minid33
Copy link

minid33 commented Aug 25, 2017

looks like resolveIfNecessary() or something further down the chain needs to either accept the GOEXE env var (it probably should even if this isn't the fix) or the path resolution for macs needs to be fixed, for me it's /usr/local/bin/go after installing with go, it cannot be sim linked because of mac security.

Full logs are here:
https://gist.github.com/minid33/786dd36622f46279d882686b47940b07

@blindpirate
Copy link
Member

Not really. Gogradle will try to access all path in PATH to find a local go executable, and that's why this error emerges in the debug log. You can find a line in your log:

13:05:45.949 [QUIET] [com.github.blindpirate.gogradle.crossplatform.DefaultGoBinaryManager] Found go 1.8.3 in /usr/local/bin/go, use it.

So that's definitely not the problem.

However, after examining you log, it hangs in resolveTestDependencies task, which is maybe where the potential bug happens. I need your help to narrow down the location.

  • First, please run gradle clean before gradle vendor and see if it still happens.
  • If yes, remove the vendor directory and run gradle vendor and see if it still happens.
  • If yes, try to comment all the test dependencies in you build.gradle and see if it still happens.

Thanks a lot.

@minid33
Copy link

minid33 commented Aug 28, 2017

clean before vendor doesn't change the outcome.

the .gogradle/ folder is empty after gradle clean, I erased it and ran again and had the same results.

There are no test dependencies in this build.gradle file. There never have been, I think this is the default behaviour of gradle init

changed a build dependency to a test dependency and also had the same results.

@blindpirate
Copy link
Member

Thanks for the response. That's weird, do you have gogradle.lock in your project? If there's no test dependencies at all, I have no idea about why it's stuck at resolveTestDependencies.

Now could you please remove all build dependencies in build.gradle and retry? Or maybe you can remove stuff in build.gradle gradually to find which part of build.gradle caused this problem?

I really want a sample which I can run in my machine to reproduce it if possible.

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

No branches or pull requests

3 participants