Unexpected Error: Cannot read property: graphInfo

When I open the statistics page in TeamCity, I get an error message stating:

Unexpected Error

This was not supposed to happen. Please provide the error details to your TeamCity server maintainer.
If you maintain this TeamCity installation please report this error to JetBrains.

Error message: javax.el.ELException: Cannot read property: graphInfo

Trace: javax.servlet.jsp.JspException: javax.el.ELException: Cannot read property: graphInfo
     at org.apache.jsp.tag.web.graph.buildGraph_tag.doTag(buildGraph_tag.java:455)
     at org.apache.jsp.buildTypeStatistics_jsp._jspx_meth_stats_005fbuildGraph_005f0(buildTypeStatistics_jsp.java:150)
     at org.apache.jsp.buildTypeStatistics_jsp._jspService(buildTypeStatistics_jsp.java:78)
     at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
     at javax.servlet.http.HttpServlet.service(Unknown Source)
     at org.apache.jasper.servlet.JspServletWrapper.service(Unknown Source)
     at org.apache.jasper.servlet.JspServlet.serviceJspFile(Unknown Source)
     at org.apache.jasper.servlet.JspServlet.service(Unknown Source)
     at jetbrains.spring.web.TeamCityJSPServletImpl.service(TeamCityJSPServletImpl.java:1)
     at javax.servlet.http.HttpServlet.service(Unknown Source)
     at jetbrains.spring.web.JspController.doHandle(JspController.java:2)
     at jetbrains.buildServer.controllers.BaseController.handleRequestInternal(BaseController.java:73)
        [...]


I''ve installed TeamCity as a WAR into my existing TomCat server, running on a headless 64 bit Linux system. I've set java.awt.headless to true as recommended in the docs for a headless system:

> ps axuw |grep java
tomcat   23430  139 15.8 1500812 602352 pts/0  Sl   12:42   1:49 /opt/icedtea6-bin-1.6.2/bin/java -Djava.awt.headless=true -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/var/lib/tomcat-6//conf/logging.properties -classpath /usr/share/tomcat-6/lib/:/usr/share/tomcat-6//lib:/opt/icedtea6-bin-1.6.2/lib/tools.jar:/usr/share/tomcat-6//bin/bootstrap.jar:/usr/share/tomcat-6//bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat-6/ -Dcatalina.home=/usr/share/tomcat-6/ -Djava.io.tmpdir=/var/tmp/tomcat-6/ org.apache.catalina.startup.Bootstrap start


What could be the issue here?

6 comments
Comment actions Permalink

Try to remove tomcat/work directory, then start the server again.

0
Comment actions Permalink

What tomcat/work directory?

My tomcat accesses /home/tomcat/*, /etc/tomcat-6/*, /etc/conf.d/tomcat-6 and /usr/share/tomcat-6/*. There are no temporary files that I know of. My /tmp also has no indication of any tomcat-related files.

0
Comment actions Permalink

I do not know exactly where work directory resides in your case, but it definitely exists. This directory contains compiled classes for JSP pages.
Try to search for a directoryes with names like: TC_TeamCity-main, TC_feed, TC_*. Try to remove these directories and start server again.

0
Comment actions Permalink

Okay, thanks for the hint, I think I found the directory you were referring to in /var/run/tomcat-6/Catalina/localhost/teamcity. I also discovered a path list in the Gentoo Wiki which confirms this is what the tomcat/work directory is mapped to. Its contents looked like this:

TC_Duplicator
TC_FxCop
TC_Maven2
TC_TeamCity-main
TC_TeamCityArtifactsSizeStatisticsPlugin
TC_bugzilla
TC_buildDurationStatisticsPlugin
TC_changeViewers
TC_charisma
TC_clearcase
[...]


I've shut down TomCat, removed the entire contents of said directory and started TomCat again; then opened the TeamCity web interface, navigated to the statistics page for one of my projects, but the error remains.

I also noticed that in /var/tmp/tomcat-6, each time I reload the statistics page, a new 0 byte png appears named TC.chart.longnumber.png. That at least tells me that the rights for the temporary folder are okay...

0
Comment actions Permalink

Okay, one step further - the stack trace goes a bit longer in /var/log/tomcat-6/catalina.out and reveals this

Caused by: java.lang.Error: Probable fatal error:No fonts found.
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1088)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)


This looks like I'm missing some fonts. Now the guessing game begins :)

0
Comment actions Permalink

Solved!

I installed the "arkpandora" font set (and fontconfig for building the font cache) and now the statistics page displays fine. The fonts even look way better than when I was running TeamCity on Windows

Maybe this is something worth adding to the docs as the same would probably happen with the tar.gz distribution on a headless system. In addition to -Djava.awt.headless=true, one should ensure that the system has fontconfig and a set of default fonts installed. Either corefonts (deploys MS Arial, Verdana, etc. to Linux) or arkpandora (free replacement for MS fonts with compatible proportions) should do the trick; both packages are available on any distro I can think of.

Thanks for the help!

0

Please sign in to leave a comment.