public void addSummary( JobConfiguration jobConfiguration, Object summary ) { LinkedHashMap<String, Object> summaries = summariesWithType.get( jobConfiguration.getJobType() ); if ( summaries.size() >= MAX_POOL_TYPE_SIZE ) { String key = (String) summaries.keySet().toArray()[0]; summaries.remove( key ); } summaries.put( jobConfiguration.getUid(), summary ); }
public void add( JobConfiguration jobConfiguration, Notification notification ) { String uid = jobConfiguration.getUid(); LinkedHashMap<String, LinkedList<Notification>> uidNotifications = notificationsWithType .get( jobConfiguration.getJobType() ); LinkedList<Notification> notifications; if ( uidNotifications.containsKey( uid ) ) { notifications = uidNotifications.get( uid ); } else { notifications = new LinkedList<>(); } notifications.addFirst( notification ); if ( uidNotifications.size() >= MAX_POOL_TYPE_SIZE ) { String key = (String) uidNotifications.keySet().toArray()[0]; uidNotifications.remove( key ); } uidNotifications.put( uid, notifications ); notificationsWithType.put( jobConfiguration.getJobType(), uidNotifications ); }
@Override public void scheduleJobWithStartTime( JobConfiguration jobConfiguration, Date startTime ) { if ( ifJobInSystemStop( jobConfiguration.getUid() ) ) { JobInstance jobInstance = new DefaultJobInstance(); if ( jobConfiguration.getUid() != null && !futures.containsKey( jobConfiguration.getUid() ) ) { ScheduledFuture<?> future = jobScheduler .schedule( () -> { try { jobInstance.execute( jobConfiguration, this, messageService, leaderManager ); } catch ( Exception e ) { log.error( DebugUtils.getStackTrace( e ) ); } }, startTime ); futures.put( jobConfiguration.getUid(), future ); log.info( "Scheduled job: " + jobConfiguration ); } } }
@Override public void scheduleJob( JobConfiguration jobConfiguration ) { if ( ifJobInSystemStop( jobConfiguration.getUid() ) ) { JobInstance jobInstance = new DefaultJobInstance(); if ( jobConfiguration.getUid() != null && !futures.containsKey( jobConfiguration.getUid() ) ) { ScheduledFuture<?> future = jobScheduler .schedule( () -> { try { jobInstance.execute( jobConfiguration, this, messageService, leaderManager ); } catch ( Exception e ) { log.error( DebugUtils.getStackTrace( e ) ); } }, new CronTrigger( jobConfiguration.getCronExpression() ) ); futures.put( jobConfiguration.getUid(), future ); log.info( "Scheduled job: " + jobConfiguration ); } } }
private void internalExecuteJobConfiguration( JobConfiguration jobConfiguration ) { JobInstance jobInstance = new DefaultJobInstance(); ListenableFuture<?> future = jobExecutor.submitListenable( () -> { try { jobInstance.execute( jobConfiguration, this, messageService, leaderManager ); } catch ( Exception e ) { log.error( DebugUtils.getStackTrace( e ) ); } } ); currentTasks.put( jobConfiguration.getUid(), future ); log.info( "Scheduler initiated execution of job: " + jobConfiguration ); }
@Override public void deleteJobConfiguration( JobConfiguration jobConfiguration ) { if ( !jobConfiguration.isInMemoryJob() ) { jobConfigurationStore.delete( jobConfigurationStore.getByUid( jobConfiguration.getUid() ) ); } }
@Override public Notifier clear( JobConfiguration id ) { if ( id != null ) { redisTemplate.delete( generateNotificationKey( id.getJobType(), id.getUid() ) ); redisTemplate.boundHashOps( generateSummaryKey( id.getJobType() ) ).delete( id.getUid() ); redisTemplate.boundZSetOps( generateNotificationOrderKey( id.getJobType() ) ).remove( id.getUid() ); redisTemplate.boundZSetOps( generateSummaryOrderKey( id.getJobType() ) ).remove( id.getUid() ); } return this; }
public void jobConfigurationFinished( JobConfiguration jobConfiguration ) { runningJobConfigurations.remove( jobConfiguration ); JobConfiguration tempJobConfiguration = jobConfigurationService .getJobConfigurationByUid( jobConfiguration.getUid() ); if ( tempJobConfiguration != null ) { if ( tempJobConfiguration.getJobStatus() == DISABLED ) { jobConfiguration.setJobStatus( DISABLED ); jobConfiguration.setEnabled( false ); } jobConfigurationService.updateJobConfiguration( jobConfiguration ); } }
|| (!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 );
public JobConfigurationWebMessageResponse( JobConfiguration jobConfiguration ) { this.name = jobConfiguration.getDisplayName(); this.id = jobConfiguration.getUid(); this.created = jobConfiguration.getCreated(); this.jobType = jobConfiguration.getJobType(); this.jobStatus = jobConfiguration.getJobStatus(); this.jobParameters = jobConfiguration.getJobParameters(); this.relativeNotifierEndpoint = "/api/system/tasks/" + this.jobType + "/" + this.id; }
@Override public Notifier notify( JobConfiguration id, NotificationLevel level, String message, boolean completed ) { if ( id != null && !(level != null && level.isOff()) ) { Notification notification = new Notification( level, id.getJobType(), new Date(), message, completed ); String notificationKey = generateNotificationKey( id.getJobType(), id.getUid() ); String notificationOrderKey = generateNotificationOrderKey( id.getJobType() ); Date now = new Date(); try { if ( redisTemplate.boundZSetOps( notificationOrderKey ).zCard() >= MAX_POOL_TYPE_SIZE ) { Set<String> deleteKeys = redisTemplate.boundZSetOps( notificationOrderKey ).range( 0, 0 ); redisTemplate.delete( deleteKeys ); redisTemplate.boundZSetOps( notificationOrderKey ).removeRange( 0, 0 ); } redisTemplate.boundZSetOps( notificationKey ).add( objectMapper.writeValueAsString( notification ), now.getTime() ); redisTemplate.boundZSetOps( notificationOrderKey ).add( id.getUid(), now.getTime() ); } catch ( JsonProcessingException ex ) { log.warn( String.format( NOTIFIER_ERROR, ex.getMessage() ) ); } log.info( notification ); } return this; }
summaryKeyToBeDeleted.forEach( d -> redisTemplate.boundHashOps( summaryKey ).delete( d ) ); redisTemplate.boundHashOps( summaryKey ).put( id.getUid(), objectMapper.writeValueAsString( jobSummary ) ); Date now = new Date(); redisTemplate.boundZSetOps( summaryOrderKey ).add( id.getUid(), now.getTime() );
JobConfiguration persitedJobConfiguration = jobConfigurationService.getJobConfigurationByUid( jobConfiguration.getUid() ); if ( persitedJobConfiguration != null && !persitedJobConfiguration.isConfigurable() )