【问题标题】:Hudson failing to start哈德森未能启动
【发布时间】:2014-04-18 07:27:19
【问题描述】:

我已经成功地在 Windows 服务器上运行了 hudson。需要重新启动 hudson 服务。重新启动后,我得到以下错误。任何想法,或者是否有人遇到过这个问题。

org.jvnet.hudson.reactor.ReactorException:     com.google.common.util.concurrent.UncheckedExecutionException:     java.lang.NullPointerException
    at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:246)
    at hudson.model.Hudson.executeReactor(Hudson.java:719)
    at hudson.model.Hudson.<init>(Hudson.java:616)
    at org.eclipse.hudson.init.InitialRunnable.run(InitialRunnable.java:51)
    at java.lang.Thread.run(Thread.java:619)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException:     java.lang.NullPointerException
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2263)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
    at hudson.model.TopLevelItemsCache.get(TopLevelItemsCache.java:78)
    at hudson.model.LazyTopLevelItem.item(LazyTopLevelItem.java:144)
    at hudson.model.LazyTopLevelItem.hasPermission(LazyTopLevelItem.java:271)
    at hudson.model.Hudson.getItems(Hudson.java:1303)
    at hudson.model.Hudson.getItems(Hudson.java:223)
    at hudson.model.Hudson.getAllItems(Hudson.java:1367)
    at hudson.model.DependencyGraph.<init>(DependencyGraph.java:78)
    at hudson.model.Hudson.rebuildDependencyGraph(Hudson.java:3626)
    at hudson.model.Hudson$12.run(Hudson.java:2415)
    at     org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146)
    at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
    at hudson.model.Hudson$4.runTask(Hudson.java:699)
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
    at     java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    ... 1 more
Caused by: java.lang.NullPointerException
    at hudson.model.RunMap.recalcLastStable(RunMap.java:469)
    at hudson.model.RunMap.recalcMarkers(RunMap.java:209)
    at hudson.model.RunMap.setBuilds(RunMap.java:199)
    at hudson.model.RunMap.putAllRunValues(RunMap.java:225)
    at hudson.model.RunMap.reset(RunMap.java:292)
    at hudson.model.RunMap.load(RunMap.java:640)
    at hudson.model.AbstractProject.onLoad(AbstractProject.java:329)
    at hudson.model.BaseBuildableProject.onLoad(BaseBuildableProject.java:91)
    at hudson.model.TopLevelItemsCache$1.load(TopLevelItemsCache.java:64)
    at hudson.model.TopLevelItemsCache$1.load(TopLevelItemsCache.java:57)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
    ... 20 more

非常感谢帮助!

【问题讨论】:

  • 我认为可能是某些插件自己更新了,这可能导致问题吗?

标签: java ant hudson hudson-plugins hudson-api


【解决方案1】:

我遇到了类似的问题。停电了,一些文件损坏了。可以在没有任何工作的情况下启动 Hudson(我将所有工作移动到不同的目录)。

所以我浏览了 $HUDSON_HOME/jobs 中最新修改的作业并删除了

  • 空的 nextBuildNumber 文件
  • 空构建/_runmap.xml 文件
  • 带有空 build.xml 和/或 changelog.xml 文件的整个构建(builds/yyyy-MM-ss_HH-mm-ss 目录和 builds/xxx 链接)

【讨论】:

  • 非常感谢!!我按照同样的程序,它是成功的。
【解决方案2】:

这是我们遇到相同情况时使用的快速技巧:

#!/usr/bin/env python
"""Remove references from missing builds from all _runmap.xml files"""
from xml.dom.minidom import parse, parseString
import os
import glob

for buildRoot in glob.glob("/var/lib/hudson/jobs/*/builds/"):
    runmapFilename = buildRoot + "/_runmap.xml"
    if not os.path.exists(runmapFilename):
        continue

    dom = parse(runmapFilename)
    builds = dom.getElementsByTagName("builds")[0]
    changed = False
    for build in builds.getElementsByTagName("build"):
        buildDir = build.getElementsByTagName("buildDir")[0].childNodes[0].data
        if not os.path.exists(buildRoot + "/" + buildDir + "/build.xml"):
            changed = True
            print "missing", buildRoot, buildDir
            builds.removeChild(build)

    if changed:
        os.rename(runmapFilename, runmapFilename + ".org")
        f = open(runmapFilename, "w")
        f.write(dom.toxml())
        f.close()

【讨论】:

    【解决方案3】:

    不幸的是,我似乎丢失了已损坏作业的历史记录。

    为了让哈德森重新上线,我做了以下事情:

    • 完全移除 builds 文件夹
    • 删除了指向 lastS* 的链接
    • 将 nextBuildNumber 设置为 1

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多