CLOUDSTACK-10123: Entity should use GMT TZ for timestamp values (#2303)

Depending on the timezone you're running CS (before GMT timezones) you could experience that some jobs are marked as failed since the parent job got a null result despite its child job having successfully done the job. The child job got deleted by the CleanupTask ahead of time, due to a missing datetime conversion to GMT timezone.

Jobs are failing with this message: Job failed with un-handled exception

The fix intends to correct any datetime used in the code that should be using the GMT timezone instead of the local one since all DB datetime should be stored at GMT.
This commit is contained in:
Marc-Aurèle Brothier 2017-11-18 04:44:57 +01:00 committed by Rohit Yadav
parent cd6288ecfb
commit 421f1072d5
2 changed files with 4 additions and 5 deletions

View File

@ -2608,9 +2608,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
s_logger.trace("VM Operation Thread Running");
try {
_workDao.cleanup(VmOpCleanupWait.value());
// TODO. hard-coded to one hour after job has been completed
final Date cutDate = new Date(new Date().getTime() - 3600000);
final Date cutDate = new Date(DateUtil.currentGMTTime().getTime() - VmOpCleanupInterval.value() * 1000);
_workJobDao.expungeCompletedWorkJobs(cutDate);
} catch (final Exception e) {
s_logger.error("VM Operations failed due to ", e);
@ -2980,7 +2978,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
try {
scanStalledVMInTransitionStateOnDisconnectedHosts();
final List<VMInstanceVO> instances = _vmDao.findVMInTransition(new Date(new Date().getTime() - AgentManager.Wait.value() * 1000), State.Starting, State.Stopping);
final List<VMInstanceVO> instances = _vmDao.findVMInTransition(new Date(DateUtil.currentGMTTime().getTime() - AgentManager.Wait.value() * 1000), State.Starting, State.Stopping);
for (final VMInstanceVO instance : instances) {
final State state = instance.getState();
if (state == State.Stopping) {

View File

@ -43,6 +43,7 @@ import com.cloud.service.dao.ServiceOfferingDaoImpl;
import com.cloud.storage.DiskOfferingVO;
import com.cloud.storage.Storage.ProvisioningType;
import com.cloud.storage.dao.DiskOfferingDaoImpl;
import com.cloud.utils.DateUtil;
import com.cloud.utils.PropertiesUtil;
import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.db.DB;
@ -639,7 +640,7 @@ public class DatabaseConfig {
stmt.setLong(8, 0);
stmt.setString(9, hostAddress);
stmt.setString(10, hostPath);
stmt.setDate(11, new Date(new java.util.Date().getTime()));
stmt.setDate(11, new Date(DateUtil.currentGMTTime().getTime()));
stmt.setLong(12, podId);
stmt.setString(13, Status.Up.toString());
stmt.setLong(14, clusterId);