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

Investigate impact of self-attach flag requirement on plugins

      According to the information from evernat in JENKINS-52092, Monitoring Plugin 1.73.0 requires "-Djdk.attach.allowAttachSelf=true" to be set on master and agent side in order to have the memory histogram in JDK 9. (Edit: with an enhancement in the monitoring plugin 1.73.1, it does not attach itself to the VM in order to get heap histogram in JDK 9. So this plugin does not require to add "-Djdk.attach.allowAttachSelf=true".)

      We still have some plugins attaching to JDK (e.g. File Leak detector plugin), so maybe we need a generic solution for Jenkins packaging (or some documentation about "-Djdk.attach.allowAttachSelf=true").

          [JENKINS-52178] Investigate impact of self-attach flag requirement on plugins

          Oleg Nenashev created issue -
          Oleg Nenashev made changes -
          Epic Link New: JENKINS-40689 [ 177392 ]
          Oleg Nenashev made changes -
          Link New: This issue relates to JENKINS-52092 [ JENKINS-52092 ]
          Oleg Nenashev made changes -
          Summary Original: Investigate self-attach impact on Jenkins plugins New: Investigate impact of self-attach flag requirement (Java 9+) on Jenkins plugins
          evernat made changes -
          Description Original: According to the information from [~evernat] in JENKINS-52092, Monitoring Plugin requires "-Djdk.attach.allowAttachSelf=true" to be set on master and agent side in order to have the memory histogram in JDK 9.

          We have other plugins attaching to JDK (e.g. File Leak detector plugin), so maybe we need a generic solution for Jenkins packaging (or some documentation).

          New: According to the information from [~evernat] in JENKINS-52092, Monitoring Plugin 1.73.0 requires "-Djdk.attach.allowAttachSelf=true" to be set on master and agent side in order to have the memory histogram in JDK 9. (Edit: with an enhancement in the monitoring plugin 1.73.1, it does not attach itself to the VM in order to get heap histogram in JDK 9. So this plugin does not require to add "-Djdk.attach.allowAttachSelf=true".)

          We still have some plugins attaching to JDK (e.g. File Leak detector plugin), so maybe we need a generic solution for Jenkins packaging (or some documentation about "-Djdk.attach.allowAttachSelf=true").

          evernat added a comment -

          By reading code, yes the File leak detector plugin is calling the attach method on a com.sun.tools.attach.VirtualMachine instance which may throw something like
          java.io.IOException: Can not attach to current VM
          at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.(HotSpotVirtualMachine.java:75)
          at jdk.attach/sun.tools.attach.VirtualMachineImpl.(VirtualMachineImpl.java:56)
          at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:73)
          at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:249)

          The workaround for this exception is to add "-Djdk.attach.allowAttachSelf=true" in the java command line.

          Except that the file leak detector plugin does not attach from the same process. It creates another java process and attaches to the Jenkins VM from there.

          So I don't think that the file leak detector plugin will fail on JDK 9. The plugin may not be aware of new methods in JDK 9 to leak files but otherwise, I think it will work.

          evernat added a comment - By reading code, yes the File leak detector plugin is calling the attach method on a com.sun.tools.attach.VirtualMachine instance which may throw something like java.io.IOException: Can not attach to current VM at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.(HotSpotVirtualMachine.java:75) at jdk.attach/sun.tools.attach.VirtualMachineImpl.(VirtualMachineImpl.java:56) at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:73) at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:249) The workaround for this exception is to add "-Djdk.attach.allowAttachSelf=true" in the java command line. Except that the file leak detector plugin does not attach from the same process. It creates another java process and attaches to the Jenkins VM from there. So I don't think that the file leak detector plugin will fail on JDK 9. The plugin may not be aware of new methods in JDK 9 to leak files but otherwise, I think it will work.

          evernat added a comment - - edited

          Searching in jenkinsci, there is only one plugin which contains the words "com.sun.tools.attach.VirtualMachine":

          https://github.com/search?q=org%3Ajenkinsci+com.sun.tools.attach.VirtualMachine&type=Code

          This plugin does not seem to be released and it does not attach to the self process.

          Perhaps there are other plugins calling VirtualMachine by using a dependency like the file leak detector plugin, but then I don't know how to find such plugins.

          evernat added a comment - - edited Searching in jenkinsci, there is only one plugin which contains the words "com.sun.tools.attach.VirtualMachine": https://github.com/search?q=org%3Ajenkinsci+com.sun.tools.attach.VirtualMachine&type=Code This plugin does not seem to be released and it does not attach to the self process. Perhaps there are other plugins calling VirtualMachine by using a dependency like the file leak detector plugin, but then I don't know how to find such plugins.
          evernat made changes -
          Assignee Original: evernat [ evernat ] New: Oleg Nenashev [ oleg_nenashev ]

          Oleg Nenashev added a comment -

          Yeah, I do not see this plugin in update centers. Not sure what it the purpose of this Proc plugin, so I would not worry
          Thanks for the analysis evernat!

          Oleg Nenashev added a comment - Yeah, I do not see this plugin in update centers. Not sure what it the purpose of this Proc plugin, so I would not worry Thanks for the analysis evernat !
          Oleg Nenashev made changes -
          Labels Original: java10 New: java10 java11

            Unassigned Unassigned
            oleg_nenashev Oleg Nenashev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: