Skip to content

Commit

Permalink
Solve #1707, Refine handling of AT-trigger rule
Browse files Browse the repository at this point in the history
  • Loading branch information
littlezhou committed Apr 26, 2018
1 parent 4950fb6 commit ecaaacb
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public class TimeBasedScheduleInfo {
private long startTime;
private long endTime;
private long every;
private long subScheduleTime;

public TimeBasedScheduleInfo() {
}
Expand Down Expand Up @@ -56,7 +57,19 @@ public long getEvery() {
return every;
}

public boolean isOneShot() {
public boolean isOnce() {
return startTime == endTime && startTime == 0 && every == 0;
}

public boolean isOneShot() {
return startTime == endTime && every == 0;
}

public void setSubScheduleTime(long subScheduleTime) {
this.subScheduleTime = subScheduleTime;
}

public long getSubScheduleTime() {
return subScheduleTime;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public ExecutorScheduler(int numThreads) {
public void addPeriodicityTask(RuleExecutor re) {
TimeBasedScheduleInfo si = re.getTranslateResult().getTbScheduleInfo();
long now = System.currentTimeMillis();
si.setSubScheduleTime(now);
long startDelay = si.getStartTime() - now;
if (startDelay < 0) {
startDelay = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ private List<String> getAccessCountTablesDuringLast(long lastInterval) {

@Override
public void run() {
long startCheckTime = System.currentTimeMillis();
if (exited) {
exitSchedule();
}
Expand All @@ -237,7 +238,6 @@ public void run() {

long rid = ctx.getRuleId();
try {
long startCheckTime = System.currentTimeMillis();
if (ruleManager.isClosed()) {
exitSchedule();
}
Expand Down Expand Up @@ -265,12 +265,21 @@ public void run() {
}
TimeBasedScheduleInfo scheduleInfo = tr.getTbScheduleInfo();

if (scheduleInfo.getEndTime() != TimeBasedScheduleInfo.FOR_EVER
&& !scheduleInfo.isOneShot()
&& startCheckTime - scheduleInfo.getEndTime() > 0) {
LOG.info("Rule " + ctx.getRuleId() + " exit rule executor due to time passed or finished");
ruleManager.updateRuleInfo(rid, RuleState.FINISHED, System.currentTimeMillis(), 0, 0);
exitSchedule();
if (!scheduleInfo.isOnce() && scheduleInfo.getEndTime() != TimeBasedScheduleInfo.FOR_EVER) {
boolean befExit = false;
if (scheduleInfo.isOneShot()) {
if (scheduleInfo.getSubScheduleTime() > scheduleInfo.getStartTime()) {
befExit = true;
}
} else if (startCheckTime - scheduleInfo.getEndTime() > 0) {
befExit = true;
}

if (befExit) {
LOG.info("Rule " + ctx.getRuleId() + " exit rule executor due to time passed");
ruleManager.updateRuleInfo(rid, RuleState.FINISHED, System.currentTimeMillis(), 0, 0);
exitSchedule();
}
}

if (doExec) {
Expand Down Expand Up @@ -309,6 +318,12 @@ public void run() {
exitSchedule();
}

if (endProcessTime + scheduleInfo.getEvery() > scheduleInfo.getEndTime()) {
LOG.info("Rule " + ctx.getRuleId() + " exit rule executor due to finished");
ruleManager.updateRuleInfo(rid, RuleState.FINISHED, System.currentTimeMillis(), 0, 0);
exitSchedule();
}

if (exited) {
exitSchedule();
}
Expand Down

0 comments on commit ecaaacb

Please sign in to comment.