No Bamboo charts produced

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Symptoms

Bamboo fails to generate charts and the following appears in the atlassian-bamboo.log:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 2014-04-23 13:00:20,863 ERROR [http-bio-8085-exec-23] [runtime] Expression chart is undefined on line 4, column 144 in fragments/charts/reportChart.ftl. Expression chart is undefined on line 4, column 144 in fragments/charts/reportChart.ftl. The problematic instruction: ---------- ==> ${chart.imageMapName} [on line 4, column 142 in fragments/charts/reportChart.ftl] ---------- Java backtrace for programmers: ---------- freemarker.core.InvalidReferenceException: Expression chart is undefined on line 4, column 144 in fragments/charts/reportChart.ftl. at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124) at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134) at freemarker.core.Dot._getAsTemplateModel(Dot.java:78) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:210) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:210) at freemarker.core.Environment.process(Environment.java:190) at freemarker.template.Template.process(Template.java:289) at freemarker.template.Template.process(Template.java:243) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) 2014-04-23 13:00:21,301 INFO [http-bio-8085-exec-11] [AccessLogFilter] 0:0:0:0:0:0:0:1 GET http://bamboo.yourcompany.com/chart?filename= 29718kb 2014-04-23 13:00:21,305 ERROR [http-bio-8085-exec-11] [FiveOhOh] 500 Exception was thrown. javax.servlet.ServletException: Chart image not found at org.jfree.chart.servlet.DisplayChart.service(DisplayChart.java:149) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)

Diagnosis

Locate your Java installation path, and run the following command:

1 find /path/to/java/jdk1.7.0_25 -name '*.so' |xargs ldd

A list of libraries will not be found. These are among them:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 libcairo.so.2 => not found libfontconfig.so.1 => not found libfreetype.so.6 => not found libgcc_s.so.1 => not found libgdk_pixbuf-2.0.so.0 => not found libgdk-x11-2.0.so.0 => not found libgio-2.0.so.0 => not found libglib-2.0.so.0 => not found libGL.so.1 => not found libgmodule-2.0.so.0 => not found libgobject-2.0.so.0 => not found libgstreamer-lite.so => not found libgthread-2.0.so.0 => not found libgtk-x11-2.0.so.0 => not found libmawt.so => not found libpango-1.0.so.0 => not found libpangocairo-1.0.so.0 => not found libpangoft2-1.0.so.0 => not found libstdc++.so.6 => not found libX11.so.6 => not found libXext.so.6 => not found libXi.so.6 => not found libxml2.so.2 => not found

Cause

An JDK distribution was downloaded from Oracle website, not from Yum or RPM, and was installed in a headless server profile. That's why it's missing all the required dependencies.

Solution

Resolution

All font libraries (not present on headless servers) have to be in place to render charts.

The easiest way to resolve this is to install a non-headless JRE distribution package or a packaged JDK on the server (even if it won't be used). This will put all dependencies in place. In most cases, installing a JDK from Yum EPEL repository, then updating JAVA_HOME fixes this problem.

The other option is to keep installing packages until (almost) all libraries marked as not found are available.

Updated on April 2, 2025

Still need help?

The Atlassian Community is here for you.