From 2b18e84428c6d7dd4654ec1aaec368bfae4cc45e Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 31 May 2017 11:26:32 +0800 Subject: [PATCH] IDEMPIERE-3383 Schedule process: always recalculate sleep time before start --- .../org/compiere/server/AdempiereServer.java | 22 +++++++++++++++++++ .../compiere/server/AdempiereServerMgr.java | 1 + 2 files changed, 23 insertions(+) diff --git a/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServer.java b/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServer.java index 5f0c5e453a..82b5d1415b 100644 --- a/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServer.java +++ b/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServer.java @@ -103,6 +103,28 @@ public abstract class AdempiereServer implements Runnable return Env.getCtx(); } // getCtx + public void recalculateSleepMS() + { + if (p_model instanceof PO) + { + PO po = (PO) p_model; + po.load(null); + } + m_sleepMS = 0; + m_nextWork = 0; + + Timestamp lastRun = new Timestamp(System.currentTimeMillis()); + m_nextWork = MSchedule.getNextRunMS(lastRun.getTime(), + p_model.getScheduleType(), p_model.getFrequencyType(), + p_model.getFrequency(), p_model.getCronPattern()); + + m_sleepMS = m_nextWork - lastRun.getTime(); + if (log.isLoggable(Level.INFO)) log.info(" Next run: " + new Timestamp(m_nextWork) + " sleep " + m_sleepMS); + // + p_model.setDateNextRun(new Timestamp(m_nextWork)); + p_model.saveEx(); + } + /** * @return Returns the sleepMS. */ diff --git a/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServerMgr.java b/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServerMgr.java index 97ec29cd94..50930cecf8 100644 --- a/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServerMgr.java +++ b/org.adempiere.server/src/main/server/org/compiere/server/AdempiereServerMgr.java @@ -237,6 +237,7 @@ public class AdempiereServerMgr implements ServiceTrackerCustomizer