vCenter Orchestrator does not start with “java.lang.OutOfMemoryError: PermGen space” error

Today I want to share a funny experience we had with a clean vCO 5.1 install … Having a freshly installed vCenter 5.1 with an integrated installation of vCO upon first startup the vCO Service did not start and took (15!) minutes to finally reach a state where it was between starting and stopping. The log files included lots of information where in the end we always read something about “OutOfMemory”. Changing heapsize or increasing server memory did not help at all.

2013-02-13 21:09:59.620+0100 WARN  [RemotingServiceImpl] PermGen space
java.lang.OutOfMemoryError: PermGen space
2013-02-13 22:04:35.397+0100 ERROR [STDERR] java.lang.OutOfMemoryError: PermGen space

After some investigation we found some interesting line regarding license issues:

org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select vmolicense0_.id as id451_, vmolicense0_.licenseDescription as licenseD2_451_, vmolicense0_.licenseOwner as licenseO3_451_, vmolicense0_.licenseString as licenseS4_451_, vmolicense0_.licenseTarget as licenseT5_451_ from vmo_licenseitem vmolicense0_]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
...
2013-02-14 17:37:24.315+0100 WARN [JDBCExceptionReporter] SQL Error: 208, SQLState: S0002 2013-02-14 17:37:24.315+0100 ERROR [JDBCExceptionReporter] Invalid object name 'vmo_licenseitem'.

Checking the license in the Orchestrator Configuration did not show anything unusual. However when we connected to the DB itstelf via SQLCMD we could not query the table “vmo_licenseitem” just as mentioned in the log. However we could query “VMO_LicenseItem”. No way, we said. The DB server is case sensitive. Actual that was not the case. The DB server itself had a default for case insensitivity. However, as we quickly found out, the DB admin thought it was a good idea to have our orchestrator DB to be case sensitve:

SELECT DATABASEPROPERTYEX( 'ORCHESTRATOR', 'COLLATION')
GO

SQL_Latin1_General_CP1_CS_AS

In the end this was solved with an ALTER DATABASE. What really strikes me is, that the vCO Configuration created the DB tables in a mix of upper/lower case and the vCO service only queries/selects with lower case. – And does not perform a check on collation settings when starting up! This could have been easily detected by vCO as a pre-requirement check and would have saved us lots of time. – We will pass it on to the developers…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: