Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-55654

Editing a recurring calendar event will edit the next or previous day instead

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Low
    • TC-6.0.12
    • 5.10, 6.2.4, 6.7.2, 6.9.0
    • Apps - Team Calendar
    • None

    Description

      Summary

      When using Confluence 6.9 with TC version 5.5.4 or later, editing a single day, which is part of a recurring event (only Daily events), will either, edit the next or previous day event instead and will move this event to the day we tried to edit. This is true 100% of the time when All Day Event is checked. When All Day Event is not checked, we usually hit this bug or another bug: https://jira.atlassian.com/browse/CONFSERVER-55287

      On versions earlier than 6.9 with TC 5.5.4 or later, it is only reproducible when checking the "All Day Event" box. It is likely due to a change in TC 5.5.4. Timezone doesn't change this behaviour and it happens with Custom and Default events.

      Environment

      • Confluence 5.10, 6.2.4, 6.7.2 and 6.9.0
      • Team Calendars 5.5.4 and later versions affected

      Steps to Reproduce

      1. Install Team Calendars.
      2. Create an event.
      3. Leave "All day event" checked or not(6.9).
      4. On the repeat field, choose "Daily".
      5. Save the event
      6. Notice that it will add an event for each day. Now, attempt to edit any of these events. Edit its description, who, what, etc.
      7. Click OK

      Expected Results

      The event's settings will be changed

      Actual Results

      The change is made to either the previous/next day event and it is moved to the day we made the change.

      For example, we have the same recurring event throughout May. I've edited this event, titled as "test" and changed it to "test44" at May-15. When you hit OK, it will move either the previous or next day event (May-14 or May-16) to May-15 list of events:

      Additional Issues

      1) Try to edit or move to another day (drag and drop) the event that was moved to the day we edited and it will throw an exception:

      java.lang.NullPointerException at com.atlassian.confluence.extra.calendar3.model.LocalizedSubCalendarEvent.<init>(LocalizedSubCalendarEvent.java:80) at com.atlassian.confluence.extra.calendar3.model.LocalizedSubCalendarEvent.<init>(LocalizedSubCalendarEvent.java:47) at com.atlassian.confluence.extra.calendar3.rest.resources.EventResource.updateEvent(EventResource.java:259) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:192) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:83) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:53) at com.atlassian.confluence.extra.calendar3.rest.Interceptors.TeamCalResourceLoggingInterceptor.intercept(TeamCalResourceLoggingInterceptor.java:21) at 
      ....
      org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94) at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:206) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) 
      

      2) After this problem occurs and you attempt to delete it on 6.9, it will throw exceptions:

      2018-05-24 09:39:07,559 ERROR [http-nio-8090-exec-10] [calendar3.rest.ExceptionMappers.GeneralExceptionMapper] getResponseError General exception happen on calendar resources2018-05-24 09:39:07,559 ERROR [http-nio-8090-exec-10] [calendar3.rest.ExceptionMappers.GeneralExceptionMapper] getResponseError General exception happen on calendar resources -- referer: http://localhost:8090/display/WEF/fefef | url: /rest/calendar-services/1.0/calendar/events.json | traceId: 347dc2cad25ee08a | userName: adminjava.lang.NullPointerException at com.atlassian.confluence.extra.calendar3.calendarstore.AbstractCalendarDataStore.updateEvent(AbstractCalendarDataStore.java:2018) at com.atlassian.confluence.extra.calendar3.calendarstore.SanboxSubCalendarDataStoreCachingDecorator.updateEvent(SanboxSubCalendarDataStoreCachingDecorator.java:351) at com.atlassian.confluence.extra.calendar3.calendarstore.DelegatingCalendarDataStore.updateEvent(DelegatingCalendarDataStore.java:752) at com.atlassian.confluence.extra.calendar3.DefaultCalendarManager.updateEventInternal(DefaultCalendarManager.java:1350) at com.atlassian.confluence.extra.calendar3.DefaultCalendarManager.updateEvent(DefaultCalendarManager.java:1305) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      
      2018-05-24 09:40:37,248 WARN [http-nio-8090-exec-3] [extra.calendar3.util.TimeZoneUtil] tryParseDateTimeStringForEventEdit Unable to parse date null time 08:00 -- referer: http://localhost:8090/display/WEF/fefef | url: /rest/calendar-services/1.0/calendar/events.json | traceId: 377ec1007fae65cf | userName: admin
      
      2018-05-24 10:09:10,359 WARN [http-nio-8090-exec-5] [confluence.impl.hibernate.ConfluenceHibernateTransactionManager] doRollback Performing rollback. Transactions:  ->[PluginReadWriteTx]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT (Session #1932109786) -- referer: http://localhost:8090/display/WEF/fefef | url: /rest/calendar-services/1.0/calendar/events.json | traceId: 3fda006285a1f0d3 | userName: admin
      
      

      3) Since this issue occurs only in Daily events, I've tested Weekly and Monthly and this bug is not reproducible, instead, we hit: https://jira.atlassian.com/browse/CONFSERVER-55287 and https://jira.atlassian.com/browse/CONFSERVER-55165 when All Day Event is checked on versions before 6.9. On 6.9, when All Day Event is NOT checked, we hit the aforementioned bugs.

      Resolution

      Upgrade to Team Calendars 6.0.12 or newer.

      Workaround

      1) Uncheck the All Day Event box when editing a recurring event

      2) In case you are unable to delete the events, uncheck Edit this Instance Only, then change the repeat time to Doesn't repeat, the bugged events will be removed.

      3) Downgrade to TC 5.5.0 needs further testing

      Attachments

        Issue Links

          Activity

            People

              nbhawnani Niraj Bhawnani
              ajardim Artur J
              Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: