google / gitiles

A simple browser for Git repositories.
https://gerrit.googlesource.com/gitiles/
Other
582 stars 174 forks source link

NoClassDefFoundError guava issue when running gitiles in tomcat #196

Open ilor opened 4 years ago

ilor commented 4 years ago

After I build a recent gitiles master, I can't run it in tomcat7/8 because I'm getting a Servlet.init() for servlet gitiles threw exception with a Caused by: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/SettableFuture.

I can't build a much older version because bazel is not letting me, but I have checked that manually swapping the guava jar to a 26 fixes the issue. Guava 27 or 28 (or 28.2 as on master) have this problem.

I can run a local build using run_dev.sh on the same machine. The full exception I;'m getting in tomcat is

javax.servlet.ServletException: Servlet.init() for servlet gitiles threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)
root cause

com.google.template.soy.error.SoyCompilationException: errors during Soy compilation
/com/google/gitiles/templates/BlameDetail.soy:33: error: Unexpected error while compiling template: 'gitiles.blameDetail'
Soy Stack:
VarRefNode: /com/google/gitiles/templates/BlameDetail.soy:33:5
ExprRootNode: /com/google/gitiles/templates/BlameDetail.soy:33:5
IfNode: /com/google/gitiles/templates/BlameDetail.soy:33:1
Compiler Stack:
com.google.template.soy.jbcsrc.UnexpectedCompilerFailureException: unexpected compile failure
while compiling:
VarRefNode: /com/google/gitiles/templates/BlameDetail.soy:33:5
ExprRootNode: /com/google/gitiles/templates/BlameDetail.soy:33:5
IfNode: /com/google/gitiles/templates/BlameDetail.soy:33:1
Caused by: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/SettableFuture
    at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3472)
    at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3476)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2134)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3951)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964)
    at com.google.template.soy.jbcsrc.restricted.BytecodeUtils.doIsAssignableFrom(BytecodeUtils.java:203)
    at com.google.template.soy.jbcsrc.restricted.BytecodeUtils.isDefinitelyAssignableFrom(BytecodeUtils.java:184)
    at com.google.template.soy.jbcsrc.ExpressionDetacher$BasicDetacher.resolveSoyValueProvider(ExpressionDetacher.java:132)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$CompilerVisitor.visitParam(ExpressionCompiler.java:779)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$CompilerVisitor.visitParam(ExpressionCompiler.java:287)
    at com.google.template.soy.jbcsrc.EnhancedAbstractExprNodeVisitor.visitVarRefNode(EnhancedAbstractExprNodeVisitor.java:64)
    at com.google.template.soy.exprtree.AbstractReturningExprNodeVisitor.visit(AbstractReturningExprNodeVisitor.java:100)
    at com.google.template.soy.jbcsrc.EnhancedAbstractExprNodeVisitor.visit(EnhancedAbstractExprNodeVisitor.java:38)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$CompilerVisitor.visit(ExpressionCompiler.java:315)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$CompilerVisitor.visitExprRootNode(ExpressionCompiler.java:320)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$CompilerVisitor.visitExprRootNode(ExpressionCompiler.java:287)
    at com.google.template.soy.exprtree.AbstractReturningExprNodeVisitor.visit(AbstractReturningExprNodeVisitor.java:77)
    at com.google.template.soy.jbcsrc.EnhancedAbstractExprNodeVisitor.visit(EnhancedAbstractExprNodeVisitor.java:38)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$CompilerVisitor.visit(ExpressionCompiler.java:315)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$CompilerVisitor.visit(ExpressionCompiler.java:287)
    at com.google.template.soy.basetree.AbstractReturningNodeVisitor.exec(AbstractReturningNodeVisitor.java:39)
    at com.google.template.soy.jbcsrc.ExpressionCompiler$BasicExpressionCompiler.compile(ExpressionCompiler.java:143)
    at com.google.template.soy.jbcsrc.ExpressionCompiler.compile(ExpressionCompiler.java:242)
    at com.google.template.soy.jbcsrc.ExpressionCompiler.compile(ExpressionCompiler.java:254)
    at com.google.template.soy.jbcsrc.SoyNodeCompiler.visitIfNode(SoyNodeCompiler.java:281)
    at com.google.template.soy.jbcsrc.SoyNodeCompiler.visitIfNode(SoyNodeCompiler.java:125)
    at com.google.template.soy.soytree.AbstractReturningSoyNodeVisitor.visit(AbstractReturningSoyNodeVisitor.java:101)
    at com.google.template.soy.jbcsrc.SoyNodeCompiler.visit(SoyNodeCompiler.java:250)
    at com.google.template.soy.jbcsrc.SoyNodeCompiler.visit(SoyNodeCompiler.java:125)
    at com.google.template.soy.basetree.AbstractReturningNodeVisitor.visitChildren(AbstractReturningNodeVisitor.java:59)
    at com.google.template.soy.jbcsrc.SoyNodeCompiler.visitChildrenInNewScope(SoyNodeCompiler.java:267)
    at com.google.template.soy.jbcsrc.SoyNodeCompiler.compile(SoyNodeCompiler.java:238)
    at com.google.template.soy.jbcsrc.SoyNodeCompiler.compile(SoyNodeCompiler.java:224)
    at com.google.template.soy.jbcsrc.TemplateCompiler.generateRenderMethod(TemplateCompiler.java:284)
    at com.google.template.soy.jbcsrc.TemplateCompiler.compile(TemplateCompiler.java:171)
    at com.google.template.soy.jbcsrc.BytecodeCompiler.compileTemplates(BytecodeCompiler.java:277)
    at com.google.template.soy.jbcsrc.BytecodeCompiler.compile(BytecodeCompiler.java:107)
    at com.google.template.soy.SoyFileSet.doCompileSoySauce(SoyFileSet.java:920)
    at com.google.template.soy.SoyFileSet.lambda$compileTemplates$8(SoyFileSet.java:888)
    at com.google.template.soy.SoyFileSet.entryPoint(SoyFileSet.java:643)
    at com.google.template.soy.SoyFileSet.compileTemplates(SoyFileSet.java:884)
    at com.google.template.soy.SoyFileSet.compileTemplates(SoyFileSet.java:868)
    at com.google.gitiles.DefaultRenderer.<init>(DefaultRenderer.java:52)
    at com.google.gitiles.DefaultRenderer.<init>(DefaultRenderer.java:34)
    at com.google.gitiles.GitilesFilter.setDefaultRenderer(GitilesFilter.java:334)
    at com.google.gitiles.GitilesFilter.setDefaultFields(GitilesFilter.java:306)
    at com.google.gitiles.GitilesFilter.init(GitilesFilter.java:211)
    at com.google.gitiles.GitilesServlet.init(GitilesServlet.java:105)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1199)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1143)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:822)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)