mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
operation timeout task updated to execute only in elected node
This commit is contained in:
parent
349fce4e63
commit
21606bc5cd
@ -18,6 +18,7 @@
|
|||||||
package io.entgra.device.mgt.core.device.mgt.core.operation.timeout.task.impl;
|
package io.entgra.device.mgt.core.device.mgt.core.operation.timeout.task.impl;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import io.entgra.device.mgt.core.server.bootup.heartbeat.beacon.exception.HeartBeatManagementException;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementException;
|
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementException;
|
||||||
@ -36,7 +37,6 @@ import java.util.List;
|
|||||||
public class OperationTimeoutTask extends DynamicPartitionedScheduleTask {
|
public class OperationTimeoutTask extends DynamicPartitionedScheduleTask {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(OperationTimeoutTask.class);
|
private static final Log log = LogFactory.getLog(OperationTimeoutTask.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setup() {
|
protected void setup() {
|
||||||
|
|
||||||
@ -44,12 +44,13 @@ public class OperationTimeoutTask extends DynamicPartitionedScheduleTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void executeDynamicTask() {
|
protected void executeDynamicTask() {
|
||||||
|
if (isQualifiedToExecuteTask()) { // this task will run only in one node when the deployment has multiple nodes
|
||||||
String operationTimeoutTaskConfigStr = getProperty(
|
String operationTimeoutTaskConfigStr = getProperty(
|
||||||
OperationTimeoutTaskManagerServiceImpl.OPERATION_TIMEOUT_TASK_CONFIG);
|
OperationTimeoutTaskManagerServiceImpl.OPERATION_TIMEOUT_TASK_CONFIG);
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
OperationTimeout operationTimeoutConfig = gson.fromJson(operationTimeoutTaskConfigStr, OperationTimeout.class);
|
OperationTimeout operationTimeoutConfig = gson.fromJson(operationTimeoutTaskConfigStr, OperationTimeout.class);
|
||||||
try {
|
try {
|
||||||
long timeMillis = System.currentTimeMillis() - operationTimeoutConfig.getTimeout() * 60 * 1000;
|
long timeMillis = System.currentTimeMillis() - (long) operationTimeoutConfig.getTimeout();
|
||||||
List<String> deviceTypes = new ArrayList<>();
|
List<String> deviceTypes = new ArrayList<>();
|
||||||
if (operationTimeoutConfig.getDeviceTypes().size() == 1 &&
|
if (operationTimeoutConfig.getDeviceTypes().size() == 1 &&
|
||||||
"ALL".equals(operationTimeoutConfig.getDeviceTypes().get(0))) {
|
"ALL".equals(operationTimeoutConfig.getDeviceTypes().get(0))) {
|
||||||
@ -85,4 +86,18 @@ public class OperationTimeoutTask extends DynamicPartitionedScheduleTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isQualifiedToExecuteTask() {
|
||||||
|
if (isDynamicTaskEligible()) {
|
||||||
|
try {
|
||||||
|
return DeviceManagementDataHolder.getInstance().getHeartBeatService().isQualifiedToExecuteTask();
|
||||||
|
} catch (HeartBeatManagementException e) {
|
||||||
|
log.error("Error while checking is qualified to execute task", e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,14 +57,14 @@ public class OperationTimeoutTaskManagerServiceImpl implements OperationTimeoutT
|
|||||||
log.debug("Operation timeout task is started for the device type(s) : " + config.getDeviceTypes()
|
log.debug("Operation timeout task is started for the device type(s) : " + config.getDeviceTypes()
|
||||||
+ ", operation code : " + config.getInitialStatus());
|
+ ", operation code : " + config.getInitialStatus());
|
||||||
log.debug(
|
log.debug(
|
||||||
"Operation timeout task is at frequency of : " + config.getTimeout() + " minutes");
|
"Operation timeout task is at frequency of : " + config.getTimeout() + " milliseconds");
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskManager taskManager = taskService.getTaskManager(OPERATION_TIMEOUT_TASK);
|
TaskManager taskManager = taskService.getTaskManager(OPERATION_TIMEOUT_TASK);
|
||||||
|
|
||||||
TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
|
TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
|
||||||
//Convert to milli seconds
|
//Convert to milli seconds
|
||||||
triggerInfo.setIntervalMillis(config.getTimeout() * 60 * 1000);
|
triggerInfo.setIntervalMillis(config.getTimeout());
|
||||||
triggerInfo.setRepeatCount(-1);
|
triggerInfo.setRepeatCount(-1);
|
||||||
|
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
@ -125,7 +125,7 @@ public class OperationTimeoutTaskManagerServiceImpl implements OperationTimeoutT
|
|||||||
if (taskManager.isTaskScheduled(taskName)) {
|
if (taskManager.isTaskScheduled(taskName)) {
|
||||||
taskManager.deleteTask(taskName);
|
taskManager.deleteTask(taskName);
|
||||||
TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
|
TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
|
||||||
triggerInfo.setIntervalMillis(config.getTimeout() * 60 * 1000);
|
triggerInfo.setIntervalMillis(config.getTimeout());
|
||||||
triggerInfo.setRepeatCount(-1);
|
triggerInfo.setRepeatCount(-1);
|
||||||
|
|
||||||
Map<String, String> properties = new HashMap<>();
|
Map<String, String> properties = new HashMap<>();
|
||||||
|
|||||||
@ -353,7 +353,7 @@
|
|||||||
<!--</DeviceTypes>-->
|
<!--</DeviceTypes>-->
|
||||||
<!--<Code>DOUBLE_COMMAND</Code>-->
|
<!--<Code>DOUBLE_COMMAND</Code>-->
|
||||||
<!--<InitialStatus>REQUIRED_CONFIRMATION</InitialStatus>-->
|
<!--<InitialStatus>REQUIRED_CONFIRMATION</InitialStatus>-->
|
||||||
<!--<Timeout>30</Timeout>-->
|
<!--<Timeout>30000</Timeout>-->
|
||||||
<!--<NextStatus>ERROR</NextStatus>-->
|
<!--<NextStatus>ERROR</NextStatus>-->
|
||||||
<!--</OperationTimeout>-->
|
<!--</OperationTimeout>-->
|
||||||
{% if device_mgt_conf.operation_timeout_conf is defined %}
|
{% if device_mgt_conf.operation_timeout_conf is defined %}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user