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
code in IndexServiceImpl calls something like
which does a conflict check for the whole range and then creates each event without individual conflict checks.