-
Bug
-
Resolution: Fixed
-
Critical
-
None
-
Powered by SuggestiMate -
2.410
Since the core 2.407 upgrade of yesterday I see exceptions somewhere in jfrog plugin code. However, the problem is more generic, because Guava 32 isn't working on Windows anymore as before: https://github.com/google/guava/commit/3dfe3633eb84ec96ac88c764862b0f8d0c3546fc
Therefore all plugins using Guava 32 should downgrade that dependency again.
The current implementation of the TempFileCreator class causes this exception on Windows otherwise:
java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
at java.base/sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(WindowsSecurityDescriptor.java:358)
at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:497)
at java.base/java.nio.file.Files.createDirectory(Files.java:690)
at java.base/java.nio.file.TempFileHelper.create(TempFileHelper.java:135)
at java.base/java.nio.file.TempFileHelper.createTempDirectory(TempFileHelper.java:172)
at java.base/java.nio.file.Files.createTempDirectory(Files.java:966)
at com.google.common.io.TempFileCreator$JavaNioCreator.createTempDir(TempFileCreator.java:102)
at com.google.common.io.Files.createTempDir(Files.java:439)
at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadFileConcurrently(DependenciesDownloaderHelper.java:248)
at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadArtifact(DependenciesDownloaderHelper.java:209)
Not sure if you have some kind of central enforcement of dependencies for all plugins...
[JENKINS-71375] Guava 32.0 breaks Jenkins on Windows for at least 2 plugins
Quite honestly, I still haven't found which plugin brought that new dependency. For reference, the full stack trace is this one:
java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute at java.base/sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(WindowsSecurityDescriptor.java:358) at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:497) at java.base/java.nio.file.Files.createDirectory(Files.java:690) at java.base/java.nio.file.TempFileHelper.create(TempFileHelper.java:135) at java.base/java.nio.file.TempFileHelper.createTempDirectory(TempFileHelper.java:172) at java.base/java.nio.file.Files.createTempDirectory(Files.java:966) at com.google.common.io.TempFileCreator$JavaNioCreator.createTempDir(TempFileCreator.java:102) at com.google.common.io.Files.createTempDir(Files.java:439) at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadFileConcurrently(DependenciesDownloaderHelper.java:248) at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadArtifact(DependenciesDownloaderHelper.java:209) Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from ip-172-21-6-95.eu-central-1.compute.internal/172.21.6.95:27302 at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1784) at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356) at hudson.remoting.Channel.call(Channel.java:1000) at hudson.FilePath.act(FilePath.java:1192) at hudson.FilePath.act(FilePath.java:1181) at org.jfrog.hudson.pipeline.common.executors.GenericDownloadExecutor.execute(GenericDownloadExecutor.java:52) at org.jfrog.hudson.pipeline.scripted.steps.DownloadStep$Execution.runStep(DownloadStep.java:67) at org.jfrog.hudson.pipeline.scripted.steps.DownloadStep$Execution.runStep(DownloadStep.java:53) at org.jfrog.hudson.pipeline.ArtifactorySynchronousNonBlockingStepExecution.run(ArtifactorySynchronousNonBlockingStepExecution.java:55) at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: a4827258-27d1-4b17-9c22-d33e1851b56b Also: Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: cccd8172-13db-4ee2-a28b-53bba5ee9d6c hudson.AbortException: script returned exit code 1 at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:667) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:613) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:557) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Also: Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: f7e5076e-0e84-424b-9628-79fca9fe1469 hudson.AbortException: script returned exit code 1 at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:667) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:613) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:557) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Also: Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: b2c8484a-7941-4e2d-9fc2-75d266170ebe hudson.AbortException: script returned exit code 1 at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:667) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:613) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:557) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Also: Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 31240348-3c5c-4aae-9afa-7709e1fd2933 hudson.AbortException: script returned exit code 1 at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:667) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:613) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:557) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Also: Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 4425bc86-e97a-4425-bfd2-6f849171fa82 hudson.AbortException: script returned exit code 1 at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:667) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:613) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:557) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Also: Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 0c6b9cc8-3451-418c-864a-ac69720b3e24 hudson.AbortException: script returned exit code 1 at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:667) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:613) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:557) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Also: Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: d459b372-e8ce-4a38-8f84-da82cdc1fb4f hudson.AbortException: script returned exit code 1 at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:667) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:613) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:557) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) Caused: java.io.IOException at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadArtifact(DependenciesDownloaderHelper.java:222) at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadArtifact(DependenciesDownloaderHelper.java:184) at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadDependencies(DependenciesDownloaderHelper.java:123) at org.jfrog.build.extractor.clientConfiguration.util.DependenciesDownloaderHelper.downloadDependencies(DependenciesDownloaderHelper.java:83) at org.jfrog.build.extractor.clientConfiguration.util.spec.SpecsHelper.downloadArtifactsBySpec(SpecsHelper.java:142) at org.jfrog.hudson.generic.FilesResolverCallable.invoke(FilesResolverCallable.java:51) at org.jfrog.hudson.generic.FilesResolverCallable.invoke(FilesResolverCallable.java:21) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3578) at hudson.remoting.UserRequest.perform(UserRequest.java:211) at hudson.remoting.UserRequest.perform(UserRequest.java:54) at hudson.remoting.Request$2.run(Request.java:377) at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:78) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:125) at java.base/java.lang.Thread.run(Thread.java:829)
I've been checking github releases and their recent commits for at least 10 plugins now, and I still don't have a clue. But it must be something released in the last 2 days, given the Guava release itself is only 2 days old.
I'm somewhat certain that the pipeline code triggering the problem is this piece of Artifactory Jenkins plugin code, because the last console log entries before the exception are from downloading artifacts from Artifactory:
def server = Artifactory.server 'myServerName' server.download failNoOp: true, spec: someFileSpecArray
It seems to be Jenkins core, which upgraded the dependency: https://github.com/jenkinsci/jenkins/commit/de43dca59ecaf032e0274eb9f2c7c21d3ed76fd0 Sorry for creating noise pointing at other plugins.
As far as I can tell, Jenkins core has already banned references to com.google.common.io. classes. Plugins that are using Guava file APIs that are not supported on Windows need to be changed to use supported APIs. Preferably, they need to reduce their use of Guava APIs as has been done in many plugins.
I've also raised this at JFrog Buildinfo, as that seems to be the component causing the specific exception shown above: https://github.com/jfrog/build-info/issues/737 Not sure if there is an easy way to find if other Jenkins plugins are affected. I guess there is no such thing as a code or dependency search over all Jenkins plugins, right?
We also saw the same issue when running these builds on Azure Dynamic Agents using a Windows Server 2019 OS.
I am not entirely sure if this just impacts Windows specific build agents or all build agents after this upgrade.
Here was the Jenkins build log error observed:
09:36:04 [ArtifactoryHelper.downloadAndExtractZipFileFromArtifactory] [Error] Exception: java.io.IOException: java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute 09:36:04 [Pipeline] echo 09:36:04 [DownloadReleaseWorkflow] [Error] Something went wrong. Exception: java.io.IOException: java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
The resolution on our end was to revert the Jenkins version from 2.407 to 2.406.
We manage over 120 Jenkins instances for build teams and our canary upgrades did not trigger any errors (they run only on Linux hence why this probably only impacts Windows). We pinned 2.406 for now until this is resolved.
Thank you bananeweizen for raising this so quickly; saved us some time trying to debug this
Thanks for the report jnks8080. The failure message that you're seeing appears to be the same failure message as is reported by bananeweizen. We'll hope that JFrog will update their library to not use that Guava class or that Guava will deliver a new release promptly with a fix for the issue.
It appears that the two most popular plugins affected by the plugin are the Artifactory plugin and the Checkmarx plugin.
Given the very low impact on Jenkins plugins and the benefits of staying up-to-date with the latest version of Guava (which contains a security fix), I am inclined to leave core as-is and wait for Google to resolve https://github.com/google/guava/issues/6535 and/or for JFrog to resolve https://github.com/jfrog/build-info/issues/737. The latter would be the path of least resistance, and I have suggested a patch in the issue report.
Sounds okay to me. So when https://github.com/jenkinsci/jenkins/pull/8113 is merged, we can probably close this as fixed.
// ... (if ever they did).
Does that affect the JFrog plugin only? I didn't encounter that error yet.