Yair Zaslavsky has uploaded a new change for review. Change subject: [WIP] core: async task mgr + batch - cleanups ......................................................................
[WIP] core: async task mgr + batch - cleanups Some cleanups towards introducing batch insert of async task entities. One of the main changes already introduced here is the fact fnsplitter is not used anymore to split entity IDs as insert of INSERT SELECT + fnsplitter we will use a batch. Change-Id: Ia6d8dc6095430c99fdb6c8cd8289c23e270fff9e Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.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 packaging/dbscripts/async_tasks_sp.sql 6 files changed, 18 insertions(+), 71 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/45/16445/1 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 2a6d41d..c1511af 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 @@ -1368,7 +1368,7 @@ try { AsyncTasks task = createAsyncTask(new AsyncTaskCreationInfo(), parentCommand); taskId = task.getTaskId(); - AsyncTaskUtils.addOrUpdateTaskInDB(task, null, EMPTY_GUID_ARRAY); + getAsyncTaskDao().save(task); taskKeyToTaskIdMap.put(taskKey, taskId); addToReturnValueTaskPlaceHolderIdList(taskId); } catch (RuntimeException ex) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java index 1522a96..9b6e28c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/AsyncTaskUtils.java @@ -53,24 +53,6 @@ getAsyncTaskDao().saveOrUpdate(asyncTask, null, (Guid[]) null); } - public static void addOrUpdateTaskInDB( - AsyncTasks task, - VdcObjectType entityType, - Guid... entityIds) { - try { - if (task != null) { - getAsyncTaskDao() - .saveOrUpdate(task, - entityType, - entityIds); - } - } catch (RuntimeException e) { - log.error(String.format( - "Adding/Updating task %1$s to DataBase threw an exception.", - task.getTaskId()), e); - } - } - private static AsyncTaskDAO getAsyncTaskDao() { return DbFacade.getInstance().getAsyncTaskDao(); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java index 2dd9745..7339008 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AsyncTaskDAO.java @@ -50,15 +50,6 @@ List<AsyncTasks> getAll(); /** - * Saves the specified task. - * - * @param task the task - * @param enitytType type of entities to be associated with the task - * @param entityIds IDs of entities to be associated with the task - */ - void save(AsyncTasks task, VdcObjectType enitytType, Guid... entityIds); - - /** * Saves or updates the specified task and its associated entities * * @param task the task 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 110170a..6518e7d 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 @@ -29,7 +29,6 @@ * {@code DbFacade}. */ public class AsyncTaskDAODbFacadeImpl extends BaseDAODbFacade implements AsyncTaskDAO { - private static final Guid[] EMPTY_GUIDS_ARRAY = new Guid[0]; private static final Log log = LogFactory.getLog(AsyncTaskDAODbFacadeImpl.class); private static class IdRowMapper implements RowMapper<Guid> { @@ -53,8 +52,10 @@ entity.setstatus(AsyncTaskStatusEnum.forValue(rs.getInt("status"))); entity.setTaskId(Guid.createGuidFromStringDefaultEmpty(rs.getString("task_id"))); entity.setVdsmTaskId(Guid.createGuidFromString(rs.getString("vdsm_task_id"))); - entity.setActionParameters(deserializeParameters(rs.getString("action_parameters"),rs.getString("action_params_class"))); - entity.setTaskParameters(deserializeParameters(rs.getString("task_parameters"),rs.getString("task_params_class"))); + entity.setActionParameters(deserializeParameters(rs.getString("action_parameters"), + rs.getString("action_params_class"))); + entity.setTaskParameters(deserializeParameters(rs.getString("task_parameters"), + rs.getString("task_params_class"))); entity.setStepId(Guid.createGuidFromString(rs.getString("step_id"))); entity.setCommandId(Guid.createGuidFromStringDefaultEmpty(rs.getString("command_id"))); entity.setRootCommandId(Guid.createGuidFromStringDefaultEmpty(rs.getString("root_command_id"))); @@ -77,7 +78,7 @@ private static class AsyncTaskParameterSource extends CustomMapSqlParameterSource { - public AsyncTaskParameterSource(DbEngineDialect dialect,AsyncTasks task) { + public AsyncTaskParameterSource(DbEngineDialect dialect, AsyncTasks task) { super(dialect); addValue("action_type", task.getaction_type()); addValue("result", task.getresult()); @@ -85,9 +86,9 @@ addValue("vdsm_task_id", task.getVdsmTaskId()); addValue("task_id", task.getTaskId()); addValue("action_parameters", serializeParameters(task.getActionParameters())); - addValue("action_params_class",task.getActionParameters().getClass().getName()); + addValue("action_params_class", task.getActionParameters().getClass().getName()); addValue("task_parameters", serializeParameters(task.getTaskParameters())); - addValue("task_params_class",task.getTaskParameters().getClass().getName()); + addValue("task_params_class", task.getTaskParameters().getClass().getName()); addValue("step_id", task.getStepId()); addValue("command_id", task.getCommandId()); addValue("root_command_id", task.getRootCommandId()); @@ -121,18 +122,7 @@ } private AsyncTaskParameterSource getTaskParameterSource(AsyncTasks task) { - return new AsyncTaskParameterSource(dialect,task); - } - - @Override - public void save(AsyncTasks task, VdcObjectType entityType, Guid... entityIds) { - AsyncTaskParameterSource parameterSource = getTaskParameterSource(task); - parameterSource.addValue("entity_type", (entityType != null) ? entityType.toString() : null); - parameterSource.addValue("started_at", task.getStartTime()); - parameterSource.addValue("storage_pool_id",task.getStoragePoolId()); - parameterSource.addValue("async_task_type", task.getTaskType()); - parameterSource.addValue("entity_ids", StringUtils.join(entityIds, ",")); - getCallsHandler().executeModification("Insertasync_tasks", parameterSource); + return new AsyncTaskParameterSource(dialect, task); } @Override @@ -140,7 +130,7 @@ AsyncTaskParameterSource parameterSource = getTaskParameterSource(task); parameterSource.addValue("entity_type", (entityType != null) ? entityType.toString() : null); parameterSource.addValue("started_at", task.getStartTime()); - parameterSource.addValue("storage_pool_id",task.getStoragePoolId()); + parameterSource.addValue("storage_pool_id", task.getStoragePoolId()); parameterSource.addValue("async_task_type", task.getTaskType()); parameterSource.addValue("entity_ids", StringUtils.join(entityIds, ",")); getCallsHandler().executeModification("InsertOrUpdateAsyncTasks", parameterSource); @@ -148,9 +138,12 @@ @Override public void save(AsyncTasks task) { - save(task, null, EMPTY_GUIDS_ARRAY); + AsyncTaskParameterSource parameterSource = getTaskParameterSource(task); + parameterSource.addValue("started_at", task.getStartTime()); + parameterSource.addValue("storage_pool_id", task.getStoragePoolId()); + parameterSource.addValue("async_task_type", task.getTaskType()); + getCallsHandler().executeModification("Insertasync_tasks", parameterSource); } - @Override public void update(AsyncTasks task) { 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 cbabab1..9260b80 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 @@ -153,19 +153,6 @@ } /** - * Ensures that saving a ad_group works as expected. - */ - @Test - public void testSaveWithEntities() { - Guid storageId = Guid.newGuid(); - dao.save(newAsyncTask, VdcObjectType.Storage, storageId); - List<Guid> asyncTasks = dao.getAsyncTaskIdsByEntity(storageId); - assertNotNull(asyncTasks); - assertEquals(asyncTasks.size(), 1); - assertEquals(asyncTasks.get(0), newAsyncTask.getTaskId()); - } - - /** * Ensures that updating a ad_group works as expected. */ @Test diff --git a/packaging/dbscripts/async_tasks_sp.sql b/packaging/dbscripts/async_tasks_sp.sql index 7f60869..b9abacf 100644 --- a/packaging/dbscripts/async_tasks_sp.sql +++ b/packaging/dbscripts/async_tasks_sp.sql @@ -13,18 +13,14 @@ v_step_id UUID, v_command_id UUID, v_root_command_id UUID, - v_entity_type varchar(128), v_started_at timestamp WITH TIME ZONE, v_storage_pool_id UUID, - v_async_task_type INTEGER, - v_entity_ids text) + v_async_task_type INTEGER) 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, 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$ LANGUAGE plpgsql; @@ -74,17 +70,15 @@ v_step_id UUID, v_command_id UUID, v_root_command_id UUID, - v_entity_type varchar(128), v_started_at timestamp WITH TIME ZONE, v_storage_pool_id UUID, - v_async_task_type INTEGER, - v_entity_ids text) + v_async_task_type INTEGER) RETURNS VOID AS $procedure$ 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_root_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_started_at, v_storage_pool_id, v_async_task_type); 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, v_root_command_id); END IF; -- To view, visit http://gerrit.ovirt.org/16445 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia6d8dc6095430c99fdb6c8cd8289c23e270fff9e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches