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

Prepare JClouds for core Guava upgrade

    XMLWordPrintable

Details

    • 2.24

    Description

      See JENKINS-65988. Jenkins core is using Guava 11.0.1, which was released on January 9, 2012. Jenkins core would like to upgrade to Guava 30.1.1, which was released on March 19, 2021. Plugins must be prepared to be compatible with both Guava 11.0.1 and Guava 30.1.1 in advance of this core transition.

      {{Objects#firstNonNull}

      In particular, this plugin has been identified as using the com.google.common.base.Objects#firstNonNull method, which existed in Guava 11.0.1 but was removed in later versions.

      To facilitate the Jenkins core transition, this plugin must be prepared and released such that it works with both Guava 11.0.1 and latest. The general recommendation is to migrate away from Objects#firstNonNull and rewrite the code to use the native functionality provided by the Java Platform.

      For an example of how to do this, see:

      Futures#addCallback(addCallback(ListenableFuture<V> future, FutureCallback<? super V> callback)

      In particular, this plugin has been identified as using the Futures#addCallback(addCallback(ListenableFuture<V> future, FutureCallback<? super V> callback) method, which existed in Guava 11.0.1 but was removed in later versions.

      To facilitate the Jenkins core transition, this plugin must be prepared and released such that it works with both Guava 11.0.1 and latest. The general recommendation is to rewrite this code to rewrite this code to use Futures#addCallback(ListenableFuture<V> future, FutureCallback<? super V> callback, Executor executor), which is present in both Guava versions.

      Attachments

        Activity

          basil Basil Crow added a comment -

          This has been fixed in https://github.com/jenkinsci/jclouds-plugin/tree/obsolete-guava but not yet merged and released.

          basil Basil Crow added a comment - This has been fixed in https://github.com/jenkinsci/jclouds-plugin/tree/obsolete-guava but not yet merged and released.
          basil Basil Crow added a comment -

          Or at least part of it has been fixed. I haven't checked usages of Futures#addCallback in this plugin.

          basil Basil Crow added a comment - Or at least part of it has been fixed. I haven't checked usages of Futures#addCallback in this plugin.
          felfert Fritz Elfert added a comment - - edited

          I just fixed the Futures#addCallback8...) call.

          I'm a little bit scared about the fact that the list of issues is not exhaustive. How do you come up with the list anyway?

          Is there some tool for checking incompatibilities?

          felfert Fritz Elfert added a comment - - edited I just fixed the Futures#addCallback8...) call. I'm a little bit scared about the fact that the list of issues is not exhaustive. How do you come up with the list anyway? Is there some tool for checking incompatibilities?
          basil Basil Crow added a comment -

          Not easily. I've been using https://github.com/jenkins-infra/usage-in-plugins with a list of classes, methods, and fields supplied by James Nord on the Jenkins developer list. It's a useful starting point, but it contains many false positives that need to be sifted through.

          basil Basil Crow added a comment - Not easily. I've been using https://github.com/jenkins-infra/usage-in-plugins with a list of classes, methods, and fields supplied by James Nord on the Jenkins developer list. It's a useful starting point, but it contains many false positives that need to be sifted through.
          basil Basil Crow added a comment -

          One thing suggested by Baptiste Mathus in a previous presentation on this topic is to try modifying your Maven build to use the latest version of Guava, at least temporarily - to see if the plugin compiles and links against the new version. But such a change couldn't be committed and released because it wouldn't be backward compatible.

          basil Basil Crow added a comment - One thing suggested by Baptiste Mathus in a previous presentation on this topic is to try modifying your Maven build to use the latest version of Guava, at least temporarily - to see if the plugin compiles and links against the new version. But such a change couldn't be committed and released because it wouldn't be backward compatible.
          basil Basil Crow added a comment -

          Thanks for your help and cooperation here, felfert. Would it be possible to get a release of this plugin that includes the above changes?

          basil Basil Crow added a comment - Thanks for your help and cooperation here, felfert . Would it be possible to get a release of this plugin that includes the above changes?
          basil Basil Crow added a comment -

          Fixed in jenkinsci/jclouds-plugin#149. Released in 2.24.

          basil Basil Crow added a comment - Fixed in jenkinsci/jclouds-plugin#149 . Released in 2.24 .

          People

            felfert Fritz Elfert
            basil Basil Crow
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: