On Tuesday, November 27, 2012 3:27:57 PM UTC+1, Jesse Glick wrote:

> On 11/27/2012 08:38 AM, Sandell, Robert wrote: 
> > I think it would be great if I could annotate my RunListener with for 
> example 
> > 
> >   
>  @Extension(beforeClass=”org.jenkins-ci.plugins.someplugin.ThatRunListener”) 
> or 
> >   
>  @Extension(afterClass=”org.jenkins-ci.plugins.someplugin.ThatRunListener”) 
> >    @Extension(beforePlugin=”some-plugin”) 
> >    @Extension(afterPlugin=”some-plugin”) 
>
> My $0.02: I once created a scheme for another module system that worked 
> just like you describe. It was a usability disaster (e.g. cycles 
> encountered only when testing 
> novel combinations, extensions trying to arrange themselves between other 
> extensions in long-obsolete plugins) and eventually had to be simplified to 
> just use ordinals. 
>
> > I don’t know how to find and handle cyclic references 
>
> Finding them is easy enough with a topological sort. Reporting the minimal 
> cycles preventing a topological sort is harder but doable (as I found). As 
> to recovering from 
> the situation sensibly—well, I think you just load the affected extensions 
> in an arbitrary order and hope for the best. 
>
> If you want to run before the Gerrit trigger, then pick a smaller number. 
> That is about as loosely coupled as you can get. 
>

Simple numbers is how daemons are arranged in Unix rc.levels and are 
usually sufficient for most use cases. Yet this is often easier configured 
from a centralized place.
Which makes me think that in the worst case, there should be a way to 
override the ordinal (or reorder the extensions) at either global jenkins 
configuration or job configuration level.

J

Reply via email to