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

Job configuration submission should be a bulk change

      When I submit an empty Freestyle job config in the default configuration of Jenkins 2.35, the data is being saved to the disk 8 times. All of them happen in this code: https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java#L1227-L1246

      • setDisplayName
      • Project#getBuildWrappersList().rebuild (onModified handler)
      • Project#getBuilderList().rebuild (onModified handler)
      • Project#getPublisherList().rebuild (onModified handler)
      • AbstractProject#makeDisabled
      • AbstractProject#setScm
      • AbstractProject#triggers.replaceBy
      • final save()

      I think there is not so much sense to submit partial configurations to the disk due to the risk of data inconsistency there. I propose to wrap the selected code segment into a bulk operation

          [JENKINS-40435] Job configuration submission should be a bulk change

          Code changed in jenkins
          User: Oleg Nenashev
          Path:
          core/src/main/java/hudson/model/Job.java
          http://jenkins-ci.org/commit/jenkins/a0262d2fec648fe98e83a08f1735394a9f243f4d
          Log:
          JENKINS-40435 - Use BulkChange when processing config changes in Job#doConfigSubmit. (#2664)

          When an empty Freestyle job config gets submitted in the default configuration of Jenkins 2.35, the data is being saved to the disk 8 times. All of them happen in this code: https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java#L1227-L1246

          • setDisplayName
          • Project#getBuildWrappersList().rebuild (onModified handler)
          • Project#getBuilderList().rebuild (onModified handler)
          • Project#getPublisherList().rebuild (onModified handler)
          • AbstractProject#makeDisabled
          • AbstractProject#setScm
          • AbstractProject#triggers.replaceBy
          • final save()

          There is not so much sense to save partial configurations to the disk due to the risk of data inconsistency there. This change just wraps the config submission section of the job into the BulkChange clause.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: core/src/main/java/hudson/model/Job.java http://jenkins-ci.org/commit/jenkins/a0262d2fec648fe98e83a08f1735394a9f243f4d Log: JENKINS-40435 - Use BulkChange when processing config changes in Job#doConfigSubmit. (#2664) When an empty Freestyle job config gets submitted in the default configuration of Jenkins 2.35, the data is being saved to the disk 8 times . All of them happen in this code: https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java#L1227-L1246 setDisplayName Project#getBuildWrappersList().rebuild (onModified handler) Project#getBuilderList().rebuild (onModified handler) Project#getPublisherList().rebuild (onModified handler) AbstractProject#makeDisabled AbstractProject#setScm AbstractProject#triggers.replaceBy final save() There is not so much sense to save partial configurations to the disk due to the risk of data inconsistency there. This change just wraps the config submission section of the job into the BulkChange clause.

          Oleg Nenashev added a comment -

          Released in jenkins-2.37, marking as LTS candidate

          Oleg Nenashev added a comment - Released in jenkins-2.37, marking as LTS candidate

          Code changed in jenkins
          User: Oleg Nenashev
          Path:
          core/src/main/java/hudson/model/Job.java
          http://jenkins-ci.org/commit/jenkins/ea97d511948ad4f3ae0a972d693aabab4a993ec1
          Log:
          JENKINS-40435 - Use BulkChange when processing config changes in Job#doConfigSubmit. (#2664)

          When an empty Freestyle job config gets submitted in the default configuration of Jenkins 2.35, the data is being saved to the disk 8 times. All of them happen in this code: https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java#L1227-L1246

          • setDisplayName
          • Project#getBuildWrappersList().rebuild (onModified handler)
          • Project#getBuilderList().rebuild (onModified handler)
          • Project#getPublisherList().rebuild (onModified handler)
          • AbstractProject#makeDisabled
          • AbstractProject#setScm
          • AbstractProject#triggers.replaceBy
          • final save()

          There is not so much sense to save partial configurations to the disk due to the risk of data inconsistency there. This change just wraps the config submission section of the job into the BulkChange clause.
          (cherry picked from commit a0262d2fec648fe98e83a08f1735394a9f243f4d)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: core/src/main/java/hudson/model/Job.java http://jenkins-ci.org/commit/jenkins/ea97d511948ad4f3ae0a972d693aabab4a993ec1 Log: JENKINS-40435 - Use BulkChange when processing config changes in Job#doConfigSubmit. (#2664) When an empty Freestyle job config gets submitted in the default configuration of Jenkins 2.35, the data is being saved to the disk 8 times . All of them happen in this code: https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Job.java#L1227-L1246 setDisplayName Project#getBuildWrappersList().rebuild (onModified handler) Project#getBuilderList().rebuild (onModified handler) Project#getPublisherList().rebuild (onModified handler) AbstractProject#makeDisabled AbstractProject#setScm AbstractProject#triggers.replaceBy final save() There is not so much sense to save partial configurations to the disk due to the risk of data inconsistency there. This change just wraps the config submission section of the job into the BulkChange clause. (cherry picked from commit a0262d2fec648fe98e83a08f1735394a9f243f4d)

          Marc Carter added a comment -

          oleg_nenashev what is the best way to determine if current Jenkins contains this change. I'm not sure how to use VersionNumber to check both the LTS 2.32.2 and master 2.37 versions

          Marc Carter added a comment - oleg_nenashev what is the best way to determine if current Jenkins contains this change. I'm not sure how to use VersionNumber to check both the LTS 2.32.2 and master 2.37 versions

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

              Created:
              Updated:
              Resolved: