code: @Override
      public void run() {
          try {
              int maxEvents = PropertyManager.getIntegerProperty(PropertyNames.UNSCHEDULED_EVENTS_BATCH_SIZE, 100);
              if (maxEvents == 0 && hasRun) // indicates only run at startup (old behavior)
                  return;
              int minAge = PropertyManager.getIntegerProperty(PropertyNames.UNSCHEDULED_EVENTS_MIN_AGE, 3600);
              if (minAge < 300) {
                  logger.severe(PropertyNames.UNSCHEDULED_EVENTS_MIN_AGE + " cannot be less than 300 (5 minutes)");
                  minAge = 300;
              }
  
              long curTime = DatabaseAccess.getCurrentTime();
              Date olderThan = new Date(curTime - minAge*1000);
              Date now = new Date(curTime);
              logger.log(LogLevel.TRACE, "Processing unscheduled events older than " + olderThan + " at: " + now);
              int count = processUnscheduledEvents(olderThan, maxEvents);
              if (count > 0)
                  logger.log(LogLevel.INFO, "Processing " + count + " unscheduled events at " + new Date(DatabaseAccess.getCurrentTime()));
          }
          catch (Throwable t) {
              logger.severeException(t.getMessage(), t);
          }
      }
docs: Invoked periodically by the timer thread