use of com.thinkbiganalytics.scheduler.JobIdentifier in project kylo by Teradata.
the class NifiStatsJmsReceiver method scheduleStatsCompaction.
/**
* Schedule the compaction job in Quartz if the properties have this enabled with a Cron Expression
*/
private void scheduleStatsCompaction() {
if (compactStatsEnabled && StringUtils.isNotBlank(compactStatsCronSchedule)) {
QuartzScheduler scheduler = (QuartzScheduler) jobScheduler;
JobIdentifier jobIdentifier = new DefaultJobIdentifier("Compact NiFi Processor Stats", "KYLO");
TriggerIdentifier triggerIdentifier = new DefaultTriggerIdentifier(jobIdentifier.getName(), jobIdentifier.getGroup());
try {
scheduler.scheduleJob(jobIdentifier, triggerIdentifier, NiFiStatsCompactionQuartzJobBean.class, compactStatsCronSchedule, null);
} catch (ObjectAlreadyExistsException e) {
log.info("Unable to schedule the job to compact the NiFi processor stats. It already exists. Most likely another Kylo node has already schceduled this job. ");
} catch (SchedulerException e) {
throw new RuntimeException("Error scheduling job: Compact NiFi Processor Stats", e);
}
}
}
use of com.thinkbiganalytics.scheduler.JobIdentifier in project kylo by Teradata.
the class DefaultServiceLevelAgreementScheduler method unscheduleServiceLevelAgreement.
/**
* removes the SLA, identified by slaId, from the scheduler, so that it is no longer executed.
*
* @param slaId The ServiceLevelAgreement id
* @return true if we were able to remove the SLA from the scheduler
*/
public boolean unscheduleServiceLevelAgreement(ServiceLevelAgreement.ID slaId) {
boolean unscheduled = false;
JobIdentifier scheduledJobId = null;
try {
if (scheduledJobNames.containsKey(slaId)) {
scheduledJobId = jobIdentifierForName(scheduledJobNames.get(slaId));
}
QuartzScheduler scheduler = (QuartzScheduler) jobScheduler;
if (scheduledJobId != null && scheduler.jobExists(scheduledJobId)) {
log.info("Unscheduling sla job " + scheduledJobId.getName());
jobScheduler.deleteJob(scheduledJobId);
scheduledJobNames.remove(slaId);
unscheduled = true;
if (clusterService.isClustered()) {
clusterService.sendMessageToOthers(QTZ_JOB_UNSCHEDULED_MESSAGE_TYPE, new ScheduledServiceLevelAgreementClusterMessage(slaId, scheduledJobId));
}
} else {
log.info("Unable to unschedule/delete the SLA job. Referencing SLA Id: {}. It doesn't exist. Scheduled Jobs are: {} ", slaId, scheduledJobNames);
}
} catch (JobSchedulerException e) {
log.error("Unable to delete the SLA Job " + scheduledJobId);
}
return unscheduled;
}
use of com.thinkbiganalytics.scheduler.JobIdentifier in project kylo by Teradata.
the class DefaultServiceLevelAgreementScheduler method enableServiceLevelAgreement.
/**
* Used to enable the schedule of the SLA, so that once again executes after a being disabled
*
* @param sla The SLA to enable
*/
public void enableServiceLevelAgreement(ServiceLevelAgreement sla) {
ServiceLevelAgreement.ID slaId = sla.getId();
JobIdentifier scheduledJobId = null;
if (scheduledJobNames.containsKey(slaId)) {
scheduledJobId = jobIdentifierForName(scheduledJobNames.get(slaId));
} else {
scheduledJobId = jobIdentifierForName(sla.getName());
}
QuartzScheduler scheduler = (QuartzScheduler) jobScheduler;
if (scheduledJobId != null && scheduler.jobExists(scheduledJobId)) {
try {
jobScheduler.resumeTriggersOnJob(scheduledJobId);
} catch (JobSchedulerException e) {
log.error("Unable to resume the schedule for the SLA {} ", sla.getName());
}
} else {
log.info("Unable to resume the SLA job {} . The Job does not exist", sla.getName());
}
}
use of com.thinkbiganalytics.scheduler.JobIdentifier in project kylo by Teradata.
the class DefaultServiceLevelAgreementScheduler method run.
/**
* Called on startup as part of the PostMetadataConfigAction.
*/
@Override
public void run() {
log.info("PostMetadataConfigAction called for DefaultServiceLevelAgreementScheduler. About to schedule the SLA's ");
metadataAccess.read(() -> {
List<? extends ServiceLevelAgreement> agreements = slaProvider.getAgreements();
if (agreements != null) {
log.info("About to schedule {} SLA's", agreements.size());
for (ServiceLevelAgreement agreement : agreements) {
JobIdentifier jobIdentifier = slaJobName(agreement);
QuartzScheduler scheduler = (QuartzScheduler) jobScheduler;
if (!scheduler.jobExists(jobIdentifier)) {
scheduleServiceLevelAgreement(agreement);
} else {
scheduledJobNames.put(agreement.getId(), jobIdentifier.getName());
}
}
} else {
log.info("No SLA's found to schedule.");
}
return null;
}, MetadataAccess.SERVICE);
}
use of com.thinkbiganalytics.scheduler.JobIdentifier in project kylo by Teradata.
the class DefaultServiceLevelAgreementScheduler method disableServiceLevelAgreement.
/**
* Used to disable the schedule of the SLA, so that it no longer executes until subsequently re-enabled
*
* @param sla The SLA to disable
*/
public void disableServiceLevelAgreement(ServiceLevelAgreement sla) {
ServiceLevelAgreement.ID slaId = sla.getId();
JobIdentifier scheduledJobId = null;
if (scheduledJobNames.containsKey(slaId)) {
scheduledJobId = jobIdentifierForName(scheduledJobNames.get(slaId));
} else {
scheduledJobId = jobIdentifierForName(sla.getName());
}
QuartzScheduler scheduler = (QuartzScheduler) jobScheduler;
if (scheduledJobId != null && scheduler.jobExists(scheduledJobId)) {
try {
jobScheduler.pauseTriggersOnJob(scheduledJobId);
} catch (JobSchedulerException e) {
log.error("Unable to pause the schedule for the disabled SLA {} ", sla.getName());
}
} else {
log.info("Unable to pause the SLA job {} . The Job does not exist", sla.getName());
}
}
Aggregations