我们在我们的连续构建环境中使用Hudson。出于某种原因,SCM轮询的线程会在一段时间后影响事端。我的设置经验丰富,但似乎没有任何工作。如何解决这个问题,并有一些脚本可以检测到这种情况下,能够重新启动哈德森?顺便说一句。重新启动哈德森是目前解决这个问题的唯一方法。Hudson SCM轮询线程轮询
4
A
回答
4
这与bug 5413类似,应该从2010年末开始使用HUDSON 5977(Hudson 1.380+或现在的Jenkins)来解决。
你不得不在那些线程some way to kill any thread stuck on the polling step:
非常原始的(我懒得来开发更好的东西,因为这不是很重要的问题),Groovy脚本为波纹管。
可能会发生这样的情况:它会杀死没有卡住的SCM轮询,但我们每天只能自动运行一次该脚本,所以它不会给我们带来麻烦。
您可以改进它,例如通过保存SCM轮询线程的id和名称,在一段时间后再次检查,并仅杀掉前一次检查中列表中的id的线程。
Thread.getAllStackTraces().keySet().each(){ item ->
if(item.getName().contains("SCM polling") &&
item.getName().contains("waiting for hudson.remoting")){
println "Interrupting thread " + item.getId() item.interrupt()
}
}
0
对方回答没有为我工作,但下面的脚本found the the issue for this problem做:
Jenkins.instance.getTrigger("SCMTrigger").getRunners().each()
{
item ->
println(item.getTarget().name)
println(item.getDuration())
println(item.getStartTime())
long millis = Calendar.instance.time.time - item.getStartTime()
if(millis > (1000 * 60 * 3)) // 1000 millis in a second * 60 seconds in a minute * 3 minutes
{
Thread.getAllStackTraces().keySet().each()
{
tItem ->
if (tItem.getName().contains("SCM polling") && tItem.getName().contains(item.getTarget().name))
{
println "Interrupting thread " + tItem.getName();
tItem.interrupt()
}
}
}
}
相关问题
- 1. 詹金斯Mutualize SCM轮询
- 2. Hudson - SCM轮询配置检测子项目的修订更改
- 3. C#线程和轮询
- 4. 多线程文件轮询
- 5. Xinput轮询线程设计
- 6. AJAX轮询频率 - 要长期轮询还是不轮询长轮询?
- 7. 轮询和手动轮询选择[SPEED]
- 8. 轮询vs长轮询与推(
- 9. 线程之间的可轮询信号
- 10. Java长轮询:分开线程?
- 11. asp.net线程与IRegisteredObject队列轮询
- 12. 线程调度轮询/调度调度
- 13. c#:什么是线程轮询?
- 14. 干净地打断zeromq轮询线程
- 15. 异步轮询可用于GUI线程
- 16. 轮询多线程和CPU使用率
- 17. 无轮询
- 18. 长轮询
- 19. 使用轮询
- 20. Java长轮询
- 21. BizTalk WCF_SQL轮询
- 22. SO_KEEPALIVE和轮询
- 23. Primefaces轮询
- 24. WebService和轮询
- 25. 轮询与delayed_job
- 26. Angularjs长轮询
- 27. activiti中的轮询程序
- 28. 从MySQL表查询轮询
- 29. php轮询循环查询
- 30. Biztalk文件轮询
什么SCM工具(S)您使用(SVN,汞等)? – pwan 2011-04-26 04:17:57
哪个哈德森版?你能否也给我们堆栈痕迹? – 2011-04-26 07:57:57