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

No builders are available to build a model of type 'com.microsoft.java.bs.gradle.model.GradleSourceSets'. #180

Open
jdneo opened this issue Aug 21, 2024 · 11 comments
Labels
bug Something isn't working

Comments

@jdneo
Copy link
Member

jdneo commented Aug 21, 2024

This error appears after we add #168 and #165

Need to figure out why it appears.

@jdneo jdneo added the bug Something isn't working label Aug 21, 2024
@jdneo
Copy link
Member Author

jdneo commented Aug 21, 2024

@Arthurm1 @Tanish-Ranjan If you think of any possibilities of the root cause, please let me know.

@Arthurm1
Copy link
Contributor

@jdneo I can't reproduce this. The latest develop branch builds and runs locally fine for me. I'm running on Windows 11, Gradle 8.10, JDK 21.

Do you have a test repo it doesn't work on?

The model is registered by the plugin so I can only think the plugin hasn't been applied to the project you're testing.
Is the init.gradle file being used?
How are you launching the server? I'm using...

"C:\\Program Files\\Java\\jdk-21\\bin\\java.exe",
    "--add-opens=java.base/java.lang=ALL-UNNAMED",
    "--add-opens=java.base/java.io=ALL-UNNAMED",
    "--add-opens=java.base/java.util=ALL-UNNAMED",
    "-Dplugin.dir=C:\\repos\\vscodebuildserverdeploy\\server\\plugins",
    "-cp",
    "C:\\repos\\vscodebuildserverdeploy\\server\\server.jar;C:\\repos\\vscodebuildserverdeploy\\server\\runtime\\*",
    "com.microsoft.java.bs.core.Launcher"

with init.gradle as....

      initscript {
        dependencies {
          classpath files('plugin.jar')
        }
      }
      allprojects {
        apply plugin: com.microsoft.java.bs.gradle.plugin.GradleBuildServerPlugin
      }

@Tanish-Ranjan
Copy link
Contributor

@Arthurm1 How are you launching the server?

I think this exception was collected from telemetry. The error message does seem to point that the ModelBuilder wasn't registered.

@jdneo
Copy link
Member Author

jdneo commented Aug 22, 2024

I have no idea how to reproduce it either. It shows in the BI that some sessions are failed due to this error. And I checked some earlier version but cannot observe this error.

@Arthurm1
Copy link
Contributor

Oh I see - you get this telemetry back from VSCode?

Does it give any exception stack trace or info on what gradle version, what OS, what JDK?

I guess no users have raised a github issue?

@jdneo
Copy link
Member Author

jdneo commented Aug 23, 2024

Oh I see - you get this telemetry back from VSCode?

Yes

Does it give any exception stack trace or info on what gradle version, what OS, what JDK?

Yes we have the stacktrace

"java.util.concurrent.CompletionException: java.lang.IllegalStateException: org.gradle.tooling.BuildActionFailureException: The supplied build action failed with an exception.
    at <REDACTED: user-file-path>(Unknown Source)
    at <REDACTED: user-file-path>(Unknown Source)
    at <REDACTED: user-file-path>$UniApply.tryFire(Unknown Source)
    at <REDACTED: user-file-path>$Completion.exec(Unknown Source)
    at <REDACTED: user-file-path>(Unknown Source)
    at <REDACTED: user-file-path>$WorkQueue.topLevelExec(Unknown Source)
    at <REDACTED: user-file-path>(Unknown Source)
    at <REDACTED: user-file-path>(Unknown Source)
    at <REDACTED: user-file-path>(Unknown Source)
Caused by: java.lang.IllegalStateException: org.gradle.tooling.BuildActionFailureException: The supplied build action failed with an exception.
    at com.microsoft.java.bs.core.internal.gradle.GradleApiConnector.getGradleSourceSets(GradleApiConnector.java:190)
    at com.microsoft.java.bs.core.internal.services.BuildTargetService.updateBuildTargets(BuildTargetService.java:118)
    at com.microsoft.java.bs.core.internal.services.BuildTargetService.getBuildTargetManager(BuildTargetService.java:125)
    at com.microsoft.java.bs.core.internal.services.BuildTargetService.getWorkspaceBuildTargets(BuildTargetService.java:166)
    at com.microsoft.java.bs.core.internal.server.GradleBuildServer.lambda$workspaceBuildTargets$2(GradleBuildServer.java:102)
    ... 7 more
Caused by: org.gradle.tooling.BuildActionFailureException: The supplied build action failed with an exception.
    at org.gradle.tooling.internal.consumer.connection.CancellableActionRunner.run(CancellableActionRunner.java:57)
    at org.gradle.tooling.internal.consumer.connection.AbstractConsumerConnection.run(AbstractConsumerConnection.java:69)
    at org.gradle.tooling.internal.consumer.connection.ParameterValidatingConsumerConnection.run(ParameterValidatingConsumerConnection.java:56)
    at org.gradle.tooling.internal.consumer.DefaultBuildActionExecuter$1.run(DefaultBuildActionExecuter.java:87)
    at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:143)
    at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
    at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:61)
    at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
    at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:67)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
    at <REDACTED: user-file-path>(Unknown Source)
    at <REDACTED: user-file-path>$Worker.run(Unknown Source)
    at <REDACTED: user-file-path>(Unknown Source)
    at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
    at org.gradle.tooling.internal.consumer.DefaultBuildActionExecuter.run(DefaultBuildActionExecuter.java:73)
    at com.microsoft.java.bs.core.internal.gradle.GradleApiConnector.getGradleSourceSets(GradleApiConnector.java:183)
    ... 11 more
Caused by: org.gradle.internal.operations.MultipleBuildOperationFailures: A build operation failed.
    No model of type 'GradleSourceSets' is available in this build.
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController.run(DefaultBuildController.java:142)
    at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter.run(NestedActionAwareBuildControllerAdapter.java:56)
    at com.microsoft.java.bs.gradle.model.actions.GetSourceSetsAction.fetchModels(GetSourceSetsAction.java:102)
    at com.microsoft.java.bs.gradle.model.actions.GetSourceSetsAction.execute(GetSourceSetsAction.java:41)
    at com.microsoft.java.bs.gradle.model.actions.GetSourceSetsAction.execute(GetSourceSetsAction.java:31)
    at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute(InternalBuildActionAdapter.java:65)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.runAction(AbstractClientProvidedBuildActionRunner.java:131)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.fromBuildModel(AbstractClientProvidedBuildActionRunner.java:104)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.fromBuildModel(AbstractClientProvidedBuildActionRunner.java:84)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator.fromBuildModel(DefaultBuildTreeModelCreator.java:57)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$fromBuildModel$2(DefaultBuildTreeLifecycleController.java:89)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$5(DefaultBuildTreeLifecycleController.java:113)
    at org.gradle.internal.model.StateTransitionController.lambda$transition$5(StateTransitionController.java:166)
    at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:247)
    at org.gradle.internal.model.StateTransitionController.lambda$transition$6(StateTransitionController.java:166)
    at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44)
    at org.gradle.internal.model.StateTransitionController.transition(StateTransitionController.java:166)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:110)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.fromBuildModel(DefaultBuildTreeLifecycleController.java:81)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction(AbstractClientProvidedBuildActionRunner.java:43)
    at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:48)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49)
    at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:65)
    at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:136)
    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.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:122)
    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:65)
    at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
    at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:65)
    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: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)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
    at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:36)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249)
    at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109)
    at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:36)
    at org.gradle.tooling.internal.provider.continuous.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:110)
    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$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:100)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:88)
    at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41)
    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:52)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:40)
    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:49)
Caused by: org.gradle.tooling.UnknownModelException: No model of type 'GradleSourceSets' is available in this build.
    at org.gradle.tooling.model.internal.Exceptions.unknownModel(Exceptions.java:57)
    at org.gradle.tooling.internal.consumer.connection.UnparameterizedBuildController.getModel(UnparameterizedBuildController.java:118)
    at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter.getModel(NestedActionAwareBuildControllerAdapter.java:32)
    at org.gradle.tooling.internal.consumer.connection.UnparameterizedBuildController.getModel(UnparameterizedBuildController.java:79)
    at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter.getModel(NestedActionAwareBuildControllerAdapter.java:32)
    at com.microsoft.java.bs.gradle.model.actions.GetSourceSetsAction$GetSourceSetAction.execute(GetSourceSetsAction.java:125)
    at com.microsoft.java.bs.gradle.model.actions.GetSourceSetsAction$GetSourceSetAction.execute(GetSourceSetsAction.java:116)
    at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter$1.get(NestedActionAwareBuildControllerAdapter.java:52)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController$NestedAction.run(DefaultBuildController.java:208)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildTreeModelController.runQueryModelActions(DefaultBuildTreeModelCreator.java:97)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController.run(DefaultBuildController.java:129)
    ... 87 more
Caused by: org.gradle.tooling.provider.model.UnknownModelException: No builders are available to build a model of type 'com.microsoft.java.bs.gradle.model.GradleSourceSets'.
    at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry.get(DefaultToolingModelBuilderRegistry.java:166)
    at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry.locateForClientOperation(DefaultToolingModelBuilderRegistry.java:121)
    at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry.locateForClientOperation(DefaultToolingModelBuilderRegistry.java:97)
    at org.gradle.internal.build.DefaultBuildToolingModelController$ProjectToolingScope.locateBuilder(DefaultBuildToolingModelController.java:131)
    at org.gradle.internal.build.DefaultBuildToolingModelController$AbstractToolingScope.getModel(DefaultBuildToolingModelController.java:80)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getModel(DefaultBuildController.java:106)
    at org.gradle.tooling.internal.consumer.connection.ParameterAwareBuildControllerAdapter.getModel(ParameterAwareBuildControllerAdapter.java:40)
    at org.gradle.tooling.internal.consumer.connection.UnparameterizedBuildController.getModel(UnparameterizedBuildController.java:116)
    ... 96 more
"

I guess no users have raised a github issue?

So far, no.

@Arthurm1
Copy link
Contributor

Possibly an installation issue. SourceSetsModelBuilder used to return GradleSourceSetsMetadata.class for canBuild and is now returning GradleSourceSets.class.

Maybe the old plugin.jar was still loaded by Gradle and so it could not find a model builder for GradleSourceSets as GradleSourceSetsMetadata was being registered 🤷

If this is so then it would be fixed by killing Gradle and restarting. Then I guess no one would report the problem.

I wonder if versioning these jars e.g. plugin-0.5.0.jar and publishing them to the Gradle portal would prevent this.

@Tanish-Ranjan
Copy link
Contributor

Maybe the old plugin.jar was still loaded by Gradle and so it could not find a model builder for GradleSourceSets as GradleSourceSetsMetadata was being registered 🤷

I don't understand. So somehow after the pre-release installation the old plugin was still loaded in gradle? But the new plugin should have added the model builder for GradleSourceSets, in which case it shouldn't have thrown the error.

@jdneo
Copy link
Member Author

jdneo commented Aug 26, 2024

I wonder if versioning these jars e.g. plugin-0.5.0.jar and publishing them to the Gradle portal would prevent this.

This a good point, even if we do not publishing them to Gradle portal, we should add version number to it

@Arthurm1
Copy link
Contributor

I don't understand. So somehow after the pre-release installation the old plugin was still loaded in gradle? But the new plugin should have added the model builder for GradleSourceSets, in which case it shouldn't have thrown the error.

I'm just guessing that the Gradle daemon keeps plugin classes loaded so if a new plugin.jar is released then Gradle won't reload it until the daemons are killed. But I don't know this for sure. I just think that if the plugin had failed to apply then there would be a different error and if it has been applied then the only way that GradleSourceSets couldn't be found is if it was still registering GradleSourceSetsMetadata

@jdneo
Copy link
Member Author

jdneo commented Aug 28, 2024

I tried to add version number to plugin.jar in #186 and made a pre-release last night.

There are still one session have this error.

Since that the stable release 3.16.4 has released for very long time and till now there is no one session has this error, I think maybe plugin version is not the cause.

From another perspective, when GradleSourceSetsMetadata was introduced earlier, the plugin.jar also didn’t have version information. However, no such errors appeared in the telemetry, indicating that the issue might not be related to the version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants