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

Optional extensions are not picked up after installing the optional dependency

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • core
    • None

      Problem statement

      Consider plugins A and B.

      A has an optional dependency to B.

      B exposes an extension point called B.

      A contains an @Extension(optional=true) or an @OptionalExtension(requiresPlugins = "B") (when using the variant plugin)
      and has public class A extends B.

      • Set up a new Jenkins instance
      • Install plugin A
      • Install plugin B
      • Check groovy console ExtensionList.lookup(B.class)
      • An empty list is returned. Expected to see class A singleton.

      After restarting the Jenkins instance, class A singleton is listed properly.

      Prior/related work

          [JENKINS-50336] Optional extensions are not picked up after installing the optional dependency

          Code changed in jenkins
          User: Vincent Latombe
          Path:
          core/src/main/java/hudson/ExtensionFinder.java
          core/src/main/java/hudson/PluginManager.java
          test/src/test/java/hudson/PluginManagerTest.java
          test/src/test/resources/plugins/jenkins-50336.hpi
          test/src/test/resources/plugins/variant.hpi
          http://jenkins-ci.org/commit/jenkins/8c1b8b8e144280f9645eaf761ed7f5e894ac7353
          Log:
          JENKINS-50336 Fix loading optional extensions after installing a missing dependency (#3370)

          • JENKINS-50336 Only keep extensions that could be loaded in memory

          So that delta computations will re-attempt to load any extension that
          previously failed or was skipped after a new plugin is installed.

          After installing a plugin, need to refresh extensions in order to pick
          up extensions that can be loaded thanks to this new plugin.

          • JENKINS-50336 @OptionalExtension annotated classes were not being picked up after dynamic load of variant

          Recompute GuiceExtensionAnnotation list when refreshing extensions

          *NOTE:* This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/

          Functionality will be removed from GitHub.com on January 31st, 2019.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/ExtensionFinder.java core/src/main/java/hudson/PluginManager.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/resources/plugins/jenkins-50336.hpi test/src/test/resources/plugins/variant.hpi http://jenkins-ci.org/commit/jenkins/8c1b8b8e144280f9645eaf761ed7f5e894ac7353 Log: JENKINS-50336 Fix loading optional extensions after installing a missing dependency (#3370) JENKINS-50336 Only keep extensions that could be loaded in memory So that delta computations will re-attempt to load any extension that previously failed or was skipped after a new plugin is installed. After installing a plugin, need to refresh extensions in order to pick up extensions that can be loaded thanks to this new plugin. JENKINS-50336 @OptionalExtension annotated classes were not being picked up after dynamic load of variant Recompute GuiceExtensionAnnotation list when refreshing extensions * NOTE: * This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019.

          Oleg Nenashev added a comment -

          Fixed in 2.127.
          danielbeck vlatombe It is categorized as RFE, and I do not consider it as backportable. Are you fine with that?

          Oleg Nenashev added a comment - Fixed in 2.127. danielbeck vlatombe It is categorized as RFE, and I do not consider it as backportable. Are you fine with that?

          Daniel Beck added a comment -

          Does not qualify for backporting IMO.

          Daniel Beck added a comment - Does not qualify for backporting IMO.

          Fine for me.

          Vincent Latombe added a comment - Fine for me.

            vlatombe Vincent Latombe
            vlatombe Vincent Latombe
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: