On Tue, Sep 21, 2010 at 9:44 PM, Niklas Gustavsson <nik...@protocol7.com> wrote:
> On Tue, Sep 21, 2010 at 5:52 PM, Jesse Glick <jesse.gl...@oracle.com> wrote:
>> I had thought this was just a problem with the old Hudson installation, but
>> it is still true: clicking "Save" from a job's /configure screen takes
>> several minutes before the job's main page is loaded again. This should only
>> take a second or two. Maybe someone can trace what is taking so long?
>
> It's on my todo list, but I haven't yet looked into it.

Thread dumping a few job configuration saves, the all sit on this
stacktrace (even non-Maven builds):

"Handling POST /hudson/job/Ant_JDK_1.4/configSubmit : http-8090-40"
daemon prio=10 tid=0x0000000041940800 nid=0x46a4 runnable
[0x00007f2fa6721000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.String.intern(Native Method)
        at hudson.maven.ModuleDependency.<init>(ModuleDependency.java:48)
        at hudson.maven.ModuleDependency.<init>(ModuleDependency.java:54)
        at hudson.maven.MavenModule.asDependency(MavenModule.java:296)
        at hudson.maven.MavenModule.buildDependencyGraph(MavenModule.java:385)
        at 
hudson.maven.MavenModuleSet.buildDependencyGraph(MavenModuleSet.java:487)
        at hudson.model.DependencyGraph.<init>(DependencyGraph.java:100)
        at hudson.model.Hudson.rebuildDependencyGraph(Hudson.java:3346)
        at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:588)
        at sun.reflect.GeneratedMethodAccessor1225.invoke(Unknown Source)
...


Looking into the code, what this does is that the last thing Hudson do
on saving a job configuration is to recalculate the dependency graph
between all jobs. The DependencyGraph code warns that this is slow,
looks like it will loop over all jobs which in turn will loop over all
jobs... And in our pretty large environment, this adds up pretty fast.
If anyone got any idea, besides asking the Hudson devs to optimize
this code, feel free to speak up :-)

/niklas

Reply via email to