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

Basic Branch 1.3 thows AbstractMethodError not Fully Backwards Compatible

      first mentioned in JENKINS-38552

      I was asked to assign to fbelzunc by stephenconnolly

      after upgrading to 1.3 i started getting this in my logs

      SCMEventListener.onSCMHeadEvent(SCMHeadEvent) jenkins.branch.MultiBranchProject$SCMEventListenerImpl@1cf8cddc propagated an exception
      java.lang.AbstractMethodError: jenkins.branch.BranchBuildStrategy.isAutomaticBuild(Ljenkins/scm/api/SCMSource;Ljenkins/scm/api/SCMHead;Ljenkins/scm/api/SCMRevision;Ljenkins/scm/api/SCMRevision;Lhudson/model/TaskListener;)Z
      	at jenkins.branch.buildstrategies.basic.AllBranchBuildStrategyImpl.isAutomaticBuild(AllBranchBuildStrategyImpl.java:77)
      	at jenkins.branch.BranchBuildStrategy.automaticBuild(BranchBuildStrategy.java:190)
      	at jenkins.branch.MultiBranchProject.isAutomaticBuild(MultiBranchProject.java:2231)
      	at jenkins.branch.MultiBranchProject.access$1200(MultiBranchProject.java:125)
      	at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:2076)
      	at jenkins.scm.api.SCMHeadObserver$Wrapped.observe(SCMHeadObserver.java:638)
      	at jenkins.scm.api.SCMHeadEvent$Validated.observe(SCMHeadEvent.java:295)
      	at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
      	at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)
      	at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:917)
      	at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
      	at jenkins.scm.api.SCMSource.fetch(SCMSource.java:327)
      	at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.processHeadUpdate(MultiBranchProject.java:1576)
      	at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.onSCMHeadEvent(MultiBranchProject.java:1177)
      	at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
      	at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
      	at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:479)
      	at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
       

       

      the issue is the all/none/any wrapper strategies now assume any wrapped strategy implements the new interface method...however older plugin will NOT implement such a method.

      Could add another interface inbetween, or use reflection, or try catch to make this all work.

      but as is...backwards compatability from 1.2 to 1.3 is not maintained.

       

      commented in PR too https://github.com/jenkinsci/basic-branch-build-strategies-plugin/pull/4/files#r274398090

       

      this causes all builds to not execute wherever any/all/none are used.

       

       

      Think of it like this.  i have build stategy plugin X published last month that implementx branc-api 2.3.

      you have updated basic build strategies to REQUIRE all other build strategies now implement 2.4 (and in most recent pr now 2.4.1)  but the author of plugin X isn't ready for that..and there's no update. now we can't use plugin X anymore.

       

          [JENKINS-56984] Basic Branch 1.3 thows AbstractMethodError not Fully Backwards Compatible

          chirs damour created issue -
          chirs damour made changes -
          Summary Original: Basic Branch 1.3 not Fully Backwards Compatible New: Basic Branch 1.3 thows AbstractMethodError not Fully Backwards Compatible
          chirs damour made changes -
          Description Original: first mentioned in JENKINS-38522

          I was asked to assign to [~fbelzunc] by [~stephenconnolly]

          after upgrading to 1.3 i started getting this in my logs
          {code:java}

          SCMEventListener.onSCMHeadEvent(SCMHeadEvent) jenkins.branch.MultiBranchProject$SCMEventListenerImpl@1cf8cddc propagated an exception
          java.lang.AbstractMethodError: jenkins.branch.BranchBuildStrategy.isAutomaticBuild(Ljenkins/scm/api/SCMSource;Ljenkins/scm/api/SCMHead;Ljenkins/scm/api/SCMRevision;Ljenkins/scm/api/SCMRevision;Lhudson/model/TaskListener;)Z
          at jenkins.branch.buildstrategies.basic.AllBranchBuildStrategyImpl.isAutomaticBuild(AllBranchBuildStrategyImpl.java:77)
          at jenkins.branch.BranchBuildStrategy.automaticBuild(BranchBuildStrategy.java:190)
          at jenkins.branch.MultiBranchProject.isAutomaticBuild(MultiBranchProject.java:2231)
          at jenkins.branch.MultiBranchProject.access$1200(MultiBranchProject.java:125)
          at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:2076)
          at jenkins.scm.api.SCMHeadObserver$Wrapped.observe(SCMHeadObserver.java:638)
          at jenkins.scm.api.SCMHeadEvent$Validated.observe(SCMHeadEvent.java:295)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)
          at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:917)
          at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
          at jenkins.scm.api.SCMSource.fetch(SCMSource.java:327)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.processHeadUpdate(MultiBranchProject.java:1576)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.onSCMHeadEvent(MultiBranchProject.java:1177)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
          at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:479)
          at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
           {code}
           

          the issue is the all/none/any wrapper strategies now assume any wrapped strategy implements the new interface method...however older plugin will NOT implement such a method.

          Could add another interface inbetween, or use reflection, or try catch to make this all work.

          but as is...backwards compatability from 1.2 to 1.3 is not maintained.

           

          commented in PR too https://github.com/jenkinsci/basic-branch-build-strategies-plugin/pull/4/files#r274398090

           
          New: first mentioned in JENKINS-38522

          I was asked to assign to [~fbelzunc] by [~stephenconnolly]

          after upgrading to 1.3 i started getting this in my logs
          {code:java}
          SCMEventListener.onSCMHeadEvent(SCMHeadEvent) jenkins.branch.MultiBranchProject$SCMEventListenerImpl@1cf8cddc propagated an exception
          java.lang.AbstractMethodError: jenkins.branch.BranchBuildStrategy.isAutomaticBuild(Ljenkins/scm/api/SCMSource;Ljenkins/scm/api/SCMHead;Ljenkins/scm/api/SCMRevision;Ljenkins/scm/api/SCMRevision;Lhudson/model/TaskListener;)Z
          at jenkins.branch.buildstrategies.basic.AllBranchBuildStrategyImpl.isAutomaticBuild(AllBranchBuildStrategyImpl.java:77)
          at jenkins.branch.BranchBuildStrategy.automaticBuild(BranchBuildStrategy.java:190)
          at jenkins.branch.MultiBranchProject.isAutomaticBuild(MultiBranchProject.java:2231)
          at jenkins.branch.MultiBranchProject.access$1200(MultiBranchProject.java:125)
          at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:2076)
          at jenkins.scm.api.SCMHeadObserver$Wrapped.observe(SCMHeadObserver.java:638)
          at jenkins.scm.api.SCMHeadEvent$Validated.observe(SCMHeadEvent.java:295)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)
          at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:917)
          at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
          at jenkins.scm.api.SCMSource.fetch(SCMSource.java:327)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.processHeadUpdate(MultiBranchProject.java:1576)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.onSCMHeadEvent(MultiBranchProject.java:1177)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
          at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:479)
          at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
           {code}
           

          the issue is the all/none/any wrapper strategies now assume any wrapped strategy implements the new interface method...however older plugin will NOT implement such a method.

          Could add another interface inbetween, or use reflection, or try catch to make this all work.

          but as is...backwards compatability from 1.2 to 1.3 is not maintained.

           

          commented in PR too [https://github.com/jenkinsci/basic-branch-build-strategies-plugin/pull/4/files#r274398090]

           

          this causes all builds to not execute wherever any/all/none are used.

           
          chirs damour made changes -
          Environment New: Jenkins ver. 2.150.1
          branch-api-plugin 2.4
          basic build strategies 1.3
          chirs damour made changes -
          Description Original: first mentioned in JENKINS-38522

          I was asked to assign to [~fbelzunc] by [~stephenconnolly]

          after upgrading to 1.3 i started getting this in my logs
          {code:java}
          SCMEventListener.onSCMHeadEvent(SCMHeadEvent) jenkins.branch.MultiBranchProject$SCMEventListenerImpl@1cf8cddc propagated an exception
          java.lang.AbstractMethodError: jenkins.branch.BranchBuildStrategy.isAutomaticBuild(Ljenkins/scm/api/SCMSource;Ljenkins/scm/api/SCMHead;Ljenkins/scm/api/SCMRevision;Ljenkins/scm/api/SCMRevision;Lhudson/model/TaskListener;)Z
          at jenkins.branch.buildstrategies.basic.AllBranchBuildStrategyImpl.isAutomaticBuild(AllBranchBuildStrategyImpl.java:77)
          at jenkins.branch.BranchBuildStrategy.automaticBuild(BranchBuildStrategy.java:190)
          at jenkins.branch.MultiBranchProject.isAutomaticBuild(MultiBranchProject.java:2231)
          at jenkins.branch.MultiBranchProject.access$1200(MultiBranchProject.java:125)
          at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:2076)
          at jenkins.scm.api.SCMHeadObserver$Wrapped.observe(SCMHeadObserver.java:638)
          at jenkins.scm.api.SCMHeadEvent$Validated.observe(SCMHeadEvent.java:295)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)
          at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:917)
          at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
          at jenkins.scm.api.SCMSource.fetch(SCMSource.java:327)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.processHeadUpdate(MultiBranchProject.java:1576)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.onSCMHeadEvent(MultiBranchProject.java:1177)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
          at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:479)
          at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
           {code}
           

          the issue is the all/none/any wrapper strategies now assume any wrapped strategy implements the new interface method...however older plugin will NOT implement such a method.

          Could add another interface inbetween, or use reflection, or try catch to make this all work.

          but as is...backwards compatability from 1.2 to 1.3 is not maintained.

           

          commented in PR too [https://github.com/jenkinsci/basic-branch-build-strategies-plugin/pull/4/files#r274398090]

           

          this causes all builds to not execute wherever any/all/none are used.

           
          New: first mentioned in JENKINS-38522

          I was asked to assign to [~fbelzunc] by [~stephenconnolly]

          after upgrading to 1.3 i started getting this in my logs
          {code:java}
          SCMEventListener.onSCMHeadEvent(SCMHeadEvent) jenkins.branch.MultiBranchProject$SCMEventListenerImpl@1cf8cddc propagated an exception
          java.lang.AbstractMethodError: jenkins.branch.BranchBuildStrategy.isAutomaticBuild(Ljenkins/scm/api/SCMSource;Ljenkins/scm/api/SCMHead;Ljenkins/scm/api/SCMRevision;Ljenkins/scm/api/SCMRevision;Lhudson/model/TaskListener;)Z
          at jenkins.branch.buildstrategies.basic.AllBranchBuildStrategyImpl.isAutomaticBuild(AllBranchBuildStrategyImpl.java:77)
          at jenkins.branch.BranchBuildStrategy.automaticBuild(BranchBuildStrategy.java:190)
          at jenkins.branch.MultiBranchProject.isAutomaticBuild(MultiBranchProject.java:2231)
          at jenkins.branch.MultiBranchProject.access$1200(MultiBranchProject.java:125)
          at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:2076)
          at jenkins.scm.api.SCMHeadObserver$Wrapped.observe(SCMHeadObserver.java:638)
          at jenkins.scm.api.SCMHeadEvent$Validated.observe(SCMHeadEvent.java:295)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)
          at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:917)
          at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
          at jenkins.scm.api.SCMSource.fetch(SCMSource.java:327)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.processHeadUpdate(MultiBranchProject.java:1576)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.onSCMHeadEvent(MultiBranchProject.java:1177)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
          at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:479)
          at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
           {code}
           

          the issue is the all/none/any wrapper strategies now assume any wrapped strategy implements the new interface method...however older plugin will NOT implement such a method.

          Could add another interface inbetween, or use reflection, or try catch to make this all work.

          but as is...backwards compatability from 1.2 to 1.3 is not maintained.

           

          commented in PR too [https://github.com/jenkinsci/basic-branch-build-strategies-plugin/pull/4/files#r274398090]

           

          this causes all builds to not execute wherever any/all/none are used.

           

           

          Think of it like this.  i have build stategy plugin X published last month that implementx branc-api 2.3.

          you have updated basic build strategies to REQUIRE all other build strategies now implement 2.4 (and in most recent pr now 2.4.1)  but the author of plugin X isn't ready for that..and there's no update. now we can't use plugin X anymore.

           

          chirs damour added a comment - others reporting same issue https://issues.jenkins-ci.org/browse/JENKINS-48296?focusedCommentId=364779&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-364779
          dan tran made changes -
          Description Original: first mentioned in JENKINS-38522

          I was asked to assign to [~fbelzunc] by [~stephenconnolly]

          after upgrading to 1.3 i started getting this in my logs
          {code:java}
          SCMEventListener.onSCMHeadEvent(SCMHeadEvent) jenkins.branch.MultiBranchProject$SCMEventListenerImpl@1cf8cddc propagated an exception
          java.lang.AbstractMethodError: jenkins.branch.BranchBuildStrategy.isAutomaticBuild(Ljenkins/scm/api/SCMSource;Ljenkins/scm/api/SCMHead;Ljenkins/scm/api/SCMRevision;Ljenkins/scm/api/SCMRevision;Lhudson/model/TaskListener;)Z
          at jenkins.branch.buildstrategies.basic.AllBranchBuildStrategyImpl.isAutomaticBuild(AllBranchBuildStrategyImpl.java:77)
          at jenkins.branch.BranchBuildStrategy.automaticBuild(BranchBuildStrategy.java:190)
          at jenkins.branch.MultiBranchProject.isAutomaticBuild(MultiBranchProject.java:2231)
          at jenkins.branch.MultiBranchProject.access$1200(MultiBranchProject.java:125)
          at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:2076)
          at jenkins.scm.api.SCMHeadObserver$Wrapped.observe(SCMHeadObserver.java:638)
          at jenkins.scm.api.SCMHeadEvent$Validated.observe(SCMHeadEvent.java:295)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)
          at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:917)
          at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
          at jenkins.scm.api.SCMSource.fetch(SCMSource.java:327)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.processHeadUpdate(MultiBranchProject.java:1576)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.onSCMHeadEvent(MultiBranchProject.java:1177)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
          at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:479)
          at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
           {code}
           

          the issue is the all/none/any wrapper strategies now assume any wrapped strategy implements the new interface method...however older plugin will NOT implement such a method.

          Could add another interface inbetween, or use reflection, or try catch to make this all work.

          but as is...backwards compatability from 1.2 to 1.3 is not maintained.

           

          commented in PR too [https://github.com/jenkinsci/basic-branch-build-strategies-plugin/pull/4/files#r274398090]

           

          this causes all builds to not execute wherever any/all/none are used.

           

           

          Think of it like this.  i have build stategy plugin X published last month that implementx branc-api 2.3.

          you have updated basic build strategies to REQUIRE all other build strategies now implement 2.4 (and in most recent pr now 2.4.1)  but the author of plugin X isn't ready for that..and there's no update. now we can't use plugin X anymore.

           
          New: first mentioned in JENKINS-38552

          I was asked to assign to [~fbelzunc] by [~stephenconnolly]

          after upgrading to 1.3 i started getting this in my logs
          {code:java}
          SCMEventListener.onSCMHeadEvent(SCMHeadEvent) jenkins.branch.MultiBranchProject$SCMEventListenerImpl@1cf8cddc propagated an exception
          java.lang.AbstractMethodError: jenkins.branch.BranchBuildStrategy.isAutomaticBuild(Ljenkins/scm/api/SCMSource;Ljenkins/scm/api/SCMHead;Ljenkins/scm/api/SCMRevision;Ljenkins/scm/api/SCMRevision;Lhudson/model/TaskListener;)Z
          at jenkins.branch.buildstrategies.basic.AllBranchBuildStrategyImpl.isAutomaticBuild(AllBranchBuildStrategyImpl.java:77)
          at jenkins.branch.BranchBuildStrategy.automaticBuild(BranchBuildStrategy.java:190)
          at jenkins.branch.MultiBranchProject.isAutomaticBuild(MultiBranchProject.java:2231)
          at jenkins.branch.MultiBranchProject.access$1200(MultiBranchProject.java:125)
          at jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:2076)
          at jenkins.scm.api.SCMHeadObserver$Wrapped.observe(SCMHeadObserver.java:638)
          at jenkins.scm.api.SCMHeadEvent$Validated.observe(SCMHeadEvent.java:295)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)
          at jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)
          at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:917)
          at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)
          at jenkins.scm.api.SCMSource.fetch(SCMSource.java:327)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.processHeadUpdate(MultiBranchProject.java:1576)
          at jenkins.branch.MultiBranchProject$SCMEventListenerImpl.onSCMHeadEvent(MultiBranchProject.java:1177)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:246)
          at jenkins.scm.api.SCMHeadEvent$DispatcherImpl.fire(SCMHeadEvent.java:229)
          at jenkins.scm.api.SCMEvent$Dispatcher.run(SCMEvent.java:479)
          at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
           {code}
           

          the issue is the all/none/any wrapper strategies now assume any wrapped strategy implements the new interface method...however older plugin will NOT implement such a method.

          Could add another interface inbetween, or use reflection, or try catch to make this all work.

          but as is...backwards compatability from 1.2 to 1.3 is not maintained.

           

          commented in PR too [https://github.com/jenkinsci/basic-branch-build-strategies-plugin/pull/4/files#r274398090]

           

          this causes all builds to not execute wherever any/all/none are used.

           

           

          Think of it like this.  i have build stategy plugin X published last month that implementx branc-api 2.3.

          you have updated basic build strategies to REQUIRE all other build strategies now implement 2.4 (and in most recent pr now 2.4.1)  but the author of plugin X isn't ready for that..and there's no update. now we can't use plugin X anymore.

           

          The 1.3.1 release of basic-branch-build-strategies should fix the incorrect usage of SPI issue that causes this exception, not closing this however as the API changes required to fix the behavioural regressions introduced in the initial implementation of JENKINS-38552 will need to be replicated for these too

          Stephen Connolly added a comment - The 1.3.1 release of basic-branch-build-strategies should fix the incorrect usage of SPI issue that causes this exception, not closing this however as the API changes required to fix the behavioural regressions introduced in the initial implementation of  JENKINS-38552 will need to be replicated for these too

          Mark Waite added a comment -

          Changes mentioned by Stephen were made in the 1.3.2 release.

          Mark Waite added a comment - Changes mentioned by Stephen were made in the 1.3.2 release.
          Mark Waite made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: Open [ 1 ] New: Closed [ 6 ]

            fbelzunc FĂ©lix Belzunce Arcos
            drdamour chirs damour
            Votes:
            3 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: