5

Since migrating a Cruisecontrol build server to a new machine, it sometimes hangs during the "modificationset" stage of the build cycle (it is configured to check for modifications every 15 minutes). Cruisecontrol itself stays responsive, only the build does not progress.

There is no significant load on the CPU when this happens, and I've seen it stay in this state for an hour or more, though it seems to break out of this state eventually. There doesn't seem to be a pattern to which projects it happens to. The hardware is brand new, and I have run a memtest with no problems.

This is the system configuration:

  • Ubuntu 9.04 server, amd64, fully upgraded
  • svn version 1.5.4 (r33841) - the most recent version apt-get will install
  • Sun JRE 64 bit build 1.6.0_16-b01 - again, most recent version
  • CruiseControl 2.7.3 (not the most recent)

This is how my modificationsets look like

<modificationset quietperiod="10">
    <veto><!-- there are several of these -->
        <triggers>
            <svn LocalWorkingCopy="${checkout_dir}/base" />
        </triggers>
        <buildstatus logdir="${log_dir}/base" />
    </veto>
    <timebuild time="2330" />
    <svn LocalWorkingCopy="${checkout_dir}/${project.name}" />
</modificationset>

So what could be done here?

Edit: Here's a excerpt from the cruisecontrol log file, showing projectA hanging at 16:07 (it is still hanging now at 17:48)

2009-10-27 16:07:55,096 [Thread-38860] INFO  Project          - Project projectA:  bootstrapping
2009-10-27 16:07:55,096 [Thread-38860] INFO  ProjectController - projectA Controller: build progress event: bootstrapping
2009-10-27 16:07:55,262 [Thread-38862] INFO  ScriptRunner     - Buildfile: work/build-cruisecontrol.xml
2009-10-27 16:07:59,230 [Thread-38860] INFO  AntBootstrapper  - Bootstrap successful.
2009-10-27 16:07:59,230 [Thread-38860] INFO  Project          - Project projectA:  checking for modifications
2009-10-27 16:07:59,230 [Thread-38860] INFO  ProjectController - projectA Controller: build progress event: checking for modifications
2009-10-27 16:11:14,954 [Project projectB thread] INFO  Project          - Project projectB:  in build queue
4

3 回答 3

2

另一个想法。您始终可以在调试模式下启动 CruiseControl JVM。每当它挂起时,使用一些 IDE 连接到它,例如 Eclipse。然后您可以查看 CC 应用程序的所有线程,并暂停其中一些线程,看看它们在忙什么。

于 2009-10-27T19:49:54.177 回答
1

只是一些指针:

  1. 它会在一天中的特定时间挂起吗?还是真的是随机的?是否有任何新的备份会关闭备份服务?

  2. 您是否将新 Cruise 服务器的 config.xml 与旧的进行了比较(假设 Cruise 版本在两者上相同,它们是否具有完全相同的任务,或者是否有某些东西可能会减慢修改集任务的速度)?

  3. 新旧机器是否与您的 subversion 存储库位于同一网络上(或者至少它们在访问所有项目存储库时具有相似的响应时间?)鉴于 Cruise 服务器本身保持响应,特定项目存储库是否可能它在接近挂起时访问太大,太慢或存储库中发生的事情太多?

这些只是故障排除指针 - 因此它们绝不是您问题的实际答案。这也许是我解决问题的方式(除了手动运行命令,如 GrzegorzOledzki 的回答)。

于 2009-10-27T08:03:40.097 回答
1

您是否尝试过从命令行手动发出相同的 SVN 命令?那它会挂吗?

于 2009-10-26T17:14:13.837 回答