tomaswolf / gerrit-gitblit-plugin

Integrates standard GitBlit (currently 1.7.1) as a repository viewer in Gerrit
Apache License 2.0
22 stars 5 forks source link

sometimes get `Plugin gitblit failed to initialize HTTP` on gerrit restart #16

Closed codekitchen closed 8 years ago

codekitchen commented 8 years ago

Running gerrit 2.11 and gerrit-gitblit 2.11.3.162.2

Sometimes when we restart gerrit a NullPointerException appears in the gerrit logs and visiting any gitblit page results in a 404 Not Found until we restart again. The log:

[2016-02-09 09:01:36,227] WARN  com.google.gerrit.httpd.plugins.HttpPluginServlet : Plugin gitblit failed to initialize HTTP
javax.servlet.ServletException: java.lang.NullPointerException
        at com.googlesource.gerrit.plugins.gitblit.GerritWicketFilter.init(GerritWicketFilter.java:96)
        at com.google.inject.servlet.FilterDefinition.init(FilterDefinition.java:112)
        at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:99)
        at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:220)
        at com.google.gerrit.httpd.plugins.HttpPluginServlet.load(HttpPluginServlet.java:187)
        at com.google.gerrit.httpd.plugins.HttpPluginServlet.install(HttpPluginServlet.java:161)
        at com.google.gerrit.httpd.plugins.HttpPluginServlet.init(HttpPluginServlet.java:141)
        at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:119)
        at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)
        at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:103)
        at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:220)
        at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:138)
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:852)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:298)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
        at org.eclipse.jetty.server.Server.start(Server.java:387)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
        at org.eclipse.jetty.server.Server.doStart(Server.java:354)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at com.google.gerrit.pgm.http.jetty.JettyServer$Lifecycle.start(JettyServer.java:124)
        at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
        at com.google.gerrit.pgm.Daemon.start(Daemon.java:293)
        at com.google.gerrit.pgm.Daemon.run(Daemon.java:205)
        at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:166)
        at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:93)
        at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:50)
        at Main.main(Main.java:25)
Caused by: java.lang.NullPointerException
        at com.gitblit.manager.RepositoryManager.updateLastChangeFields(RepositoryManager.java:1188)
        at com.gitblit.manager.RepositoryManager.loadRepositoryModel(RepositoryManager.java:954)
        at com.gitblit.manager.RepositoryManager.getRepositoryModel(RepositoryManager.java:715)
        at com.gitblit.manager.RepositoryManager.configureCommitCache(RepositoryManager.java:1943)
        at com.gitblit.manager.RepositoryManager.start(RepositoryManager.java:165)
        at com.gitblit.manager.RepositoryManager.start(RepositoryManager.java:102)
        at com.gitblit.servlet.GitblitContext.startManager(GitblitContext.java:247)
        at com.gitblit.servlet.GitblitContext.configureContext(GitblitContext.java:186)
        at com.gitblit.servlet.GitblitContext.contextInitialized(GitblitContext.java:131)
        at com.googlesource.gerrit.plugins.gitblit.GerritWicketFilter.init(GerritWicketFilter.java:93)
        ... 34 more

Apologies for not being on the latest gerrit version, I'm going to try and do that upgrade soon. I didn't see anything obviously related in the changelog for the plugin though.

tomaswolf commented 8 years ago

Please see release v2.11.3.162.2: it says quite explicitly "Gerrit 2.11.3 to 2.11.5 plugin..." and "This plugin version may not work correctly with earlier Gerrit versions."

Gerrit 2.11 is earlier than Gerrit 2.11.3, so I'm not surprised it fails.

Please use release v2.11.162.3 with Gerrit 2.11, or if you're feeling adventurous, you might try release v2.11.1.162.2 (built against Gerrit 2.11.1).

codekitchen commented 8 years ago

Oh shoot, I'm sorry about that. I missed that version mismatch, thanks. We were seeing the same issue using release 2.11.162.3 with this gerrit install, but I'll open a new issue if we're still seeing the problem after getting everything on the latest.

tomaswolf commented 8 years ago

In any case I'm not sure I can do anything about this NPE. It is raised deep in Gitblit at RepositoryManager@1188. On that line, an NPE should occur only if either repositorySizeCache or model are null. But if that were the case, an NPE would have been raised already earlier at lines 1183 or 1176.

Strange. Maybe giving the JVM Gerrit (and Gitblit) run in a little more memory might help. Otherwise: no idea how that particular exception trace could occur.