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

Undocumented behavior of Node#createComputer(), NPE risk

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

      It is a follow-up to https://github.com/jenkinsci/jenkins/pull/2836#discussion_r110604865 It is unclear whether the method is nullable or not, and it seems there is a NPE risk in the core.

          [JENKINS-43496] Undocumented behavior of Node#createComputer(), NPE risk

          Code changed in jenkins
          User: Oleg Nenashev
          Path:
          core/src/main/java/hudson/model/AbstractCIBase.java
          core/src/main/java/hudson/model/Node.java
          core/src/main/java/hudson/slaves/RetentionStrategy.java
          core/src/main/java/jenkins/model/Jenkins.java
          http://jenkins-ci.org/commit/jenkins/bcf55ecd7f8a22046c5cb3c4c50016d936e5460c
          Log:
          JENKINS-43496 - Add handling of the null Node#createComputer() result. (#2922)

          • JENKINS-43496 - Add handling of the null Node#createComputer() result.

          it is a follow-up to https://github.com/jenkinsci/jenkins/pull/2836#discussion_r110604865

          De-facto many Cloud plugins return `null` in `Node#createLauncher()`, but it has never been documented.
          In order to prevent possible API misusages in the future, I have added annotations and fixed handling of the extension point in `AbstractCIBase#updateComputer()` which may fail in the case of `null` or `RuntimeException` in the Node implementation.

          • JENKINS-43496 - Use ProtectedExternally to protect Node#createComputer()
          • JENKINS-43496 - Remove the erroneous Nonnull annotation after the feedback from @jglick

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: core/src/main/java/hudson/model/AbstractCIBase.java core/src/main/java/hudson/model/Node.java core/src/main/java/hudson/slaves/RetentionStrategy.java core/src/main/java/jenkins/model/Jenkins.java http://jenkins-ci.org/commit/jenkins/bcf55ecd7f8a22046c5cb3c4c50016d936e5460c Log: JENKINS-43496 - Add handling of the null Node#createComputer() result. (#2922) JENKINS-43496 - Add handling of the null Node#createComputer() result. it is a follow-up to https://github.com/jenkinsci/jenkins/pull/2836#discussion_r110604865 De-facto many Cloud plugins return `null` in `Node#createLauncher()`, but it has never been documented. In order to prevent possible API misusages in the future, I have added annotations and fixed handling of the extension point in `AbstractCIBase#updateComputer()` which may fail in the case of `null` or `RuntimeException` in the Node implementation. JENKINS-43496 - Use ProtectedExternally to protect Node#createComputer() JENKINS-43496 - Remove the erroneous Nonnull annotation after the feedback from @jglick JENKINS-43496 - Fix typos noticed by @daniel-beck

          Oleg Nenashev added a comment -

          The fix has been integrated towards 2.68

          Oleg Nenashev added a comment - The fix has been integrated towards 2.68

          Code changed in jenkins
          User: Oleg Nenashev
          Path:
          core/src/main/java/hudson/model/AbstractCIBase.java
          core/src/main/java/hudson/model/Node.java
          core/src/main/java/hudson/slaves/RetentionStrategy.java
          core/src/main/java/jenkins/model/Jenkins.java
          http://jenkins-ci.org/commit/jenkins/8cd6fd81a5fd9960a05bd485afec9c3976324cb5
          Log:
          JENKINS-43496 - Add handling of the null Node#createComputer() result. (#2922)

          • JENKINS-43496 - Add handling of the null Node#createComputer() result.

          it is a follow-up to https://github.com/jenkinsci/jenkins/pull/2836#discussion_r110604865

          De-facto many Cloud plugins return `null` in `Node#createLauncher()`, but it has never been documented.
          In order to prevent possible API misusages in the future, I have added annotations and fixed handling of the extension point in `AbstractCIBase#updateComputer()` which may fail in the case of `null` or `RuntimeException` in the Node implementation.

          • JENKINS-43496 - Use ProtectedExternally to protect Node#createComputer()
          • JENKINS-43496 - Remove the erroneous Nonnull annotation after the feedback from @jglick

          (cherry picked from commit bcf55ecd7f8a22046c5cb3c4c50016d936e5460c)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: core/src/main/java/hudson/model/AbstractCIBase.java core/src/main/java/hudson/model/Node.java core/src/main/java/hudson/slaves/RetentionStrategy.java core/src/main/java/jenkins/model/Jenkins.java http://jenkins-ci.org/commit/jenkins/8cd6fd81a5fd9960a05bd485afec9c3976324cb5 Log: JENKINS-43496 - Add handling of the null Node#createComputer() result. (#2922) JENKINS-43496 - Add handling of the null Node#createComputer() result. it is a follow-up to https://github.com/jenkinsci/jenkins/pull/2836#discussion_r110604865 De-facto many Cloud plugins return `null` in `Node#createLauncher()`, but it has never been documented. In order to prevent possible API misusages in the future, I have added annotations and fixed handling of the extension point in `AbstractCIBase#updateComputer()` which may fail in the case of `null` or `RuntimeException` in the Node implementation. JENKINS-43496 - Use ProtectedExternally to protect Node#createComputer() JENKINS-43496 - Remove the erroneous Nonnull annotation after the feedback from @jglick JENKINS-43496 - Fix typos noticed by @daniel-beck (cherry picked from commit bcf55ecd7f8a22046c5cb3c4c50016d936e5460c)

            oleg_nenashev Oleg Nenashev
            oleg_nenashev Oleg Nenashev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: