代码之家  ›  专栏  ›  技术社区  ›  Michael Borgwardt

检查SVN修改时CruiseControl挂起

  •  5
  • Michael Borgwardt  · 技术社区  · 15 年前

    自从将cruisecontrol构建服务器迁移到新机器后,它有时会在构建周期的“modificationset”阶段挂起(配置为每15分钟检查一次修改)。cruisecontrol本身保持响应,只是构建没有进展。

    当这种情况发生时,CPU上没有明显的负载,我已经看到它在这种状态下保持一个小时或更长时间,尽管它似乎最终会脱离这种状态。似乎没有一个模式,它发生在项目上。硬件是全新的,我运行memtest没有问题。

    这是系统配置:

    • Ubuntu9.04服务器,AMD64,完全升级
    • SVN版本1.5.4(R33841)-将安装最新版本的apt get
    • Sun JRE 64位Build 1.6.0_16-b01-同样是最新版本
    • CruiseControl 2.7.3(不是最新的)

    这就是我的修改集的样子

    <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>
    

    那么这里能做些什么呢?

    编辑: 以下是CruiseControl日志文件的摘录,显示ProjectA在16:07挂起(现在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
    
    3 回复  |  直到 13 年前
        1
  •  2
  •   Grzegorz Oledzki    15 年前

    另一个主意。您始终可以在调试模式下启动cruisecontrol jvm。当它挂起时,使用一些ide连接到它,例如eclipse。然后,您可以对cc应用程序的所有线程进行操作,暂停其中一些线程,看看它们在忙什么。

        2
  •  1
  •   Grzegorz Oledzki    15 年前

    您是否尝试从命令行手动发出相同的svn命令?那它挂起来了吗?

        3
  •  1
  •   gkrogers    13 年前

    只是一些提示:

    1. 它是在一天中的某个特定时间悬挂的吗?还是真的是随机的?是否有新的备份已到位,从而关闭了备份服务?

    2. 您是否将新的cruise服务器的config.xml与旧服务器的config.xml进行了比较(假设两者的cruise版本相同,那么它们是否具有完全相同的任务,或者是否有可能会减慢modificationset任务的速度)?

    3. 新旧机器是否与subversion存储库位于同一个网络上(或者至少它们在访问所有项目存储库时有相似的响应时间?)考虑到cruise服务器本身仍然具有响应性,它在接近挂起时访问的特定项目repo是否可能太大、太慢或在存储库中进行的操作太多?

    这些只是对指针进行故障排除-因此它们绝不是对您的问题的实际答案。这也许就是我解决问题的方法(除了像grzegorzoledzki的答案那样手动运行命令之外)。