the timezones.properties has a missing timezone:
Europe/London
This means that on a system (like ours) where the default timezone of the VM in Europe/London then this happens:
java.lang.StackOverflowError
at java.util.HashMap.containsKey(HashMap.java:377)
at com.atlassian.confluence.core.TimeZone.getInstance(TimeZone.java:37)
at com.atlassian.confluence.core.TimeZone.getDefault(TimeZone.java:112)
at com.atlassian.confluence.core.TimeZone.getInstance(TimeZone.java:39)
at com.atlassian.confluence.core.TimeZone.getDefault(TimeZone.java:112)
at com.atlassian.confluence.core.TimeZone.getInstance(TimeZone.java:39)
on any page. Looking at the source of com.atlassian.confluence.core.TimeZone I note tht the timezones are loaded from a timezones.properties file.
Europe/London is missing from this properties file.
Adding Europe/London fixes the issue..
Why not remove the properties file though,, and modify com.atlassian.confluence.core.TimeZone to be:
private static Map loadTimeZones()
{
String[] timeZoneIDs = java.util.TimeZone.getAvailableIDs();
Map result = new HashMap(timeZoneIDs.length);
for (int i = 0; i < timeZoneIDs.length; i++)
{
String timeZoneID = timeZoneIDs[i];
result.put(timeZoneID, new TimeZone(timeZoneID));
}
return result;
}
so that all timeones are loaded???
CONF-1026