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

Reply via email to