Team Calendars for Confluence not able to load in Clustered Environment Confluence
This article applies to Confluence clustered 5.4 or earlier.
Symptoms
In a Confluence clustered environment, re-installation or upgrade of the Team Calendars for Confluence would lead to an issue when it tries to load the calendar on the other node(s).
The following appears in the atlassian-confluence.log
:
-- referer: http://10.60.1.199/nodes/dashboard.action | url: /nodes/calendar/dashboardcalendar.action | userName: admin
| action: dashboardcalendar
2012-03-29 18:52:28,733 ERROR [TP-Processor8] [extra.calendar3.calendarstore.ExternalCalendarDataStore]
prepareSubCalendarForCache Unable to prepare cached sub-calendar
-- referer: http://10.60.1.199/nodes/calendar/mycalendar.action | url: /nodes/rest/calendar-services/1.0/
calendar/subcalendars.json | userName: admin
com.atlassian.confluence.extra.calendar3.exception.CalendarException
at com.atlassian.confluence.extra.calendar3.calendarstore.JiraCalendarDataStore.getSubCalendarContentInternal(JiraCalendarDataStore.java:363)
at com.atlassian.confluence.extra.calendar3.calendarstore.JiraCalendarDataStore.getSubCalendarContentInternal(JiraCalendarDataStore.java:81)
at com.atlassian.confluence.extra.calendar3.calendarstore.ExternalCalendarDataStore._getSubCalendarContentInternal(ExternalCalendarDataStore.java:108)
at com.atlassian.confluence.extra.calendar3.calendarstore.ExternalCalendarDataStore.getSubCalendarTimeZoneId(ExternalCalendarDataStore.java:78)
at com.atlassian.confluence.extra.calendar3.calendarstore.ExternalCalendarDataStore.prepareSubCalendarForCache(ExternalCalendarDataStore.java:64)
at com.atlassian.confluence.extra.calendar3.calendarstore.CalendarDataStoreCachingDecorator.save(CalendarDataStoreCachingDecorator.java:77)
at com.atlassian.confluence.extra.calendar3.calendarstore.DelegatingCalendarDataStore.save(DelegatingCalendarDataStore.java:86)
at com.atlassian.confluence.extra.calendar3.DefaultCalendarManager.save(DefaultCalendarManager.java:192)
at com.atlassian.confluence.extra.calendar3.rest.CalendarResource.updateSubCalendarInternal(CalendarResource.java:407)
at com.atlassian.confluence.extra.calendar3.rest.CalendarResource.access$1200(CalendarResource.java:87)
at com.atlassian.confluence.extra.calendar3.rest.CalendarResource$3.doInTransaction(CalendarResource.java:346)
at com.atlassian.confluence.extra.calendar3.rest.CalendarResource$3.doInTransaction(CalendarResource.java:343)
at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:25)
at com.atlassian.sal.spring.component.SpringHostContextAccessor$1.doInTransaction(SpringHostContextAccessor.java:88)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
at com.atlassian.sal.spring.component.SpringHostContextAccessor.doInTransaction(SpringHostContextAccessor.java:82)
at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.atlassian.plugin.osgi.hostcomponents.impl.DefaultComponentRegistrar$ContextClassLoaderSettingInvocationHandler.invoke(DefaultComponentRegistrar.java:129)
Cause
This issue is caused by a Team Calendars for Confluence clustering cache bug. The bug report is tracked here : TEAMCAL-535: Clustering cache bug
Workaround
In order to fix this issue, Confluence clustered needs to be restarted completely (all nodes restart) to refresh the cache. To avoid a plugin cache corruption, please run the following steps:
- Shutdown all Confluence nodes
- Remove the following directories from each nodes (backup if necessary)
<confluence-home>/bundled-
plugins
<confluence-home>/
plugin-cache
<confluence-home>/plugins-
osgi-cache
<confluence-home>/plugins-temp
<confluence-home>/bundled-plugins_language
Restart Confluence