Liron Aravot has uploaded a new change for review. Change subject: core: automatic reconstruct shouldn't abort user initiated recovery ......................................................................
core: automatic reconstruct shouldn't abort user initiated recovery Automatic engine timers and different commands might trigger automated reconstruct, currently the event queue leave only vds connect operations in the queue after a run of reconstruct whether it was succesfull or not. The following patch leave user initiated reconstructs (RecoveryStoragePool) in the queue so that it will be executed. Change-Id: I9423d880a7d10a5bfa917e415fe41651f9d7e7f1 Bug-Url: https://bugzilla.redhat.com/888259 Signed-off-by: Liron Aravot <lara...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java 3 files changed, 8 insertions(+), 6 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/10549/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java index 329471a..d57dea1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java @@ -71,7 +71,7 @@ if (currentEvent != null) { switch (currentEvent.getEventType()) { case RECONSTRUCT: - if (event.getEventType() == EventType.VDSCONNECTTOPOOL) { + if (event.getEventType() == EventType.VDSCONNECTTOPOOL || event.getEventType() == EventType.RECOVERY) { task = addTaskToQueue(event, callable, storagePoolId); } else { log.debugFormat("Current event was skiped because of reconstruct is running now for pool {0}, event {1}", @@ -156,18 +156,19 @@ if (futureResult.get() == null) { EventResult result = pair.getSecond().get(); if (result != null && result.getEventType() == EventType.RECONSTRUCT) { - log.infoFormat("Finished reconstruct for pool {0}. Clearing all event queue", storagePoolId); + log.infoFormat("Finished reconstruct for pool {0}. Clearing event queue", storagePoolId); lock.lock(); try { Queue<Pair<Event, FutureTask<EventResult>>> queue = new LinkedList<Pair<Event, FutureTask<EventResult>>>(); for (Pair<Event, FutureTask<EventResult>> task : poolsEventsMap.get(storagePoolId)) { - if (task.getFirst().getEventType() != EventType.VDSCONNECTTOPOOL) { + EventType eventType = task.getFirst().getEventType(); + if (eventType == EventType.VDSCONNECTTOPOOL || eventType == EventType.RECOVERY) { + queue.add(task); + } else { log.infoFormat("The following operation {0} was cancelled, because of recosntruct was run before", task.getFirst()); task.getSecond().cancel(true); - } else { - queue.add(task); } } if (queue.isEmpty()) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java index 855a97a..850563e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java @@ -113,7 +113,7 @@ getRecoveryStoragePoolParametersData().setStorageDomainId(getStorageDomainId().getValue()); EventResult result = ((EventQueue) EjbUtils.findBean(BeanType.EVENTQUEUE_MANAGER, BeanProxyType.LOCAL)).submitEventSync(new Event(getRecoveryStoragePoolParametersData().getStoragePoolId(), - _newMasterStorageDomainId, null, EventType.RECONSTRUCT), + _newMasterStorageDomainId, null, EventType.RECOVERY), new Callable<EventResult>() { @Override public EventResult call() { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java index 107a376..38b6fa3 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java @@ -2,6 +2,7 @@ public enum EventType { RECONSTRUCT, + RECOVERY, DOMAINFAILOVER, DOMAINNOTOPERATIONAL, VDSSTOARGEPROBLEMS, -- To view, visit http://gerrit.ovirt.org/10549 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9423d880a7d10a5bfa917e415fe41651f9d7e7f1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Aravot <lara...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches