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

Erroneous entry in split-plugin-cycles.txt for jdk-tool and apache-httpcomponents-client-4-api

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Problem: If apache-httpcomponents-client-4-api is tested with a core dependency of 2.112 or higher it will fail with ClassNotFoundException for hudson.tools.JDKInstaller.

      In JENKINS-22367 I detached JDKInstaller from core into the jdk-tool plugin. At one point the work-in-progress jdk-tool build depended on apache-httpcomponents-client-4-api so that JDKInstaller could be updated to use httpcomponents-client version 4 instead of version 3, so I added an entry to split-plugins.txt to break the cycle between these plugins. Later, I decided to wait to refactor the httpcomponents-client code until the plugin was detached, and removed the dependency on apache-httpcomponents-client-4-api, but did not remove the entry in split-plugin-cycles.txt. EDIT: Adding that dependency would have required a circular dependency. I should never have tried to make jdk-tool depend on apache-httpcomponents-client-4-api with first changing apache-httpcomponents-client-4-api's tests that used JDKInstaller.

      In practice, this means that apache-httpcomponents-client-4-api does not have an implied dependency on jdk-tool even though it should. This is not an issue in standard usage of the plugin, but apache-httpcomponents-client-4-api has a (broken) test that uses JDKInstaller: Client4JDKInstallerTest.

      This issue was discovered by testing the plugin using the PCT with a new core version. We can fix it by removing the split-plugin-cycles.txt entry.

        Attachments

          Issue Links

            Activity

            dnusbaum Devin Nusbaum created issue -
            dnusbaum Devin Nusbaum made changes -
            Field Original Value New Value
            Link This issue relates to JENKINS-22367 [ JENKINS-22367 ]
            dnusbaum Devin Nusbaum made changes -
            Description Problem: If apache-httpcomponents-client-4-api is tested with a core dependency of 2.112 or higher it will fail with ClassNotFoundException for hudson.tools.JDKInstaller.

            In JENKINS-22367 I detached {{JDKInstaller}} from core into the jdk-tool plugin. At one point jdk-tool depended on apache-httpcomponents-client-4-api so that JDKInstaller could be updated to use httpcomponents-client version 4 instead of version 3, so I added an [entry to split-plugins.txt|https://github.com/jenkinsci/jenkins/blob/9966c5d479a7ef35b6e4171cf5f351121d66b097/core/src/main/resources/jenkins/split-plugin-cycles.txt#L14] to break the cycle between these plugins. Later, I decided to wait to refactor the httpcomponents-client code until the plugin was detached, and removed the dependency on apache-httpcomponents-client-4-api, but did not remove the entry in split-plugin-cycles.txt.

            In practice, this means that apache-httpcomponents-client-4-api does not have an implied dependency on jdk-tool even though it should. This is not an issue in standard usage of the plugin, but apache-httpcomponents-client-4-api has a (broken) test that uses JDKInstaller: [Client4JDKInstallerTest|https://github.com/jenkinsci/apache-httpcomponents-client-4-api-plugin/blob/master/src/test/java/org/jenkinsci/plugins/apachehttpclient4api/Client4JDKInstallerTest.java].

            This issue was discovered by testing the plugin using the PCT with a new core version. We can fix it by removing the split-plugin-cycles.txt entry.
            Problem: If apache-httpcomponents-client-4-api is tested with a core dependency of 2.112 or higher it will fail with ClassNotFoundException for hudson.tools.JDKInstaller.

            In JENKINS-22367 I detached {{JDKInstaller}} from core into the jdk-tool plugin. At one point the work-in-progress jdk-tool build depended on apache-httpcomponents-client-4-api so that JDKInstaller could be updated to use httpcomponents-client version 4 instead of version 3, so I added an [entry to split-plugins.txt|https://github.com/jenkinsci/jenkins/blob/9966c5d479a7ef35b6e4171cf5f351121d66b097/core/src/main/resources/jenkins/split-plugin-cycles.txt#L14] to break the cycle between these plugins. Later, I decided to wait to refactor the httpcomponents-client code until the plugin was detached, and removed the dependency on apache-httpcomponents-client-4-api, but did not remove the entry in split-plugin-cycles.txt.

            In practice, this means that apache-httpcomponents-client-4-api does not have an implied dependency on jdk-tool even though it should. This is not an issue in standard usage of the plugin, but apache-httpcomponents-client-4-api has a (broken) test that uses JDKInstaller: [Client4JDKInstallerTest|https://github.com/jenkinsci/apache-httpcomponents-client-4-api-plugin/blob/master/src/test/java/org/jenkinsci/plugins/apachehttpclient4api/Client4JDKInstallerTest.java].

            This issue was discovered by testing the plugin using the PCT with a new core version. We can fix it by removing the split-plugin-cycles.txt entry.
            dnusbaum Devin Nusbaum made changes -
            Remote Link This issue links to "jenkinsci/jenkins#3454 (Web Link)" [ 20725 ]
            dnusbaum Devin Nusbaum made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            dnusbaum Devin Nusbaum made changes -
            Status In Progress [ 3 ] In Review [ 10005 ]
            dnusbaum Devin Nusbaum made changes -
            Description Problem: If apache-httpcomponents-client-4-api is tested with a core dependency of 2.112 or higher it will fail with ClassNotFoundException for hudson.tools.JDKInstaller.

            In JENKINS-22367 I detached {{JDKInstaller}} from core into the jdk-tool plugin. At one point the work-in-progress jdk-tool build depended on apache-httpcomponents-client-4-api so that JDKInstaller could be updated to use httpcomponents-client version 4 instead of version 3, so I added an [entry to split-plugins.txt|https://github.com/jenkinsci/jenkins/blob/9966c5d479a7ef35b6e4171cf5f351121d66b097/core/src/main/resources/jenkins/split-plugin-cycles.txt#L14] to break the cycle between these plugins. Later, I decided to wait to refactor the httpcomponents-client code until the plugin was detached, and removed the dependency on apache-httpcomponents-client-4-api, but did not remove the entry in split-plugin-cycles.txt.

            In practice, this means that apache-httpcomponents-client-4-api does not have an implied dependency on jdk-tool even though it should. This is not an issue in standard usage of the plugin, but apache-httpcomponents-client-4-api has a (broken) test that uses JDKInstaller: [Client4JDKInstallerTest|https://github.com/jenkinsci/apache-httpcomponents-client-4-api-plugin/blob/master/src/test/java/org/jenkinsci/plugins/apachehttpclient4api/Client4JDKInstallerTest.java].

            This issue was discovered by testing the plugin using the PCT with a new core version. We can fix it by removing the split-plugin-cycles.txt entry.
            Problem: If apache-httpcomponents-client-4-api is tested with a core dependency of 2.112 or higher it will fail with ClassNotFoundException for hudson.tools.JDKInstaller.

            In -JENKINS-22367- I detached {{JDKInstaller}} from core into the jdk-tool plugin. At one point the work-in-progress jdk-tool build depended on apache-httpcomponents-client-4-api so that JDKInstaller could be updated to use httpcomponents-client version 4 instead of version 3, so I added an [entry to split-plugins.txt|https://github.com/jenkinsci/jenkins/blob/9966c5d479a7ef35b6e4171cf5f351121d66b097/core/src/main/resources/jenkins/split-plugin-cycles.txt#L14] to break the cycle between these plugins. Later, I decided to wait to refactor the httpcomponents-client code until the plugin was detached, and removed the dependency on apache-httpcomponents-client-4-api, but did not remove the entry in split-plugin-cycles.txt. EDIT: Adding that dependency would have required a circular dependency. I should never have tried to make jdk-tool depend on apache-httpcomponents-client-4-api with first changing apache-httpcomponents-client-4-api's tests that used JDKInstaller.

            In practice, this means that apache-httpcomponents-client-4-api does not have an implied dependency on jdk-tool even though it should. This is not an issue in standard usage of the plugin, but apache-httpcomponents-client-4-api has a (broken) test that uses JDKInstaller: [Client4JDKInstallerTest|https://github.com/jenkinsci/apache-httpcomponents-client-4-api-plugin/blob/master/src/test/java/org/jenkinsci/plugins/apachehttpclient4api/Client4JDKInstallerTest.java].

            This issue was discovered by testing the plugin using the PCT with a new core version. We can fix it by removing the split-plugin-cycles.txt entry.
            dnusbaum Devin Nusbaum made changes -
            Status In Review [ 10005 ] Resolved [ 5 ]
            Resolution Fixed [ 1 ]
            oleg_nenashev Oleg Nenashev made changes -
            Labels lts-candidate
            olivergondza Oliver Gond┼ża made changes -
            Labels lts-candidate 2.121.2-fixed

              People

              • Assignee:
                dnusbaum Devin Nusbaum
                Reporter:
                dnusbaum Devin Nusbaum
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: