Troubleshooting the BI Server
Troubleshooting the BI Server
Contents:
These are some things to check and steps to take if you are experiencing difficulties with the Pentaho BI server.
- BI Server 1.x
- Check your installation of Java
- Can't access Pentaho from another host
- Can't connect to data source
- "Exception in thread "main" java.lang.NoClassDefFoundError: Edition"
- "Could not create deployment"
- MySQL timeouts (C3PO fix)
- Port/Address already in use
- Out of memory errors
- "Can't create table", or "Unsuccessful: alter table"
- "Packet for query is too large"
- "Cannot get a connection, pool exhausted"
- "403 Not authorized" errors
- "Could not generate parameter template" / "Illegal HTML character"
- Cannot Save prpt Report in Dashboard
BI Server 1.x
Some things that might help when running BI Server 1.x.- add your host name to the hosts file
- create a /tmp_user directory and set permissions
# mkdir /tmp_user # chmod 1777 /tmp_user
- fix line endings on scripts
$ find ${PENTAHO} -iname "*.sh" -exec dos2unix {} + $ find ${PENTAHO} -iname "*.conf" -exec dos2unix {} + - set shell scripts to be executable
$ find ${PENTAHO} -iname "*.sh" -exec chmod +x {} +
Check your installation of Java
See the Java page for instructions and details.Can't access Pentaho from another host
If you're using Jboss, you need to configure Pentaho for remote access. Also, make sure that you are trying to connect to the right port. Pentaho by default uses port 8080.Can't connect to data source
See our guide to testing database connections."Exception in thread "main" java.lang.NoClassDefFoundError: Edition"
This might appear in your logs if you have spaces in the path where Pentaho is installed. Remove/replace the spaces and try again. This is due to a bug in Tomcat 5.5.26.References
- BI Server doesn't run when placed in a path with spaces
- Tomcat fails to start on linux if CATALINA_HOME contains a space
"Could not create deployment"
This could be caused by several different things. If Pentaho gives an error like this when you try to start it:Could not create deployment: file:/media/disk/parking/pentaho-demo/jboss/server/default/conf/jboss-service.xmlorg.jboss.deployment.DeploymentException: - nested throwable: (java.lang.reflect.InvocationTargetException)
127.0.0.1 localhost.localdomain localhost localhost pentaho-server pentaho-server.bizcubed.com.au
192.168.2.35 pentaho-server
MySQL timeouts (C3PO fix)
It can sometimes occur after Pentaho 1.x has been running for several hours with no interaction (e.g. if left running overnight). The problem can manifest itself in several ways, but you'll see JDBC/JNDI connection errors in the Pentaho log. One symptom is when you try to load the Web page, you get template errors. The solution is to use C3PO for connection pooling instead of DBCP. You can find an explanation here, which is based on this forum post. If you have Pentaho Subscription/Enterprise Edition, you will need to similarly deploy C3PO in the Management Services Console to allow it to connect to the Pentaho server (bugs BISERVER-1069 and BISERVER-1940). This is not required for Pentaho 2.Port/Address already in use
If you see errors in the server logs like this:Port 8083 already in use
SEVERE: StandardServer.await: create[8005]: java.net.BindException: Address already in use
netstat -tanp|grep 8083
- open VMware's Tomcat configuration (e.g. /usr/lib/vmware/webAccess/tomcat/apache-tomcat-6.0.16/conf/server.xml) in a text editor
- replace the following
- 8005 with 8805 (or another free port)
- 8009 with 8809 (or another free port)
Resources
- Existing Tomcat conflicts w Server 2.0b Tomcat
- Software Conflict - VMWare Server 2.0 vs Apache Tomcat
- Tomcat startup failed: Address already in use: JVM_Bind
Out of memory errors
Memory errors can be solved by tuning the memory available to the Java virtual machine."Can't create table", or "Unsuccessful: alter table"
This is to do with database permissions. By default, the users hibuser and pentaho_user require full permissions on the hibernate and quartz databases respectively. If you have restored a MySQL database from another system, make sure that the database has the same lower_case_table_names setting."Packet for query is too large"
You might see this error in the Pentaho logs if you're using a MySQL backend. There's a simple workaround:- Open your MySQL server configuration file (e.g. /etc/my.cnf) in a text editor
- In the [mysqld] section, add
max_allowed_packet = 16777216
- Save the file
- Restart the database
- Open your MySQL server configuration file (e.g. /etc/my.cnf) in a text editor
- In the [mysqldump] section, add
max_allowed_packet = 500M
- Save the file
- Rerun the mysqldump command.
Resources
"Cannot get a connection, pool exhausted"
You might see an error like this:12:30:57,956 ERROR [SQLLookupRule] 1d8e4f37-feee-11dd-b242-093687467d48:COMPONENT:context-29465591-1235093454253:My_Report.xactionConnectFactory.ERROR_0001 - Database connection could not be established to: my_datasource org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted
"403 Not authorized" errors
This can occur on Solaris and other UNIX platforms aside from Linux and Mac OS X. Solaris tar does not support long filenames and paths to the level that is required. The solution is to use gtar to extract the downloaded Pentaho archive. It is not in the PATH by default, so you may have to find it:find / -name gtar -print
Resources
"Could not generate parameter template" / "Illegal HTML character"
If when you try to run a report you get the message: "could not generate parameter template" and the .log file has an error that looks approximately like this: "Illegal HTML character: decimal 128", it is likely to be an issue of bad data quality. To debug this, do the following- Check which query in causing this error (it is likely to be a query which is used to generate a prompt: for example to prompt the user for a name of the customer the report is using a query 'select name from customer')
- Run this query, converting the result into 'UTF8'. For postgreSQL: For Mysql
select convert_to('some text', 'UTF8')mysql> SELECT OCT(128);
- The result will show octal values for characters that could not be represented otherwise.
- For example for decimal 128, the corresponding octal value is 200 (check the conversion table for the corresponding values)
Resources
- Conversion table
- String Functions and Operators in PostgreSQL
- String Functions and Operators in MySQL
Cannot Save prpt Report in Dashboard
If you are trying to add a prpt Report to your Dashboard, make sure all parameters have values for labels.