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

Prepare JClouds for core Guava upgrade

    XMLWordPrintable

    Details

    • Similar Issues:
    • Released As:
      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

          Hide
          basil Basil Crow added a comment -

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

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

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

          Show
          basil Basil Crow added a comment - Thanks for your help and cooperation here, Fritz Elfert . Would it be possible to get a release of this plugin that includes the above changes?
          Hide
          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.

          Show
          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.
          Hide
          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.

          Show
          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.
          Hide
          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?

          Show
          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?
          Hide
          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.

          Show
          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.
          Hide
          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.

          Show
          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.

            People

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

              Dates

              Created:
              Updated:
              Resolved: