Gilad Chaplik has posted comments on this change.

Change subject: engine: Support for gluster asynchronous tasks(WIP)
......................................................................


Patch Set 3: (9 inline comments)

Hi Sahina,
How are you going to handle zombie tasks?

....................................................
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterTaskManager.java
Line 24: 
Line 25: public final class GlusterTaskManager {
Line 26:     private static final Log log = 
LogFactory.getLog(GlusterTaskManager.class);
Line 27: 
Line 28:     private final List<Guid> glusterTasksList = new ArrayList<Guid>();
maybe map is better
Line 29: 
Line 30:     private static GlusterTaskManager _taskMgr = new 
GlusterTaskManager();
Line 31: 
Line 32:     public static GlusterTaskManager getInstance() {


Line 66:         for (Guid taskId : glusterTasksList) {
Line 67:                 //get status of task from vdsm
Line 68:             GlusterAsyncTask task = 
GlusterTaskStatusUtil.getTaskStatus(taskId);
Line 69:                 //get step from db for the corresponding gluster task
Line 70:             List<Step> steps = 
DbFacade.getInstance().getStepDao().getStepsByExternalId(taskId);
dao call within a synchronized method? not sure it is the best thing.
Line 71:             //update status in step table
Line 72:             for (Step step: steps) {
Line 73:                 step.setDescription(getTaskMessage(step,task));
Line 74:                 if (hasTaskCompleted(task)) {


Line 80:                 } else {
Line 81:                     
JobRepositoryFactory.getJobRepository().updateStep(step);
Line 82:                 }
Line 83:             }
Line 84:         }
monitoring logic should be extracted.
Line 85:         for (Guid removeTaskId : toRemoveList) {
Line 86:             removeTask(removeTaskId);
Line 87:         }
Line 88: 


Line 154:     }
Line 155: 
Line 156:     private void initializeTasks() {
Line 157:         //get external tasks from DB where not completed.
Line 158:         //May not be required if we use gluster Tasks list from UP 
server for each cluster
serious question. how do you handle tasks when host goes to !up?
Line 159: 
Line 160:         initAndCleanupOrphanTasks();
Line 161:     }


....................................................
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/RebalanceGlusterVolumeCommand.java
Line 19:  * This may be a long running operation and so the returned task id is 
used to update
Line 20:  * the status of the step and the corresponding job.
Line 21:  */
Line 22: @NonTransactiveCommandAttribute
Line 23: public class RebalanceGlusterVolumeCommand extends 
GlusterAsyncCommandBase<GlusterVolumeRebalanceParameters> {
separate patch?
Line 24: 
Line 25:     private static final long serialVersionUID = 8747137699199502912L;
Line 26: 
Line 27:     public 
RebalanceGlusterVolumeCommand(GlusterVolumeRebalanceParameters params) {


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterAsyncTask.java
Line 3: import java.io.Serializable;
Line 4: 
Line 5: import org.ovirt.engine.core.compat.Guid;
Line 6: 
Line 7: public class GlusterAsyncTask implements Serializable{
looks like AsyncTasks?
Line 8: 
Line 9:     private static final long serialVersionUID = 5165089908032934194L;
Line 10: 
Line 11:     private Guid taskId;


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterTaskStatus.java
Line 2: 
Line 3: import java.util.HashMap;
Line 4: import java.util.Map;
Line 5: 
Line 6: public enum GlusterTaskStatus {
looks like AsyncTaskState?
Line 7:     RUNNING(0),
Line 8:     FAILED(1),
Line 9:     COMPLETED(2),
Line 10:     ABORTED(3),


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterTaskType.java
Line 5: 
Line 6: import org.ovirt.engine.core.common.action.VdcActionType;
Line 7: import org.ovirt.engine.core.common.job.StepEnum;
Line 8: 
Line 9: public enum GlusterTaskType {
looks like AsyncTaskType
Line 10:     
REBALANCE(VdcActionType.RebalanceGlusterVolume,StepEnum.REBALANCING_VOLUME),
Line 11:     REPLACE_BRICK(VdcActionType.ReplaceGlusterVolumeBrick);
Line 12:    // REMOVE_BRICK(VdcActionType.DeleteGlusterVolume); //TODO: change
Line 13: 


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/job/ExternalSystemType.java
Line 1: package org.ovirt.engine.core.common.job;
Line 2: 
Line 3: public enum ExternalSystemType {
Line 4:     VDSM,
Line 5:     GLUSTER;
where do you use it? failed to find.
Line 6: 
Line 7:     static public ExternalSystemType safeValueOf(String value) {
Line 8:         if (value == null) {
Line 9:             return null;


--
To view, visit http://gerrit.ovirt.org/11840
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I8a56785edef091bce74e2b7b0ba9a3314f1397f1
Gerrit-PatchSet: 3
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Sahina Bose <sab...@redhat.com>
Gerrit-Reviewer: Eli Mesika <emes...@redhat.com>
Gerrit-Reviewer: Gilad Chaplik <gchap...@redhat.com>
Gerrit-Reviewer: Michael Kublin <mkub...@redhat.com>
Gerrit-Reviewer: Sahina Bose <sab...@redhat.com>
Gerrit-Reviewer: Shireesh Anjal <san...@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

Reply via email to