Details
-
Bug
-
Status: Patch Available
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
@NamedQuery(name = "GET_COORD_ACTIONS_FOR_RECOVERY_OLDER_THAN", query = "select a.id, a.jobId, a.statusStr, a.externalId, a.pending from CoordinatorActionBean a where a.pending > 0 AND (a.statusStr = 'SUSPENDED' OR a.statusStr = 'KILLED' OR a.statusStr = 'RUNNING') AND a.lastModifiedTimestamp <= :lastModifiedTime"),
Recovery service use above sql to recover killed/suspended/running action and in code it checks for external id. Checking of externalId can be done in sql itself.
else if (caction.getStatus() == CoordinatorActionBean.Status.SUSPENDED) { if (caction.getExternalId() != null && caction.getPending() > 1) { queueCallable(new SuspendXCommand(caction.getExternalId())); log.debug("Recover a SUSPENDED coord action and resubmit SuspendXCommand :" + caction.getId()); } } else if (caction.getStatus() == CoordinatorActionBean.Status.KILLED) { if (caction.getExternalId() != null) { queueCallable(new KillXCommand(caction.getExternalId())); log.debug("Recover a KILLED coord action and resubmit KillXCommand :" + caction.getId()); } } else if (caction.getStatus() == CoordinatorActionBean.Status.RUNNING) { if (caction.getExternalId() != null) { queueCallable(new ResumeXCommand(caction.getExternalId())); log.debug("Recover a RUNNING coord action and resubmit ResumeXCommand :" + caction.getId()); } }