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

IllegalArgumentException in ProxyFactory: java.lang.Throwable is not an interface #29

Closed
lukasgraef opened this issue Apr 16, 2024 · 7 comments · Fixed by #30
Closed
Assignees

Comments

@lukasgraef
Copy link

Hey @pshevche,

thanks a lot for your fix for issue #24. I tried out the version 1.0.1 that you published today and I unfortunately encountered another Exception.
This only happens in case of a failing build, the exception does not occur in case of a successful build.
It seems like the ProxyFactory tries to create a proxy instance for a java.lang.Throwable.


Full Stacktrace:

java.lang.RuntimeException: Failed to invoke public abstract java.lang.Throwable com.gradle.scan.plugin.BuildResult.getFailure() on com.gradle.scan.plugin.internal.service.d$$Lambda$2029/0x00000271a0887520@73c5d7c1 with args null
        at com.gradle.develocity.agent.gradle.adapters.internal.ProxyFactory$ProxyingInvocationHandler.invoke(ProxyFactory.java:48)
        at jdk.proxy12/jdk.proxy12.$Proxy190.getFailure(Unknown Source)
        at com.gradle.develocity.agent.gradle.adapters.enterprise.BuildScanExtensionAdapter$1.getFailures(BuildScanExtensionAdapter.java:73)
        at <internal Code>
        at <internal Code>
        at <internal Code>
        at <internal Code>
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
        at groovy.lang.Closure.call(Closure.java:412)
        at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:50)
        at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:112)
        at jdk.proxy1/jdk.proxy1.$Proxy63.execute(Unknown Source)
        at com.gradle.develocity.agent.gradle.adapters.enterprise.BuildScanExtensionAdapter.lambda$buildFinished$1(BuildScanExtensionAdapter.java:70)
        at com.gradle.develocity.agent.gradle.adapters.internal.ProxyFactory$ProxyingInvocationHandler.lambda$adaptActionArg$1(ProxyFactory.java:73)
        at com.gradle.enterprise.gradleplugin.internal.extension.a$5.a(SourceFile:213)
        at com.gradle.enterprise.gradleplugin.internal.extension.a$5.accept(SourceFile:210)
        at com.gradle.scan.plugin.internal.p.b.b.a(SourceFile:45)
        at java.base/java.lang.Iterable.forEach(Iterable.java:75)
        at com.gradle.scan.plugin.internal.p.b.b.a(SourceFile:43)
        at com.gradle.scan.plugin.internal.service.d.a(SourceFile:34)
        at com.gradle.scan.plugin.internal.service.b.a(SourceFile:22)
        at org.gradle.internal.enterprise.impl.DefaultGradleEnterprisePluginAdapter.buildFinished(DefaultGradleEnterprisePluginAdapter.java:92)
        at org.gradle.internal.enterprise.core.GradleEnterprisePluginManager.buildFinished(GradleEnterprisePluginManager.java:76)
        at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.notifyEnterprisePluginManager(BuildCompletionNotifyingBuildActionRunner.java:53)
        at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:48)
        at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:123)
        at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
        at org.gradle.internal.buildtree.InitDeprecationLoggingActionExecutor.execute(InitDeprecationLoggingActionExecutor.java:66)
        at org.gradle.internal.buildtree.InitProblems.execute(InitProblems.java:36)
        at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
        at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:71)
        at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:60)
        at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:71)
        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$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:264)
        at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128)
        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:92)
        at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:80)
        at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:71)
        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:64)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:51)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:39)
        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:64)
        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.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.IllegalArgumentException: java.lang.Throwable is not an interface
        at java.base/java.lang.reflect.Proxy$ProxyBuilder.validateProxyInterfaces(Proxy.java:706)
        at java.base/java.lang.reflect.Proxy$ProxyBuilder.<init>(Proxy.java:648)
        at java.base/java.lang.reflect.Proxy$ProxyBuilder.<init>(Proxy.java:656)
        at java.base/java.lang.reflect.Proxy.lambda$getProxyConstructor$0(Proxy.java:429)
        at java.base/jdk.internal.loader.AbstractClassLoaderValue$Memoizer.get(AbstractClassLoaderValue.java:329)
        at java.base/jdk.internal.loader.AbstractClassLoaderValue.computeIfAbsent(AbstractClassLoaderValue.java:205)
        at java.base/java.lang.reflect.Proxy.getProxyConstructor(Proxy.java:427)
        at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1037)
        at com.gradle.develocity.agent.gradle.adapters.internal.ProxyFactory.newProxyInstance(ProxyFactory.java:22)
        at com.gradle.develocity.agent.gradle.adapters.internal.ProxyFactory.createProxy(ProxyFactory.java:17)
        at com.gradle.develocity.agent.gradle.adapters.internal.ProxyFactory$ProxyingInvocationHandler.invoke(ProxyFactory.java:46)
        ... 98 more
@pshevche
Copy link
Member

🙈 Got it, I'll look into it as soon as I can.

@pshevche pshevche self-assigned this Apr 16, 2024
@pshevche pshevche linked a pull request Apr 16, 2024 that will close this issue
@pshevche
Copy link
Member

@lukasgraef , 1.0.2 with the fix is out: https://github.com/gradle/develocity-agent-adapters/releases/tag/develocity-gradle-plugin-adapters-1.0.2. I hope this will get you unblocked.

@lukasgraef
Copy link
Author

@pshevche
Thanks a lot for your fixes, this resolved my issues!

@lukasgraef
Copy link
Author

@pshevche
An update of the develocity-gradle-plugin-adapters to version 1.0.2 in https://github.com/gradle/common-custom-user-data-gradle-plugin would also help us out.

@pshevche
Copy link
Member

pshevche commented Apr 17, 2024

@pshevche An update of the develocity-gradle-plugin-adapters to version 1.0.2 in https://github.com/gradle/common-custom-user-data-gradle-plugin would also help us out.

This will require releasing the plugin, which I can't do myself, so it might take a while. How would this update help you? Do you have a copy of the plugin or just consume the released version? The released version should not be impacted by these issues, because it does not access failures from the build result. Or did I miss anything? Or do you get a conflict when resolving the dependency?

@lukasgraef
Copy link
Author

We just consume the released version of common-custom-user-data and our problem is a dependency conflict.
But this does not block us, so it's not that urgent. Although we would need it once we fully migrate to the develocity plugin.

So we don't need a release right away, but it would be great if the next release of common-custom-user-data contains the latest version of develocity-gradle-plugin-adapters.

@pshevche
Copy link
Member

We just consume the released version of common-custom-user-data and our problem is a dependency conflict. But this does not block us, so it's not that urgent. Although we would need it once we fully migrate to the develocity plugin.

So we don't need a release right away, but it would be great if the next release of common-custom-user-data contains the latest version of develocity-gradle-plugin-adapters.

Understood, I'll forward this to the team responsible for the plugin.

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

Successfully merging a pull request may close this issue.

2 participants