Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-56386

File handles are not release by java process after running OWASP Dependency-Check Plugin

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Won't Fix
    • Labels:
      None
    • Environment:
      Jenkins ver. 2.150.3 (debian)
      OWASP Dependency-Check Plugin 4.0.2
      Jenkins node: windows 2016 (with latest updates applied)
      java version on Jenkins node: 1.8.0_201
    • Similar Issues:

      Description

      We are running into the following exception at the cleanup phase after running dependency-check on a windows agent:

      java.nio.file.FileSystemException: ${WS_PATH}\protobuf\win\include\google\protobuf\compiler\js\well_known_types\any.js: The process cannot access the file because it is being used by another process.
      
      	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
      	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
      	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
      	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
      	at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(Unknown Source)
      	at java.nio.file.Files.deleteIfExists(Unknown Source)
      	at hudson.Util.tryOnceDeleteFile(Util.java:318)
      	at hudson.Util.deleteFile(Util.java:274)
      Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from ${NODE_DNS}/${NODE_IP}:3625
      		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741)
      		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
      		at hudson.remoting.Channel.call(Channel.java:955)
      		at hudson.FilePath.act(FilePath.java:1072)
      		at hudson.FilePath.act(FilePath.java:1061)
      		at hudson.FilePath.deleteRecursive(FilePath.java:1268)
      		at hudson.plugins.ws_cleanup.Wipeout.performDelete(Wipeout.java:82)
      		at hudson.plugins.ws_cleanup.Wipeout.perform(Wipeout.java:78)
      		at hudson.plugins.ws_cleanup.WsCleanup.perform(WsCleanup.java:234)
      		at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
      		at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
      		at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
      		at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      		at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      		at java.lang.Thread.run(Thread.java:748)
      Caused: java.io.IOException: Unable to delete '${WS_PATH}\protobuf\win\include\google\protobuf\compiler\js\well_known_types\any.js'. Tried 3 times (of a maximum of 3) waiting 0.1 sec between attempts.
      	at hudson.Util.deleteFile(Util.java:279)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1305)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.deleteContentsRecursive(FilePath.java:1314)
      	at hudson.FilePath.deleteRecursive(FilePath.java:1296)
      	at hudson.FilePath.access$1600(FilePath.java:213)
      	at hudson.FilePath$DeleteRecursive.invoke(FilePath.java:1274)
      	at hudson.FilePath$DeleteRecursive.invoke(FilePath.java:1270)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3086)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:212)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      	at hudson.remoting.Request$2.run(Request.java:369)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      	at java.util.concurrent.FutureTask.run(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      	at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
      	at java.lang.Thread.run(Unknown Source)
      

      Here are the pipeline stages that we are running:

      //snip
      
      stage ('Run dependency-check') {
          steps {
              dependencyCheckAnalyzer datadir: "${env.WORKSPACE}/../DC-data",
                  hintsFile: '',
                  includeCsvReports: false,
                  includeHtmlReports: true,
                  includeJsonReports: false,
                  includeVulnReports: true,
                  isAutoupdateDisabled: false,
                  outdir: "output/",
                  scanpath: "${env.WORKSPACE}",
                  skipOnScmChange: false,
                  skipOnUpstreamChange: true,
                  suppressionFile: '',
                  zipExtensions: ''
      
              dependencyCheckPublisher canComputeNew: false,
                  defaultEncoding: '',
                  healthy: '',
                  pattern: "**/dependency-check-report.xml",
                  unHealthy: ''
      
              archiveArtifacts 'output/**'
          }
      }
      
      //snip
      
      post {
          cleanup {
              cleanWs()
          }
      }
      

      Please let me know if you have any questions

        Attachments

          Activity

          Hide
          sspringett Steve Springett added a comment -

          This is a common problem with Windows. Nothing I can do to fix. There are a lot of workarounds for this type of behavior including disabling Windows services that read recently modified files (Windows search, anti-virus, etc). Since the Jenkins plugin doesn't actually have code that performs scanning, workarounds would need to be implemented in the Dependency-Check core module.

          Show
          sspringett Steve Springett added a comment - This is a common problem with Windows. Nothing I can do to fix. There are a lot of workarounds for this type of behavior including disabling Windows services that read recently modified files (Windows search, anti-virus, etc). Since the Jenkins plugin doesn't actually have code that performs scanning, workarounds would need to be implemented in the Dependency-Check core module.

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            nxlq Laurent Quillérou
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: