use of com.serotonin.timer.RejectedTaskReason in project ma-modules-public by infiniteautomation.
the class MangoTaskTemporaryResourceManager method scheduleTask.
private void scheduleTask(TemporaryResource<T, AbstractRestV2Exception> resource) {
TaskData tasks = (TaskData) resource.getData();
// TODO Mango 3.4 keep user inside the resource isntead of user id?
// maybe change the user inside DataPointRestController bulk operation lambda function to get user from background context
User user = UserDao.instance.get(resource.getUserId());
if (user == null) {
AccessDeniedException error = new AccessDeniedException();
resource.safeError(error);
return;
}
tasks.mainTask = new HighPriorityTask("Temporary resource " + resource.getResourceType() + " " + resource.getId()) {
@Override
public void run(long runtime) {
try {
BackgroundContext.set(user);
resource.getTask().run(resource);
} catch (Exception e) {
AbstractRestV2Exception error = MangoTaskTemporaryResourceManager.this.mapException(e);
resource.safeError(error);
} finally {
BackgroundContext.remove();
}
}
@Override
public void rejected(RejectedTaskReason reason) {
super.rejected(reason);
TranslatableMessage msg = null;
switch(reason.getCode()) {
case RejectedTaskReason.POOL_FULL:
msg = new TranslatableMessage("rest.error.rejectedTaskPoolFull");
break;
case RejectedTaskReason.TASK_QUEUE_FULL:
msg = new TranslatableMessage("rest.error.rejectedTaskQueueFull");
break;
case RejectedTaskReason.CURRENTLY_RUNNING:
msg = new TranslatableMessage("rest.error.rejectedTaskAlreadyRunning");
break;
}
ServerErrorException ex = msg == null ? new ServerErrorException() : new ServerErrorException(msg);
AbstractRestV2Exception error = MangoTaskTemporaryResourceManager.this.mapException(ex);
resource.safeError(error);
}
};
Common.backgroundProcessing.execute(tasks.mainTask);
this.scheduleTimeout(resource);
}
use of com.serotonin.timer.RejectedTaskReason in project ma-core-public by infiniteautomation.
the class FixedRateTest method main.
public static void main(String[] args) {
RealTimeTimer timer = new RealTimeTimer();
timer.setTimeSource(new TimeSource() {
int count = 10;
@Override
public long currentTimeMillis() {
long time;
if (count-- > 0)
time = System.currentTimeMillis();
else
time = System.currentTimeMillis() - 1000001000;
System.out.println("Returning " + new Date(time));
return time;
}
});
timer.init();
long period = 5000;
long delay = period - (System.currentTimeMillis() % period);
FixedRateTrigger trigger = new FixedRateTrigger(delay, period);
TimerTask task = new TimerTask(trigger, "Test Timer Task") {
@Override
public void run(long runtime) {
System.out.println("executed at " + new Date(runtime));
}
@Override
public void rejected(RejectedTaskReason reason) {
System.out.println("task rejected: " + reason.getDescription());
}
};
timer.schedule(task);
try {
synchronized (timer) {
timer.wait(30000);
}
} catch (InterruptedException e) {
// no op
}
timer.cancel();
}
use of com.serotonin.timer.RejectedTaskReason in project ma-core-public by infiniteautomation.
the class OrderedRealTimeTimerTest method main.
public static void main(String[] args) {
OrderedRealTimeTimer timer = new OrderedRealTimeTimer();
ThreadPoolExecutor executor = new OrderedThreadPoolExecutor(0, 100, 30L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), false, timer.getTimeSource());
timer.init(executor);
FixedRateTrigger trigger = new FixedRateTrigger(0, 5);
TimerTask task = new TimerTask(trigger, "task1", "1", 5) {
private int count = 0;
@Override
public void run(long runtime) {
count++;
System.out.println("Run: " + count);
System.out.println("Run at:" + runtime);
System.out.println("");
try {
Thread.sleep(4);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void rejected(RejectedTaskReason reason) {
System.out.println("Rejected");
}
};
try {
Thread.sleep(100);
timer.schedule(task);
Thread.sleep(1000000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Aggregations