server error when using gerrit+github

707 views
Skip to first unread message

Luffy Ge

unread,
Dec 28, 2015, 1:57:02 AM12/28/15
to Repo and Gerrit Discussion
Hi all,
  I installed gerrit 2.11.5 + github-oauth-2.11 in lib + github-plugin-2.11 in plugins in ubuntu follow the README file in 2.11 release, I could access the home page of gerrit, but when I use github account to login, I got a "server error" in my browser.
  The gerrit.config is below:
[gerrit]
    basePath = /home/luffy/gerrit-repo
    canonicalWebUrl = http://localhost:8080/project/
[database]
    type = h2
    database = db/ReviewDB
[index]
    type = LUCENE
[auth]
    type = HTTP
    httpHeader = GITHUB_USER
    logoutUrl = /oauth/reset
    httpExternalIdHeader = GITHUB_OAUTH_TOKEN
    loginUrl = login
    loginText = Sign-in with GitHub
    registerPageUrl = "/#/register"
    httpDisplayNameHeader = GITHUB_NAME
        httpEmailHeader = GITHUB_EMAIL
[sendemail]
    smtpServer = localhost
[container]
    user = luffy
    javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre
[sshd]
    listenAddress = *:29418
[httpd]
    listenUrl = proxy-https://localhost:8080/project/
    filterClass = com.googlesource.gerrit.plugins.github.oauth.OAuthFilter
[cache]
    directory = cache
[github]
    url = https://github.com
    apiUrl = https://api.github.com
    clientId = ****


The error log is below:
[2015-12-27 19:50:35,599] ERROR com.google.gerrit.httpd.restapi.RestApiServlet : Error in GET /project/changes/?n=25&O=81
java.lang.IllegalStateException: Missing project All-Projects
    at com.google.gerrit.server.project.ProjectCacheImpl.getAllProjects(ProjectCacheImpl.java:110)
    at com.google.gerrit.server.account.CapabilityControl.<init>(CapabilityControl.java:55)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.google.inject.internal.DefaultConstructionProxyFactory$2.newInstance(DefaultConstructionProxyFactory.java:86)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
    at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
    at com.google.inject.assistedinject.FactoryProvider2.invoke(FactoryProvider2.java:770)
    at com.sun.proxy.$Proxy55.create(Unknown Source)
    at com.google.gerrit.server.CurrentUser.getCapabilities(CurrentUser.java:94)
    at com.google.gerrit.server.query.change.QueryProcessor.getPermittedLimit(QueryProcessor.java:173)
    at com.google.gerrit.server.query.change.QueryProcessor.isDisabled(QueryProcessor.java:168)
    at com.google.gerrit.server.query.change.QueryChanges.query(QueryChanges.java:116)
    at com.google.gerrit.server.query.change.QueryChanges.apply(QueryChanges.java:99)
    at com.google.gerrit.server.query.change.QueryChanges.apply(QueryChanges.java:40)
    at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:324)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:287)
    at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:277)
    at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:182)
    at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
    at com.google.gerrit.httpd.GetUserFilter.doFilter(GetUserFilter.java:82)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
    at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:73)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
    at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:117)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
    at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:64)
    at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:57)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
    at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
    at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119)
    at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133)
    at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130)
    at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203)
    at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthWebFilter.doFilter(OAuthWebFilter.java:106)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthFilter.doFilter(OAuthFilter.java:83)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:497)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)
[2015-12-27 19:50:40,783] WARN  org.eclipse.jetty.servlet.ServletHandler : /project/oauth
java.io.IOException: Invalid authentication state
    at com.googlesource.gerrit.plugins.github.oauth.OAuthProtocol.loginPhase2(OAuthProtocol.java:228)
    at com.googlesource.gerrit.plugins.github.oauth.GitHubLogin.login(GitHubLogin.java:104)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthWebFilter.login(OAuthWebFilter.java:127)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthWebFilter.doFilter(OAuthWebFilter.java:92)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthFilter.doFilter(OAuthFilter.java:83)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:497)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)
[2015-12-27 19:50:40,802] ERROR com.google.gerrit.pgm.http.jetty.HiddenErrorHandler : Error in GET /project/oauth?code=ce4adce51bf9a86aec1a&state=bw9R_2sFcCIE_e9mN1ICb2Oyq6w%3D%2C%2Fproject%2Flogin
java.io.IOException: Invalid authentication state
    at com.googlesource.gerrit.plugins.github.oauth.OAuthProtocol.loginPhase2(OAuthProtocol.java:228)
    at com.googlesource.gerrit.plugins.github.oauth.GitHubLogin.login(GitHubLogin.java:104)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthWebFilter.login(OAuthWebFilter.java:127)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthWebFilter.doFilter(OAuthWebFilter.java:92)
    at com.googlesource.gerrit.plugins.github.oauth.OAuthFilter.doFilter(OAuthFilter.java:83)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:497)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)

I think the problem is "Invalid authentication state", but I can confirm that the application ID in gerrit.config and secret in secure.config is correct. any help me to out of here would be very appreciate.

Luca Milanesio

unread,
Dec 28, 2015, 6:30:10 AM12/28/15
to Luffy Ge, Repo and Gerrit Discussion
Think you have two problems:

Problem #1 - missing All-Projects
Problem #2 - invalid oauth state

For resolving #1, remove everything (DB, git, tmp, cache, index) and re-run gerrit init + gerrit index
For resolving #2, check that your time is synchronised (gerrit time, browser time) and your session is getting through JSESSIONID

Luca.

--
--
To unsubscribe, email repo-discuss...@googlegroups.com
More info at http://groups.google.com/group/repo-discuss?hl=en

---
You received this message because you are subscribed to the Google Groups "Repo and Gerrit Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to repo-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Luffy Ge

unread,
Dec 29, 2015, 8:17:10 PM12/29/15
to Luca Milanesio, Repo and Gerrit Discussion
OK, so does anybody can help me out of here? really thanks:)

Luca Milanesio

unread,
Dec 29, 2015, 8:27:26 PM12/29/15
to Luffy Ge, Repo and Gerrit Discussion
Hi Luffy,
have you tried following the suggested actions?

Problem #1 => wipe out your Gerrit site and re-run "java -jar gerrit.war init -d /some/gerrit/site"
Problem #2 => once logged in Gerrit, check if your browser has the JSESSIONID cookie

Hope this helps.

Luca.

Luffy Ge

unread,
Dec 30, 2015, 4:10:18 AM12/30/15
to Luca Milanesio, Repo and Gerrit Discussion
Hi Luca,
for 1, I think I could solve it.
for 2, yes, I could find it from firefox page info, the information is following:
Name:JSESSIONID
Content:w2kucwhrs61nwhumknxgod12
Host:localhost
Path:/project
Send for:Encrypted connections only
Expires:At end of session

Luca Milanesio

unread,
Dec 30, 2015, 4:17:06 AM12/30/15
to Luffy Ge, Repo and Gerrit Discussion
There you go :-) ... "Send for: Encrypted connections only".
Are you sure you've enabled HTTPS on localhost?

What is your Gerrit canonical web URL? And the one you see in the browser?

Luca.

Luffy Ge

unread,
Jan 4, 2016, 1:33:58 AM1/4/16
to Luca Milanesio, Repo and Gerrit Discussion

luca.mi...@gmail.com

unread,
Jan 5, 2016, 2:12:15 AM1/5/16
to Luffy Ge, Repo and Gerrit Discussion
From your Gerrit config it seems you have configured an HTTPS reverse proxy but your canonical URL is still http://localhost:8080.

So you can either disable the https reverse proxy config OR fix the Gerrit Canonical URL.

At the moment Gerrit is sending Cookies for an HTTPS connection but you are using http from your browser: cookies are then not transmitted for security reasons.

Luca

Sent from my iPhone
Reply all
Reply to author
Forward
0 new messages