Update of /var/cvs/applications/crontab/src/org/mmbase/applications/crontab
In directory james.mmbase.org:/tmp/cvs-serv7169
Modified Files:
Tag: MMBase-1_8
CronEntry.java Interruptable.java TestCronJob.java
Log Message:
MMB-1677
See also:
http://cvs.mmbase.org/viewcvs/applications/crontab/src/org/mmbase/applications/crontab
See also: http://www.mmbase.org/jira/browse/MMB-1677
Index: CronEntry.java
===================================================================
RCS file:
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/CronEntry.java,v
retrieving revision 1.6.2.1
retrieving revision 1.6.2.2
diff -u -b -r1.6.2.1 -r1.6.2.2
--- CronEntry.java 16 Feb 2007 21:11:44 -0000 1.6.2.1
+++ CronEntry.java 14 Jul 2008 13:43:54 -0000 1.6.2.2
@@ -16,7 +16,7 @@
*
* @author Kees Jongenburger
* @author Michiel Meeuwissen
- * @version $Id: CronEntry.java,v 1.6.2.1 2007/02/16 21:11:44 michiel Exp $
+ * @version $Id: CronEntry.java,v 1.6.2.2 2008/07/14 13:43:54 michiel Exp $
*/
public class CronEntry {
@@ -61,10 +61,12 @@
private final String id;
private final String name;
private final String className;
- private final String cronTime;
+ protected final String cronTime;
private String configuration = null;
- private int count = 0;
+ protected Date lastRun = new Date(0);
+ protected int count = 0;
+ protected int lastCost = -1;
private final CronEntryField second = new CronEntryField(); // 0-59
private final CronEntryField minute = new CronEntryField(); // 0-59
@@ -94,6 +96,8 @@
this.cronTime = cronTime;
this.configuration = configuration;
this.type = type;
+ setCronTime(cronTime);
+
Runnable runnable = (Runnable) Class.forName(className).newInstance();
if (! (runnable instanceof CronJob)) {
@@ -101,8 +105,6 @@
} else {
cronJob = (CronJob) runnable;
}
-
- setCronTime(cronTime);
}
public void init() {
@@ -144,12 +146,19 @@
}
public boolean kick() {
+ final Date start = new Date();
+ Runnable ready = new Runnable() {
+ public void run() {
+ CronEntry.this.incCount();
+ CronEntry.this.setLastCost((int) (new Date().getTime() -
start.getTime()));
+ }
+ };
switch (type) {
case SHORT_JOB_TYPE :
{
- count++;
try {
- Interruptable thread = new Interruptable(cronJob,
threads);
+ setLastRun(new Date());
+ Interruptable thread = new Interruptable(cronJob,
threads, ready);
thread.run();
} catch (Throwable t) {
log.error("Error during cron-job " + this +" : " +
t.getClass().getName() + " " + t.getMessage() + "\n" + Logging.stackTrace(t));
@@ -163,8 +172,8 @@
// fall through
case CANBEMORE_JOB_TYPE :
default :
- count++;
- Interruptable thread = new Interruptable(cronJob, threads);
+ setLastRun(start);
+ Interruptable thread = new Interruptable(cronJob, threads,
ready);
org.mmbase.util.ThreadPools.jobsExecutor.execute(thread);
return true;
}
@@ -211,6 +220,26 @@
return className;
}
+ public Date getLastRun() {
+ return lastRun;
+ }
+ protected void setLastRun(Date d) {
+ lastRun = d;
+ setLastCost(-1);
+ }
+ public int getCount() {
+ return count;
+ }
+ protected void incCount() {
+ count++;
+ }
+ public int getLastCost() {
+ return lastCost;
+ }
+ protected void setLastCost(int s) {
+ lastCost = s;
+ }
+
boolean mustRun(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
Index: Interruptable.java
===================================================================
RCS file:
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/Interruptable.java,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -u -b -r1.2 -r1.2.2.1
--- Interruptable.java 27 Jan 2006 20:35:16 -0000 1.2
+++ Interruptable.java 14 Jul 2008 13:43:54 -0000 1.2.2.1
@@ -23,9 +23,15 @@
private Date startTime;
private final Runnable runnable;
private final Collection collection;
+ private final Runnable ready;
+
public Interruptable(Runnable run, Collection col) {
+ this(run, col, null);
+ }
+ public Interruptable(Runnable run, Collection col, Runnable r) {
runnable = run;
collection = col;
+ ready = r;
}
public void run() {
@@ -35,6 +41,7 @@
startTime = new Date();
try {
runnable.run();
+ if (ready != null) ready.run();
} catch (Throwable t) {
log.error(t.getMessage(), t);
}
Index: TestCronJob.java
===================================================================
RCS file:
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/TestCronJob.java,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -b -r1.1 -r1.1.2.1
--- TestCronJob.java 5 Oct 2004 11:32:22 -0000 1.1
+++ TestCronJob.java 14 Jul 2008 13:43:54 -0000 1.1.2.1
@@ -25,7 +25,8 @@
log.info("found cloud " + cloud.getUser().getIdentifier() + "/" +
cloud.getUser().getRank());
try {
log.info("sleeping");
- Thread.sleep(130 * 1000);
+ //Thread.sleep(130 * 1000);
+ Thread.sleep(130);
log.info("sleeped");
} catch (Exception e) {}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs