Uploaded image for project: 'Opencast'
  1. MH-12651

Scheduling repeating events through Admin UI is very slow

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed and reviewed
    • Affects Version/s: 4.0
    • Fix Version/s: 4.2
    • Component/s: Backend Software
    • Labels:
      None
    • Severity:
      Performance
    • Steps to reproduce:
      Hide
      Scheduling repeating events is very slow in systems with significant amounts of data (for example it took 39min to add 217 events).

      This seems largely due to the fact that a conflict check is done for each recurring event.

      A conflict check should be done in one operation for all events in the set, rather than adding each event individually and doing the conflict check for each individual event added.

      This is the endpoint /admin-ng/event/new which invokes createEvent() in IndexServiceImpl.java which calls schedulerService.addEvent() for each event in the recurrence.

      So it looks like some logic for scheduling multiple events should move from IndexService to scheduler service, so the

            case SCHEDULE_MULTIPLE:

      code in IndexServiceImpl calls something like

      schedulerService.addMultipleEvents(...)

      which does a conflict check for the whole range and then creates each event without individual conflict checks.
      Show
      Scheduling repeating events is very slow in systems with significant amounts of data (for example it took 39min to add 217 events). This seems largely due to the fact that a conflict check is done for each recurring event. A conflict check should be done in one operation for all events in the set, rather than adding each event individually and doing the conflict check for each individual event added. This is the endpoint /admin-ng/event/new which invokes createEvent() in IndexServiceImpl.java which calls schedulerService.addEvent() for each event in the recurrence. So it looks like some logic for scheduling multiple events should move from IndexService to scheduler service, so the       case SCHEDULE_MULTIPLE: code in IndexServiceImpl calls something like schedulerService.addMultipleEvents(...) which does a conflict check for the whole range and then creates each event without individual conflict checks.

      TestRail: Results

        Attachments

          Activity

            People

            • Assignee:
              greg_logan Greg Logan
              Reporter:
              smarquard Stephen Marquard
            • Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                TestRail: Cases