Michael Kublin has uploaded a new change for review. Change subject: engine: Fixing correlationId in MultipleActionRunner ......................................................................
engine: Fixing correlationId in MultipleActionRunner The following patch should connect canDoAction with execute part of command by correlationId. >From now, all loggs related to command which was run via MultipleactionRunner >will have same correlationId. Removed some code which is checking if command has correlationId as irrelavant Change-Id: I2e0ce3452af69cfde3bc5f6b1075589455ce4cce Signed-off-by: Michael Kublin <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/ExecutionHandler.java 3 files changed, 8 insertions(+), 18 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/14329/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java index 85960b0..29e7545 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java @@ -317,7 +317,6 @@ VdcReturnValueBase returnValue = null; // Evaluate and set the correlationId on the parameters, fails on invalid correlation id - boolean hasCorrelationId = StringUtils.isNotEmpty(parameters.getCorrelationId()); returnValue = ExecutionHandler.evaluateCorrelationId(parameters); if (returnValue != null) { log.warnFormat("CanDoAction of action {0} failed. Reasons: {1}", actionType, @@ -328,7 +327,7 @@ CommandBase<?> command = CommandsFactory.CreateCommand(actionType, parameters); command.setInternalExecution(runAsInternal); command.setContext(context); - ExecutionHandler.prepareCommandForMonitoring(command, actionType, runAsInternal, hasCorrelationId); + ExecutionHandler.prepareCommandForMonitoring(command, actionType, runAsInternal); returnValue = command.executeAction(); returnValue.setCorrelationId(parameters.getCorrelationId()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java index 7cd6c04..8450d17 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java @@ -1,18 +1,14 @@ package org.ovirt.engine.core.bll; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.Callable; -import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.job.ExecutionContext; import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.ThreadLocalParamsContainer; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; @@ -26,7 +22,6 @@ private VdcActionType _actionType = VdcActionType.Unknown; private List<VdcActionParametersBase> _parameters; private final ArrayList<CommandBase<?>> _commands = new ArrayList<CommandBase<?>>(); - private final Map<Guid, Boolean> hasCorrelationIdMap = new HashMap<Guid, Boolean>(); protected boolean isInternal; /** @@ -65,19 +60,18 @@ VdcReturnValueBase returnValue; for (VdcActionParametersBase parameter : getParameters()) { parameter.setMultipleAction(true); - boolean hasCorrelationId = StringUtils.isNotEmpty(parameter.getCorrelationId()); returnValue = ExecutionHandler.evaluateCorrelationId(parameter); if (returnValue == null) { CommandBase<?> command = CommandsFactory.CreateCommand(_actionType, parameter); command.setInternalExecution(isInternal); getCommands().add(command); - hasCorrelationIdMap.put(command.getCommandId(), hasCorrelationId); } else { returnValues.add(returnValue); } } if (getCommands().size() == 1) { + ThreadLocalParamsContainer.setCorrelationId(getCommands().get(0).getCorrelationId()); returnValues.add(getCommands().get(0).canDoActionOnly()); } else { CheckCanDoActionsAsyncroniousely(returnValues); @@ -141,6 +135,7 @@ protected VdcReturnValueBase runCanDoActionOnly(final int currentCanDoActionId, final int totalSize) { CommandBase<?> command = getCommands().get(currentCanDoActionId); String actionType = command.getActionType().toString(); + ThreadLocalParamsContainer.setCorrelationId(command.getCorrelationId()); try { log.infoFormat("Start running CanDoAction for command number {0}/{1} (Command type: {2})", currentCanDoActionId + 1, @@ -173,8 +168,7 @@ if (executionContext == null || executionContext.isMonitored()) { ExecutionHandler.prepareCommandForMonitoring(command, command.getActionType(), - command.isInternalExecution(), - hasCorrelationIdMap.get(command.getCommandId())); + command.isInternalExecution()); } ThreadLocalParamsContainer.setCorrelationId(command.getCorrelationId()); command.executeAction(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/ExecutionHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/ExecutionHandler.java index 26847d5..fd83b16 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/ExecutionHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/ExecutionHandler.java @@ -178,8 +178,7 @@ */ public static void prepareCommandForMonitoring(CommandBase<?> command, VdcActionType actionType, - boolean runAsInternal, - boolean hasCorrelationId) { + boolean runAsInternal) { ExecutionContext context = command.getExecutionContext(); if (context == null) { @@ -187,7 +186,7 @@ } try { - boolean isMonitored = shouldMonitorCommand(actionType, runAsInternal, hasCorrelationId); + boolean isMonitored = shouldMonitorCommand(actionType, runAsInternal); // A monitored job is created for monitored external flows if (isMonitored || context.isJobRequired()) { @@ -218,13 +217,11 @@ * The action type * @param isInternal * Indicator of action invocation method - * @param hasCorrelationId - * Indicates if the current command was executed under a correlation-ID * @return true if the command should be monitored, else false. */ - private static boolean shouldMonitorCommand(VdcActionType actionType, boolean isInternal, boolean hasCorrelationId) { + private static boolean shouldMonitorCommand(VdcActionType actionType, boolean isInternal) { - return (actionType.isActionMonitored() || hasCorrelationId) && !isInternal; + return actionType.isActionMonitored() && !isInternal; } /** -- To view, visit http://gerrit.ovirt.org/14329 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2e0ce3452af69cfde3bc5f6b1075589455ce4cce Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Michael Kublin <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
