Search in sources :

Example 1 with ExecutionTime

use of com.cronutils.model.time.ExecutionTime in project hive by apache.

the class ObjectStore method computeNextExecutionTime.

private Integer computeNextExecutionTime(String schedule, ZonedDateTime time) throws InvalidInputException {
    CronType cronType = CronType.QUARTZ;
    CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(cronType);
    CronParser parser = new CronParser(cronDefinition);
    // Get date for last execution
    try {
        ExecutionTime executionTime = ExecutionTime.forCron(parser.parse(schedule));
        Optional<ZonedDateTime> nextExecution = executionTime.nextExecution(time);
        if (!nextExecution.isPresent()) {
            // no valid next execution time.
            return null;
        }
        return (int) nextExecution.get().toEpochSecond();
    } catch (IllegalArgumentException iae) {
        String message = "Invalid " + cronType + " schedule expression: '" + schedule + "'";
        LOG.error(message, iae);
        throw new InvalidInputException(message);
    }
}
Also used : ExecutionTime(com.cronutils.model.time.ExecutionTime) InvalidInputException(org.apache.hadoop.hive.metastore.api.InvalidInputException) ZonedDateTime(java.time.ZonedDateTime) CronDefinition(com.cronutils.model.definition.CronDefinition) CronType(com.cronutils.model.CronType) CronParser(com.cronutils.parser.CronParser)

Example 2 with ExecutionTime

use of com.cronutils.model.time.ExecutionTime in project OpenGrok by OpenGrok.

the class SuggesterServiceImpl method getTimeToNextRebuild.

private Duration getTimeToNextRebuild() {
    String cronDefinition = env.getSuggesterConfig().getRebuildCronConfig();
    if (cronDefinition == null) {
        return null;
    }
    ZonedDateTime now = ZonedDateTime.now();
    CronDefinition def = CronDefinitionBuilder.instanceDefinitionFor(CronType.UNIX);
    CronParser parser = new CronParser(def);
    ExecutionTime executionTime = ExecutionTime.forCron(parser.parse(cronDefinition));
    Optional<Duration> d = executionTime.timeToNextExecution(now);
    if (d.isEmpty()) {
        throw new IllegalStateException("Cannot determine time to next execution");
    }
    return d.get();
}
Also used : ExecutionTime(com.cronutils.model.time.ExecutionTime) ZonedDateTime(java.time.ZonedDateTime) CronDefinition(com.cronutils.model.definition.CronDefinition) Duration(java.time.Duration) CronParser(com.cronutils.parser.CronParser)

Aggregations

CronDefinition (com.cronutils.model.definition.CronDefinition)2 ExecutionTime (com.cronutils.model.time.ExecutionTime)2 CronParser (com.cronutils.parser.CronParser)2 ZonedDateTime (java.time.ZonedDateTime)2 CronType (com.cronutils.model.CronType)1 Duration (java.time.Duration)1 InvalidInputException (org.apache.hadoop.hive.metastore.api.InvalidInputException)1