Hello Yair Zaslavsky, I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/15565 to review the following change. Change subject: core: adding root command id ...................................................................... core: adding root command id Adding root command Id to DAO and business entity. Root command Id represents the command Id of the command that started the flow that eventually tasks were created on its behalf in child commands Change-Id: Ie72ede51fe24af79b46146eaa8b53725511d5538 Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> --- M backend/manager/dbscripts/async_tasks_sp.sql A backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java M backend/manager/modules/dal/src/test/resources/fixtures.xml 8 files changed, 46 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/65/15565/1 diff --git a/backend/manager/dbscripts/async_tasks_sp.sql b/backend/manager/dbscripts/async_tasks_sp.sql index 03c3d0c9..e790841 100644 --- a/backend/manager/dbscripts/async_tasks_sp.sql +++ b/backend/manager/dbscripts/async_tasks_sp.sql @@ -12,6 +12,7 @@ v_task_params_class varchar(256), v_step_id UUID, v_command_id UUID, + v_root_command_id UUID, v_entity_type varchar(128), v_started_at timestamp, v_storage_pool_id UUID, @@ -20,8 +21,8 @@ RETURNS VOID AS $procedure$ BEGIN -INSERT INTO async_tasks(action_type, result, status, vdsm_task_id, task_id, action_parameters,action_params_class, task_parameters, task_params_class, step_id, command_id, started_at,storage_pool_id, task_type) - VALUES(v_action_type, v_result, v_status, v_vdsm_task_id, v_task_id, v_action_parameters,v_action_params_class, v_task_parameters, v_task_params_class, v_step_id, v_command_id, v_started_at, v_storage_pool_id, v_async_task_type); +INSERT INTO async_tasks(action_type, result, status, vdsm_task_id, task_id, action_parameters,action_params_class, task_parameters, task_params_class, step_id, command_id, root_command_id, started_at,storage_pool_id, task_type) + VALUES(v_action_type, v_result, v_status, v_vdsm_task_id, v_task_id, v_action_parameters,v_action_params_class, v_task_parameters, v_task_params_class, v_step_id, v_command_id, v_root_command_id, v_started_at, v_storage_pool_id, v_async_task_type); INSERT INTO async_tasks_entities (async_task_id,entity_id,entity_type) SELECT v_task_id,fnsplitteruuid(v_entity_ids),v_entity_type; END; $procedure$ @@ -38,7 +39,8 @@ v_task_parameters text, v_task_params_class varchar(256), v_step_id UUID, - v_command_id UUID) + v_command_id UUID, + v_root_command_id UUID) RETURNS VOID --The [async_tasks] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated @@ -54,6 +56,7 @@ task_params_class = v_task_params_class, step_id = v_step_id, command_id = v_command_id, + root_command_id = v_root_command_id, vdsm_task_id = v_vdsm_task_id WHERE task_id = v_task_id; END; $procedure$ @@ -70,6 +73,7 @@ v_task_params_class varchar(256), v_step_id UUID, v_command_id UUID, + v_root_command_id UUID, v_entity_type varchar(128), v_started_at timestamp, v_storage_pool_id UUID, @@ -80,9 +84,9 @@ BEGIN IF NOT EXISTS (SELECT 1 from async_tasks where async_tasks.task_id = v_task_id) THEN PERFORM Insertasync_tasks(v_action_type, v_result, v_status, v_vdsm_task_id, v_task_id, v_action_parameters, - v_action_params_class, v_task_parameters, v_task_params_class, v_step_id, v_command_id, v_entity_type, v_started_at, v_storage_pool_id, v_async_task_type, v_entity_ids); + v_action_params_class, v_task_parameters, v_task_params_class, v_step_id, v_command_id, v_root_command_id, v_entity_type, v_started_at, v_storage_pool_id, v_async_task_type, v_entity_ids); ELSE - PERFORM Updateasync_tasks(v_action_type, v_result, v_status, v_vdsm_task_id, v_task_id, v_action_parameters, v_action_params_class, v_task_parameters, v_task_params_class, v_step_id, v_command_id); + PERFORM Updateasync_tasks(v_action_type, v_result, v_status, v_vdsm_task_id, v_task_id, v_action_parameters, v_action_params_class, v_task_parameters, v_task_params_class, v_step_id, v_command_id, v_root_command_id); END IF; END; $procedure$ LANGUAGE plpgsql; diff --git a/backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql b/backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql new file mode 100644 index 0000000..3e5cbff --- /dev/null +++ b/backend/manager/dbscripts/upgrade/03_03_0210_add_root_command_id_to_async_tasks.sql @@ -0,0 +1 @@ +select fn_db_add_column('async_tasks', 'root_command_id', 'UUID DEFAULT NULL'); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java index de345e1..3393328 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AsyncTaskFactory.java @@ -39,6 +39,7 @@ new VdcActionParametersBase(), creationInfo.getStepId(), asyncTask == null ? Guid.NewGuid() : asyncTask.getCommandId(), + asyncTask == null ? Guid.NewGuid() : asyncTask.getRootCommandId(), creationInfo.getStoragePoolID(), creationInfo.getTaskType()); creationInfo.setTaskType(AsyncTaskType.unknown); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java index 1a2bc0b..5d80672 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java @@ -1512,11 +1512,14 @@ asyncTask = DbFacade.getInstance().getAsyncTaskDao().get(taskId); } if (asyncTask != null) { + VdcActionParametersBase parentParameters = getParentParameters(parentCommand); asyncTask.setaction_type(parentCommand); asyncTask.setVdsmTaskId(asyncTaskCreationInfo.getVdsmTaskId()); - asyncTask.setActionParameters(getParentParameters(parentCommand)); + asyncTask.setActionParameters(parentParameters); asyncTask.setTaskParameters(getParameters()); asyncTask.setStepId(asyncTaskCreationInfo.getStepId()); + asyncTask.setCommandId(getCommandId()); + asyncTask.setRootCommandId(parentParameters.getCommandId()); asyncTask.setStoragePoolId(asyncTaskCreationInfo.getStoragePoolID()); asyncTask.setTaskType(asyncTaskCreationInfo.getTaskType()); } else { @@ -1536,14 +1539,17 @@ private AsyncTasks createAsyncTask( AsyncTaskCreationInfo asyncTaskCreationInfo, VdcActionType parentCommand) { + VdcActionParametersBase parentParameters = getParentParameters(parentCommand); return new AsyncTasks(parentCommand, AsyncTaskResultEnum.success, AsyncTaskStatusEnum.running, asyncTaskCreationInfo.getVdsmTaskId(), - getParentParameters(parentCommand), + parentParameters, getParameters(), asyncTaskCreationInfo.getStepId(), - getCommandId(), asyncTaskCreationInfo.getStoragePoolID(), + getCommandId(), + parentParameters.getCommandId(), + asyncTaskCreationInfo.getStoragePoolID(), asyncTaskCreationInfo.getTaskType()); } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java index 49d9116..48fa3d5 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AsyncTasks.java @@ -19,7 +19,13 @@ } public AsyncTasks(VdcActionType action_type, AsyncTaskResultEnum result, AsyncTaskStatusEnum status, Guid vdsmTaskId, - VdcActionParametersBase parentParameters, VdcActionParametersBase taskParameters, NGuid stepId, Guid commandId, Guid storagePoolId, AsyncTaskType taskType) { + VdcActionParametersBase parentParameters, + VdcActionParametersBase taskParameters, + NGuid stepId, + Guid commandId, + Guid rootCommandId, + Guid storagePoolId, + AsyncTaskType taskType) { this.actionType = action_type; this.result = result; this.status = status; @@ -29,6 +35,7 @@ this.stepId = stepId; this.startTime = new Date(); this.commandId = commandId; + this.rootCommandId = rootCommandId; this.storagePoolId = storagePoolId; this.taskId = Guid.NewGuid(); this.taskType = taskType; @@ -128,6 +135,14 @@ private Guid commandId = Guid.Empty; + public Guid getRootCommandId() { + return rootCommandId; + } + + public void setRootCommandId(Guid rootCommandId) { + this.rootCommandId = rootCommandId; + } + public Guid getCommandId() { return commandId; } @@ -135,6 +150,8 @@ public void setCommandId(Guid commandId) { this.commandId = commandId; } + + private Guid rootCommandId = Guid.Empty; public Guid getStoragePoolId() { return storagePoolId; @@ -163,6 +180,7 @@ results = prime * results + ((vdsmTaskId == null) ? 0 : vdsmTaskId.hashCode()); results = prime * results + ((stepId == null) ? 0 : stepId.hashCode()); results = prime * results + ((commandId == null) ? 0 : commandId.hashCode()); + results = prime * results + ((rootCommandId == null) ? 0 : rootCommandId.hashCode()); results = prime * results + ((actionParameters == null) ? 0 : actionParameters.hashCode()); results = prime * results + ((actionType == null) ? 0 : actionType.hashCode()); results = prime * results + ((result == null) ? 0 : result.hashCode()); @@ -189,6 +207,7 @@ && ObjectUtils.objectsEqual(taskId, other.taskId) && ObjectUtils.objectsEqual(stepId, other.stepId) && ObjectUtils.objectsEqual(commandId, other.commandId) + && ObjectUtils.objectsEqual(rootCommandId, other.rootCommandId) && ObjectUtils.objectsEqual(actionParameters, other.actionParameters) && actionType == other.actionType && result == other.result diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java index 2129e13..f2e5287 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAODbFacadeImpl.java @@ -58,6 +58,7 @@ entity.setTaskParameters(deserializeParameters(rs.getString("task_parameters"),rs.getString("task_params_class"))); entity.setStepId(NGuid.createGuidFromString(rs.getString("step_id"))); entity.setCommandId(Guid.createGuidFromString(rs.getString("command_id"))); + entity.setRootCommandId(Guid.createGuidFromString(rs.getString("root_command_id"))); entity.setStartTime(DbFacadeUtils.fromDate(rs.getTimestamp("started_at"))); entity.setTaskType(AsyncTaskType.forValue(rs.getInt("task_type"))); entity.setStoragePoolId(Guid.createGuidFromString(rs.getString("storage_pool_id"))); @@ -90,6 +91,7 @@ addValue("task_params_class",task.getTaskParameters().getClass().getName()); addValue("step_id", task.getStepId()); addValue("command_id", task.getCommandId()); + addValue("root_command_id", task.getRootCommandId()); } private static String serializeParameters(VdcActionParametersBase params) { diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java index 7ce276e..fe5ffd9 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/AsyncTaskDAOTest.java @@ -62,6 +62,7 @@ newAsyncTask.setActionParameters(params); newAsyncTask.setTaskParameters(taskParams); newAsyncTask.setCommandId(Guid.NewGuid()); + newAsyncTask.setRootCommandId(Guid.NewGuid()); newAsyncTask.setTaskType(AsyncTaskType.copyImage); newAsyncTask.setStoragePoolId(Guid.NewGuid()); diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml b/backend/manager/modules/dal/src/test/resources/fixtures.xml index 41cae72..b21349b 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -48,6 +48,7 @@ <column>result</column> <column>action_parameters</column> <column>command_id</column> + <column>root_command_id</column> <column>started_at</column> <column>storage_pool_id</column> <column>task_type</column> @@ -59,6 +60,7 @@ <value>0</value> <!-- Success --> <null /> <value>340fd52b-3400-4cdd-8d3f-c9d03704b0aa</value> + <value>340fd52b-3400-4cdd-8d3f-c9d03704b000</value> <value>2010-12-01 14:13:07</value> <value>6d849ebf-755f-4552-ad09-9a090cda105d</value> <value>3</value> @@ -71,6 +73,7 @@ <value>0</value> <!-- Success --> <null /> <value>340fd52b-3400-4cdd-8d3f-c9d03704b0ab</value> + <value>340fd52b-3400-4cdd-8d3f-c9d03704b000</value> <value>2010-12-01 14:13:07</value> <value>6d849ebf-755f-4552-ad09-9a090cda105d</value> <value>3</value> -- To view, visit http://gerrit.ovirt.org/15565 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie72ede51fe24af79b46146eaa8b53725511d5538 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches