package org.opendedup.sdfs.filestore.gc;
import java.util.Date;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.opendedup.sdfs.Main;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
public class ChunkStoreGCScheduler {
private static Logger log = Logger.getLogger("sdfs");
Scheduler sched = null;
public ChunkStoreGCScheduler() {
try {
log.info("Scheduling Garbage Collection Jobs");
Properties props = new Properties();
props.setProperty("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
props.setProperty("org.quartz.threadPool.threadCount", "1");
props.setProperty("org.quartz.threadPool.threadPriority", Integer.toString(Thread.MIN_PRIORITY));
SchedulerFactory schedFact = new StdSchedulerFactory(props);
sched = schedFact.getScheduler();
sched.start();
JobDetail ccjobDetail = new JobDetail("claimChunks", null, ChunkClaimJob.class);
CronTrigger cctrigger = new CronTrigger("claimChunksTrigger","group1",Main.gcChunksSchedule); // fire every hour
cctrigger.setStartTime(TriggerUtils.getEvenMinuteDate(new Date()));
cctrigger.setName("claimChunksTrigger");
sched.scheduleJob(ccjobDetail, cctrigger);
log.info("Garbage Collection Jobs Scheduled");
} catch (Exception e) {
log.log(Level.SEVERE, "Unable to schedule Garbage Collection", e);
}
}
public void stopSchedules() {
try {
sched.unscheduleJob("claimChunks", "claimChunksTrigger");
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
}
}