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

SaveableListener.onchange() called multiple times after a job config save

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • core
    • None
    • 1.642.3

      I just noticed in Jenkins 1.398, SaveableListener.onchange() is called 5 times (instead of only one) after a job configuration save.

      This can be easily demonstrated by using a plugin using, in debug mode, the SaveableListener extension point (for example, scm-sync-configuration plugin) and updating job configuration.

          [JENKINS-8953] SaveableListener.onchange() called multiple times after a job config save

          Frédéric Camblor created issue -

          Daniel Beck added a comment -

          More information is needed to investigate this issue. The Job Config History plugin might help here.

          Chances are this is a side-effect of plugins saving their config with their own save() call.

          Daniel Beck added a comment - More information is needed to investigate this issue. The Job Config History plugin might help here. Chances are this is a side-effect of plugins saving their config with their own save() call.
          Daniel Beck made changes -
          Resolution New: Incomplete [ 4 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]
          R. Tyler Croy made changes -
          Workflow Original: JNJira [ 139097 ] New: JNJira + In-Review [ 188333 ]

          Marc Carter added a comment -

          This has always been the case. Jenkins v1.642.3 vanilla freestyle project saved. Here's the summary:

          WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.model.AbstractItem.setDisplayName(AbstractItem.java:167)
              at hudson.model.Job.doConfigSubmit(Job.java:1208)
          
          WARNING: SaveableListenerLogger heard hudson.plugins.promoted_builds.PromotionProcess@20706ee8[test_project/promotion/promo1]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.plugins.promoted_builds.PromotionProcess.configure(PromotionProcess.java:130)
              at hudson.plugins.promoted_builds.JobPropertyImpl.<init>(JobPropertyImpl.java:110)
              at hudson.plugins.promoted_builds.JobPropertyImpl.<init>(JobPropertyImpl.java:51)
              at hudson.plugins.promoted_builds.JobPropertyImpl$DescriptorImpl.newInstance(JobPropertyImpl.java:375)
              at hudson.plugins.promoted_builds.JobPropertyImpl$DescriptorImpl.newInstance(JobPropertyImpl.java:351)
              at hudson.model.JobProperty.reconfigure(JobProperty.java:187)
              at hudson.model.JobProperty.reconfigure(JobProperty.java:79)
              at hudson.util.DescribableList.rebuild(DescribableList.java:175)
              at hudson.model.Job.doConfigSubmit(Job.java:1215)
          
          WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.model.AbstractProject.setScm(AbstractProject.java:1570)
              at hudson.model.AbstractProject.submit(AbstractProject.java:1871)
              at hudson.model.Project.submit(Project.java:230)
              at hudson.model.Job.doConfigSubmit(Job.java:1225)
          
          WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.util.PersistedList.onModified(PersistedList.java:173)
              at hudson.util.PersistedList.replaceBy(PersistedList.java:85)
              at hudson.model.AbstractProject.submit(AbstractProject.java:1875)
              at hudson.model.Project.submit(Project.java:230)
              at hudson.model.Job.doConfigSubmit(Job.java:1225)
              
          WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.util.PersistedList.onModified(PersistedList.java:173)
              at hudson.util.PersistedList.replaceBy(PersistedList.java:85)
              at hudson.util.DescribableList.rebuild(DescribableList.java:187)
              at hudson.model.Project.submit(Project.java:234)
              at hudson.model.Job.doConfigSubmit(Job.java:1225)
              
          WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.util.PersistedList.onModified(PersistedList.java:173)
              at hudson.util.PersistedList.replaceBy(PersistedList.java:85)
              at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
              at hudson.model.Project.submit(Project.java:235)
              at hudson.model.Job.doConfigSubmit(Job.java:1225)
          
          WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.util.PersistedList.onModified(PersistedList.java:173)
              at hudson.util.PersistedList.replaceBy(PersistedList.java:85)
              at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
              at hudson.model.Project.submit(Project.java:236)
              at hudson.model.Job.doConfigSubmit(Job.java:1225)
          
          WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.AbstractProject.save(AbstractProject.java:306)
              at hudson.model.Job.doConfigSubmit(Job.java:1227)
          
          WARNING: ItemListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]
              at hudson.model.listeners.ItemListener.fireOnUpdated(ItemListener.java:193)
              at hudson.model.Job.doConfigSubmit(Job.java:1228)
          

          Marc Carter added a comment - This has always been the case. Jenkins v1.642.3 vanilla freestyle project saved. Here's the summary: WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.model.AbstractItem.setDisplayName(AbstractItem.java:167)     at hudson.model.Job.doConfigSubmit(Job.java:1208) WARNING: SaveableListenerLogger heard hudson.plugins.promoted_builds.PromotionProcess@20706ee8[test_project/promotion/promo1]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.plugins.promoted_builds.PromotionProcess.configure(PromotionProcess.java:130)     at hudson.plugins.promoted_builds.JobPropertyImpl.<init>(JobPropertyImpl.java:110)     at hudson.plugins.promoted_builds.JobPropertyImpl.<init>(JobPropertyImpl.java:51)     at hudson.plugins.promoted_builds.JobPropertyImpl$DescriptorImpl.newInstance(JobPropertyImpl.java:375)     at hudson.plugins.promoted_builds.JobPropertyImpl$DescriptorImpl.newInstance(JobPropertyImpl.java:351)     at hudson.model.JobProperty.reconfigure(JobProperty.java:187)     at hudson.model.JobProperty.reconfigure(JobProperty.java:79)     at hudson.util.DescribableList.rebuild(DescribableList.java:175)     at hudson.model.Job.doConfigSubmit(Job.java:1215) WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.model.AbstractProject.setScm(AbstractProject.java:1570)     at hudson.model.AbstractProject.submit(AbstractProject.java:1871)     at hudson.model.Project.submit(Project.java:230)     at hudson.model.Job.doConfigSubmit(Job.java:1225) WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.util.PersistedList.onModified(PersistedList.java:173)     at hudson.util.PersistedList.replaceBy(PersistedList.java:85)     at hudson.model.AbstractProject.submit(AbstractProject.java:1875)     at hudson.model.Project.submit(Project.java:230)     at hudson.model.Job.doConfigSubmit(Job.java:1225)      WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.util.PersistedList.onModified(PersistedList.java:173)     at hudson.util.PersistedList.replaceBy(PersistedList.java:85)     at hudson.util.DescribableList.rebuild(DescribableList.java:187)     at hudson.model.Project.submit(Project.java:234)     at hudson.model.Job.doConfigSubmit(Job.java:1225)      WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.util.PersistedList.onModified(PersistedList.java:173)     at hudson.util.PersistedList.replaceBy(PersistedList.java:85)     at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)     at hudson.model.Project.submit(Project.java:235)     at hudson.model.Job.doConfigSubmit(Job.java:1225) WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.util.PersistedList.onModified(PersistedList.java:173)     at hudson.util.PersistedList.replaceBy(PersistedList.java:85)     at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)     at hudson.model.Project.submit(Project.java:236)     at hudson.model.Job.doConfigSubmit(Job.java:1225) WARNING: SaveableListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.AbstractProject.save(AbstractProject.java:306)     at hudson.model.Job.doConfigSubmit(Job.java:1227) WARNING: ItemListenerLogger heard hudson.model.FreeStyleProject@2d2a42e6[test_project]     at hudson.model.listeners.ItemListener.fireOnUpdated(ItemListener.java:193)     at hudson.model.Job.doConfigSubmit(Job.java:1228)
          Marc Carter made changes -
          Resolution Original: Incomplete [ 4 ]
          Status Original: Resolved [ 5 ] New: Reopened [ 4 ]
          Marc Carter made changes -
          Attachment New: JENKINS-8952.v.1.642.3.txt [ 38514 ]
          Attachment New: WhoListensToTheListeners.java [ 38515 ]

          Marc Carter added a comment -

          Attached "testcase" and full stack traces for 1.642.3

          Marc Carter added a comment - Attached "testcase" and full stack traces for 1.642.3
          Marc Carter made changes -
          Environment Original: Windows 7, Jenkins 1.398 New: 1.642.3
          Marc Carter made changes -
          Attachment New: JENKINS-8953.v.1.642.3.txt [ 38516 ]

            Unassigned Unassigned
            fcamblor Frédéric Camblor
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: