private boolean verifyNoJobExist( String name, List<JobConfiguration> jobConfigurations ) { return jobConfigurations.stream().noneMatch( jobConfiguration -> jobConfiguration.getName().equals( name ) ); }
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 ); } }
/** * Method which calls the execute method in the job. The job will run in this thread and finish, either with success * or with an exception. * * @param jobConfiguration the configuration to execute * @param schedulingManager a reference to the scheduling manager * @param clock refers to start time * @throws Exception if the job fails */ private void executeJob( JobConfiguration jobConfiguration, SchedulingManager schedulingManager, Clock clock ) throws Exception { log.debug( "Job '" + jobConfiguration.getName() + "' started" ); schedulingManager.getJob( jobConfiguration.getJobType() ).execute( jobConfiguration ); log.debug( "Job '" + jobConfiguration.getName() + "' executed successfully. Time used: " + clock.time() ); } }
@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; }
public static WebMessage jobConfigurationReport( JobConfiguration jobConfiguration ) { WebMessage webMessage = WebMessageUtils.ok( "Initiated " + jobConfiguration.getName() ); webMessage.setResponse( new JobConfigurationWebMessageResponse( jobConfiguration ) ); return webMessage; }
|| (!jobConfig.isContinuousExecution() && oldExecutionTime != null && oldExecutionTime.compareTo( now ) < 0) ) unexecutedJobs.add( "\nJob [" + jobConfig.getUid() + ", " + jobConfig.getName() + "] has status failed or was scheduled in server downtime. Actual execution time was supposed to be: " + oldExecutionTime );
String.format( NOT_LEADER_SKIP_LOG, jobConfiguration.getJobType(), jobConfiguration.getName() ) ); return; "Job '" + jobConfiguration.getName() + "' failed, jobtype '" + jobConfiguration.getJobType() + "' is already running." ); "Job '" + jobConfiguration.getName() + "' failed, jobtype '" + jobConfiguration.getJobType() + "' is already running.", new Exception( "Job '" + jobConfiguration.getName() + "' failed" ) ); messageService.sendSystemErrorNotification( "Job '" + jobConfiguration.getName() + "' failed", ex ); log.error( "Job '" + jobConfiguration.getName() + "' failed", ex );