You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2015/09/26 04:45:40 UTC

ambari git commit: AMBARI-13245. RU cluster in hung state while trying to perform downgrade (part2) (jonathanhurley)

Repository: ambari
Updated Branches:
  refs/heads/trunk 7e2a1c0e2 -> 156afda50


AMBARI-13245. RU cluster in hung state while trying to perform downgrade (part2) (jonathanhurley)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/156afda5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/156afda5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/156afda5

Branch: refs/heads/trunk
Commit: 156afda504ce75fdfaf0efd2509ca757baefc463
Parents: 7e2a1c0
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Fri Sep 25 20:26:10 2015 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Fri Sep 25 22:29:56 2015 -0400

----------------------------------------------------------------------
 .../actionmanager/ActionDBAccessorImpl.java     | 45 +++++---------------
 .../ambari/server/actionmanager/Request.java    | 35 +++------------
 .../apache/ambari/server/utils/Parallel.java    | 12 +++++-
 3 files changed, 26 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/156afda5/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
index 8768590..0f439de 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
@@ -138,24 +138,12 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
   @Override
   public List<Stage> getAllStages(long requestId) {
     List<StageEntity> stageEntities = stageDAO.findByRequestId(requestId);
-    ParallelLoopResult<Stage> loopResult = Parallel.forLoop(stageEntities, new LoopBody<StageEntity, Stage>() {
-      @Override
-      public Stage run(StageEntity stageEntity) {
-        return stageFactory.createExisting(stageEntity);
-      }
-    });
-    if(loopResult.getIsCompleted()) {
-      return loopResult.getResult();
-    } else {
-      // Fetch any missing results sequentially
-      List<Stage> stages = loopResult.getResult();
-      for(int i = 0; i < stages.size(); i++) {
-        if(stages.get(i) == null) {
-          stages.set(i, stageFactory.createExisting(stageEntities.get(i)));
-        }
-      }
-      return stages;
+    List<Stage> stages = new ArrayList<>(stageEntities.size());
+    for( StageEntity stageEntity : stageEntities ){
+      stages.add(stageFactory.createExisting(stageEntity));
     }
+
+    return stages;
   }
 
   @Override
@@ -701,26 +689,13 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
   }
 
   @Override
-  public List<Request> getRequests(Collection<Long> requestIds){
+  public List<Request> getRequests(Collection<Long> requestIds) {
     List<RequestEntity> requestEntities = requestDAO.findByPks(requestIds);
-    ParallelLoopResult<Request> loopResult = Parallel.forLoop(requestEntities, new LoopBody<RequestEntity, Request>() {
-      @Override
-      public Request run(RequestEntity requestEntity) {
-        return requestFactory.createExisting(requestEntity);
-      }
-    });
-    if(loopResult.getIsCompleted()) {
-      return loopResult.getResult();
-    } else {
-      // Fetch any missing results sequentially
-      List<Request> requests = loopResult.getResult();
-      for(int i = 0; i < requests.size(); i++) {
-        if(requests.get(i) == null) {
-          requests.set(i, requestFactory.createExisting(requestEntities.get(i)));
-        }
-      }
-      return requests;
+    List<Request> requests = new ArrayList<Request>(requestEntities.size());
+    for (RequestEntity requestEntity : requestEntities) {
+      requests.add(requestFactory.createExisting(requestEntity));
     }
+    return requests;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/156afda5/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
index 26447e6..31e11c1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Request.java
@@ -23,7 +23,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import com.google.inject.Inject;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.StaticallyInject;
 import org.apache.ambari.server.controller.ExecuteActionRequest;
@@ -37,14 +36,12 @@ import org.apache.ambari.server.orm.entities.RequestOperationLevelEntity;
 import org.apache.ambari.server.orm.entities.RequestResourceFilterEntity;
 import org.apache.ambari.server.orm.entities.StageEntity;
 import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.utils.LoopBody;
-import org.apache.ambari.server.utils.Parallel;
-import org.apache.ambari.server.utils.ParallelLoopResult;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.gson.Gson;
+import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import com.google.inject.assistedinject.AssistedInject;
 
@@ -197,32 +194,12 @@ public class Request {
     if(stageEntities == null || stageEntities.isEmpty()) {
       stages = Collections.emptyList();
     } else {
-      List<StageEntity> stageEntityList;
-      if(stageEntities instanceof List) {
-        stageEntityList = (List<StageEntity>) stageEntities;
-      } else {
-        stageEntityList = new ArrayList<StageEntity>(stageEntities);
-      }
-      ParallelLoopResult<Stage> loopResult = Parallel.forLoop(stageEntityList, new LoopBody<StageEntity, Stage>() {
-        @Override
-        public Stage run(StageEntity stageEntity) {
-          return stageFactory.createExisting(stageEntity);
-        }
-      });
-      List<Stage> stageList;
-      if(loopResult.getIsCompleted()) {
-        stageList = loopResult.getResult();
-      } else {
-        // Fetch any missing results sequentially
-        stageList = loopResult.getResult();
-        for(int i = 0; i < stages.size(); i++) {
-          if(stageList.get(i) == null) {
-            stageList.set(i, stageFactory.createExisting(stageEntityList.get(i)));
-          }
-        }
+      stages = new ArrayList<>(stageEntities.size());
+      for (StageEntity stageEntity : stageEntities) {
+        stages.add(stageFactory.createExisting(stageEntity));
       }
-      stages = stageList;
     }
+
     resourceFilters = filtersFromEntity(entity);
     operationLevel = operationLevelFromEntity(entity);
   }
@@ -424,7 +401,7 @@ public class Request {
   }
 
   public void setExclusive(boolean isExclusive) {
-    this.exclusive = isExclusive;
+    exclusive = isExclusive;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/156afda5/ambari-server/src/main/java/org/apache/ambari/server/utils/Parallel.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/Parallel.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/Parallel.java
index 9ca039b..c6e2156 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/Parallel.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/Parallel.java
@@ -35,13 +35,21 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.eclipse.persistence.internal.helper.ConcurrencyManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- *  This class provides support for parallel loops.
- *  Iterations in the loop run in parallel in parallel loops.
+ * <b>TEMPORARILY DO NOT USE WITH JPA ENTITIES</b>
+ * <p/>
+ * Deprecated since the use of this class to access JPA from multiple Ambari
+ * threads seems to cause thread liveliness problems in
+ * {@link ConcurrencyManager}.
+ * <p/>
+ * This class provides support for parallel loops. Iterations in the loop run in
+ * parallel in parallel loops.
  */
+@Deprecated
 public class Parallel {
 
   /**