2016-09-08 16 views
2

私は、ターンキーリビジョンコントロール14.1にセットアップ用のgerrit 2.12.4を設定しました。新しい電子メール機能を登録しようとすると、500内部エラーが発生します。 error_logに次のエラーメッセージが表示され、その解釈方法がわかりません。ここでGerrit Register新規メール500エラー

はconfigです:

[gerrit]                                                   
     basePath = /srv/repos/git/gerrit2/                                           
     canonicalWebUrl = http://revision-control:7900/                                        
[database]                                                   
     type = mysql                                                
     hostname = localhost                                              
     database = reviewdb                                               
     username = gerrit2                                               
[index]                                                    
     type = LUCENE                                                
[auth]                                                    
     type = OPENID                                                
[receive]                                                   
     enableSignedPush = false                                             
[sendemail]                                                   
     enable = true                                                
     smtpServer = smtp.office365.com                                            
     smtpServerPort = 587                                              
     smtpUser = [email protected]                                            
     smtpEncryption = ssl                                              
     sslVerify = false                                               
[container]                                                   
     user = gerrit2 
     javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre                                       
[sshd]                                                    
     listenAddress = *:29418                                              
[httpd]                                                    
     listenUrl = http://*:7900/                                             
[cache]                                                    
     directory = cache 

私はプロセスがSMTP認証の前に道を失敗した疑い。 私はjavaパスをチェックしており、それは正しいと思われます。

また、javaフォルダとgerritフォルダの両方でgerrit2に完全なアクセス許可を与えました。

ご協力いただければ幸いです。

[2016-09-07 20:55:23,439] [main] INFO org.eclipse.jetty.server.ServerConnector : Started [email protected]{HTTP/1.1}{0.0.0.0:7900}                   
[2016-09-07 20:55:23,440] [main] INFO org.eclipse.jetty.server.Server : Started @20499ms                               
[2016-09-07 20:55:23,442] [main] INFO com.google.gerrit.pgm.Daemon : Gerrit Code Review 2.12.4 ready                            
[2016-09-07 20:56:54,864] [HTTP-50] WARN org.eclipse.jetty.servlet.ServletHandler : Error for /accounts/self/emails/[email protected]                 
java.lang.ExceptionInInitializerError                                            
     at com.google.gerrit.server.mail.OutgoingEmail.add(OutgoingEmail.java:384)                                 
     at com.google.gerrit.server.mail.RegisterNewEmailSender.init(RegisterNewEmailSender.java:49)                            
     at com.google.gerrit.server.mail.OutgoingEmail.send(OutgoingEmail.java:92)                                 
     at com.google.gerrit.server.account.CreateEmail.apply(CreateEmail.java:134)                                 
     at com.google.gerrit.server.account.CreateEmail.apply(CreateEmail.java:101)                                 
     at com.google.gerrit.server.account.CreateEmail.apply(CreateEmail.java:42)                                 
     at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:328)                               
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)                                    
     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.gerrit.httpd.GetUserFilter.doFilter(GetUserFilter.java:82)                                 
     at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:73)                              
     at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:117)                                  
     at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:136)                            
     at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:105)                             
     at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)                              
     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 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.handler.RequestLogHandler.handle(RequestLogHandler.java:95)                              
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)                               
     at org.eclipse.jetty.server.Server.handle(Server.java:499)                                     
     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)                                         
Caused by: java.lang.IllegalStateException: Can only invoke this method before calling getInstance                             
     at org.apache.commons.validator.routines.DomainValidator.updateTLDOverride(DomainValidator.java:1680)                          
     at com.google.gerrit.server.mail.OutgoingEmailValidator.<clinit>(OutgoingEmailValidator.java:24)                           
     ... 41 more   
[2016-09-07 20:56:54,866] [HTTP-50] ERROR com.google.gerrit.pgm.http.jetty.HiddenErrorHandler : Error in PUT /accounts/self/emails/[email protected]              
java.lang.ExceptionInInitializerError                                            
     at com.google.gerrit.server.mail.OutgoingEmail.add(OutgoingEmail.java:384)                                 
     at com.google.gerrit.server.mail.RegisterNewEmailSender.init(RegisterNewEmailSender.java:49)                            
     at com.google.gerrit.server.mail.OutgoingEmail.send(OutgoingEmail.java:92)                                 
     at com.google.gerrit.server.account.CreateEmail.apply(CreateEmail.java:134)                                 
     at com.google.gerrit.server.account.CreateEmail.apply(CreateEmail.java:101)                                 
     at com.google.gerrit.server.account.CreateEmail.apply(CreateEmail.java:42)                                 
     at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:328)                               
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)                                    
     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.gerrit.httpd.GetUserFilter.doFilter(GetUserFilter.java:82)                                 
     at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:73)                              
     at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:117)                                  
     at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:136)                            
     at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:105)                             
     at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)                              
     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 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.handler.RequestLogHandler.handle(RequestLogHandler.java:95)                              
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)                               
     at org.eclipse.jetty.server.Server.handle(Server.java:499)                                     
     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)                                         
Caused by: java.lang.IllegalStateException: Can only invoke this method before calling getInstance                             
     at org.apache.commons.validator.routines.DomainValidator.updateTLDOverride(DomainValidator.java:1680)                          
     at com.google.gerrit.server.mail.OutgoingEmailValidator.<clinit>(OutgoingEmailValidator.java:24)                           
     ... 41 more 

答えて

3

2.12.4のゲリットビルドではバグだったようです。私はgerrit forumから何か助けを受けました。

問題と修正:

Fix usage of OutgoingEmailValidator to make sure TLD override works 

The call to DomainValidator.updateTLDOverride may only be done before 
the call to EmailValidator.getInstance otherwise it throws an exception. 

Putting the DomainValidator.updateTLDOverride call inside a static 
block doesn't seem to be safe enough. Protect it with an atomic boolean 
instead. 

The bugを固定し、構築し、将来的にマージ待っています。