Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-19894

Opening Plugin Repository gives Error while loading plugins: TypeError: version.compatibility is null.

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Low
    • None
    • 3.2.1
    • None

    Description

      Confluence loads the xml file from plugins.atlassian.com

      eg: (this is just an example)
      https://plugins.atlassian.com/server/legacy/confluence/xml/1724?&profile=confluence&decorator=none&buildNumber=1724&repoClientVer=2.1.6&os=x86&javaVer=1.6.0_10&javaVendor=Sun+Microsystems+Inc

      For the "JavaMelody Monitoring Plugin Product compatibility " We
      notice the xml returned does not contain the 'compatibility' nodes:

      eg

      https://plugins.atlassian.com/plugin/matrix/20909

      </com.atlassian.plugin.repository.model.RepositoryPlugin-Version>
      -
      <com.atlassian.plugin.repository.model.RepositoryPlugin-Version>
      <version>1.1</version>
      <build>1100</build>
      <releaseDate>2009-12-08 00:00:00.0 CST</releaseDate>
      <state>stable</state>
      -
      <compatibility>
      <startBuild>1722</startBuild>
      <endBuild>1725</endBuild>
      -
      <workingBuilds class="linked-list">
      <int>1722</int>
      </workingBuilds>
      <brokenBuilds class="linked-list"/>
      </compatibility>
      

      Could you please confirm that the compatibility nodes are being
      returned for this plugin in production?

      Thank you!

      The code in question is repository.js:686

      // Return the broken status of a version
      RepositoryPluginsTab.Plugin.prototype.isVersionBroken = function (version) {
          // Find the build number for this
          var productBuild = RepositoryUI.getConfigSetting("productBuildNumber");
          // Check extremities
          if (version.compatibility.startBuild &&
      version.compatibility.startBuild > productBuild) return true;
          if (version.compatibility.endBuild &&
      version.compatibility.endBuild < productBuild) return true;
          // Check I am in the working list
          for (var i=0; i<version.compatibility.brokenBuilds.length; i++) {
              if (Number(version.compatibility.brokenBuilds[i]) ==
      productBuild) return true;
          }
          return false;
      };
      

      the compatibility is assumed to exist (should the code be a bit more
      defensive and do some prechecks?)

      See screenshot of the version.compatibility = null error + the debug output.

      Hope this helps.

      Regards

      Vincent Choy.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              vchoy Vincent Choy (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: