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

Reply via email to