private void checkLeaderElectionJobConfiguration( List<JobConfiguration> jobConfigurations ) { Optional<JobConfiguration> leaderElectionJobConfigurationOptional = jobConfigurations.stream() .filter( jobConfiguration -> jobConfiguration.getName().equals( DEFAULT_LEADER_ELECTION ) ).findFirst(); if ( leaderElectionJobConfigurationOptional.isPresent() ) { JobConfiguration leaderElectionJobConfiguration = leaderElectionJobConfigurationOptional.get(); leaderElectionJobConfiguration .setCronExpression( String.format( LEADER_JOB_CRON_FORMAT, leaderElectionTime ) ); if ( "true".equalsIgnoreCase( redisEnabled ) ) { leaderElectionJobConfiguration.setEnabled( true ); } else { leaderElectionJobConfiguration.setEnabled( false ); } jobConfigurationService.updateJobConfiguration( leaderElectionJobConfiguration ); } }
@Override public <T extends IdentifiableObject> List<ErrorReport> validate( T object, ObjectBundle bundle ) { if ( !JobConfiguration.class.isInstance( object ) ) { return new ArrayList<>(); } JobConfiguration jobConfiguration = (JobConfiguration) object; List<ErrorReport> errorReports = new ArrayList<>( validateInternal( jobConfiguration ) ); if ( errorReports.size() == 0 ) { jobConfiguration.setNextExecutionTime( null ); if ( jobConfiguration.isContinuousExecution() ) { jobConfiguration.setCronExpression( CONTINOUS_CRON ); } log.info( "Validation of '" + jobConfiguration.getName() + "' succeeded" ); } else { log.info( "Validation of '" + jobConfiguration.getName() + "' failed." ); log.info( errorReports ); } return errorReports; }
@Override public void preUpdate( IdentifiableObject object, IdentifiableObject persistedObject, ObjectBundle bundle ) { if ( !JobConfiguration.class.isInstance( object ) ) { return; } JobConfiguration newObject = (JobConfiguration) object; JobConfiguration persObject = (JobConfiguration) persistedObject; newObject.setLastExecuted( persObject.getLastExecuted() ); newObject.setLastExecutedStatus( persObject.getLastExecutedStatus() ); newObject.setLastRuntimeExecution( persObject.getLastRuntimeExecution() ); if ( setDefaultCronExpressionWhenDisablingContinuousExectution( newObject, persObject ) ) { newObject.setCronExpression( HOUR_CRON ); } schedulingManager.stopJob( (JobConfiguration) persistedObject ); }
persitedJobConfiguration.setCronExpression( jobConfiguration.getCronExpression() ); jobConfiguration = persitedJobConfiguration;