Java 检查SVN是否有修改时,Cruisecontrol挂起

Java 检查SVN是否有修改时,Cruisecontrol挂起,java,svn,cruisecontrol,Java,Svn,Cruisecontrol,由于将Cruisecontrol生成服务器迁移到新机器,它有时在生成周期的“modificationset”阶段挂起(配置为每15分钟检查一次修改)。Cruisecontrol本身保持响应,只是构建没有进展 当这种情况发生时,CPU上没有明显的负载,我看到它在这种状态下停留了一个小时或更长时间,尽管它似乎最终会脱离这种状态。似乎没有一个模式,它恰好发生在项目上。硬件是全新的,我已经运行了memtest,没有任何问题 这是系统配置: Ubuntu 9.04服务器,amd64,完全升级 svn版本

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

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

这是系统配置:

  • Ubuntu 9.04服务器,amd64,完全升级
  • svn版本1.5.4(r33841)-将安装apt get的最新版本
  • Sun JRE 64位版本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>

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

只是一些指针:

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

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

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


  • 这些只是故障排除的指针-所以它们决不是你问题的实际答案。这也许是我解决问题的方法(除了像GrzegorzOledzki的回答那样手动运行命令之外)。

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

    它也不会在CruiseControl中重复挂起,只是有时候,ant并不总是同一个项目。不管怎样,你在手动运行时有过同样的体验吗?哪怕一次?如果是这样,那么CruiseControl就不是问题所在。否则它与SvnModificationSet有关(或者不管调用什么类)。@GrzegorzOledzki:+1表示try by hand方法。开始故障排除的好地方。问题是:由于问题偶尔发生,当它不是通过命令行发生时,它不会告诉我任何事情-可能只是偶然的。另外,我也不知道确切的命令行等价物是什么。“svn日志”,我猜。我只是试了50次,没有问题。看起来像是“svn日志”,但有一些参数。您可以通过捕获以下日志行来跟踪发出的确切命令:(log.error(“error executing svn log command”+command,e);在svn.class中,它似乎不会在特定时间发生。巡航控制版本和配置完全相同,新机器与旧机器位于同一网络上,但与存储库(由不同部门集中管理)不同.Update:我现在已经成功地对挂起在CC中的项目运行了命令行svn查询-因此这绝对不是服务器上经常出现的一般问题-也许您需要针对项目依赖项而不是项目工作区本身运行它。(因为您使用了插件。)由于如果触发器的反馈以某种方式可用,则会立即中止/继续构建,因此有理由怀疑它正在等待项目依赖项的反馈?好主意,我一定会尝试
    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