You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2017/04/06 09:33:54 UTC
[33/41] ambari git commit: AMBARI-20672 - Cluster Merge At End Of
Upgrade Creation Cascades Unnecessarily (jonathanhurley)
AMBARI-20672 - Cluster Merge At End Of Upgrade Creation Cascades Unnecessarily (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/64447e52
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/64447e52
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/64447e52
Branch: refs/heads/branch-3.0-perf
Commit: 64447e524b077e11cce8dd4b76e6f7dffd047f09
Parents: 45d8baf
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Tue Apr 4 12:57:33 2017 -0400
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Thu Apr 6 12:32:56 2017 +0300
----------------------------------------------------------------------
.../internal/UpgradeResourceProvider.java | 86 ++++++++++----------
.../alerts/AlertStateChangedListener.java | 2 +-
.../listeners/upgrade/StackVersionListener.java | 2 +-
.../ambari/server/orm/dao/UpgradeDAO.java | 5 --
.../server/orm/entities/ClusterEntity.java | 13 ++-
.../server/orm/entities/UpgradeEntity.java | 27 ++++--
.../org/apache/ambari/server/state/Cluster.java | 30 +++----
.../server/state/cluster/ClusterImpl.java | 48 ++---------
.../services/RetryUpgradeActionService.java | 2 +-
.../internal/UpgradeResourceProviderTest.java | 4 +-
.../UpgradeSummaryResourceProviderTest.java | 16 ++--
.../upgrade/StackVersionListenerTest.java | 2 +-
.../ambari/server/orm/dao/UpgradeDAOTest.java | 21 +++--
.../upgrades/UpgradeActionTest.java | 2 +-
.../server/state/ServiceComponentTest.java | 15 +++-
.../alerts/AlertStateChangedEventTest.java | 6 +-
.../services/RetryUpgradeActionServiceTest.java | 2 +-
17 files changed, 141 insertions(+), 142 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index ca9ce07..709ca93 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -335,7 +335,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
final Cluster cluster;
try {
- cluster = getManagementController().getClusters().getCluster(clusterName);
+ cluster = clusters.get().getCluster(clusterName);
} catch (AmbariException e) {
throw new NoSuchParentResourceException(
String.format("Cluster %s could not be loaded", clusterName));
@@ -421,7 +421,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
Cluster cluster;
try {
- cluster = getManagementController().getClusters().getCluster(clusterName);
+ cluster = clusters.get().getCluster(clusterName);
} catch (AmbariException e) {
throw new NoSuchResourceException(
String.format("Cluster %s could not be loaded", clusterName));
@@ -484,7 +484,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
final Cluster cluster;
try {
- cluster = getManagementController().getClusters().getCluster(clusterName);
+ cluster = clusters.get().getCluster(clusterName);
} catch (AmbariException e) {
throw new NoSuchParentResourceException(
String.format("Cluster %s could not be loaded", clusterName));
@@ -496,14 +496,11 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
"manage upgrade and downgrade");
}
-
-
String requestIdProperty = (String) propertyMap.get(UPGRADE_REQUEST_ID);
if (null == requestIdProperty) {
throw new IllegalArgumentException(String.format("%s is required", UPGRADE_REQUEST_ID));
}
- long clusterId = cluster.getClusterId();
long requestId = Long.parseLong(requestIdProperty);
UpgradeEntity upgradeEntity = s_upgradeDAO.findUpgradeByRequestId(requestId);
if( null == upgradeEntity){
@@ -544,11 +541,11 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
suspended = Boolean.valueOf((String) propertyMap.get(UPGRADE_SUSPENDED));
}
- setUpgradeRequestStatus(clusterId, requestId, status, propertyMap);
-
- // When the status of the upgrade's request is changing, we also update the suspended flag.
- upgradeEntity.setSuspended(suspended);
- s_upgradeDAO.merge(upgradeEntity);
+ try {
+ setUpgradeRequestStatus(cluster, requestId, status, suspended, propertyMap);
+ } catch (AmbariException ambariException) {
+ throw new SystemException(ambariException.getMessage(), ambariException);
+ }
}
// if either of the skip failure settings are in the request, then we need
@@ -948,11 +945,12 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
RequestStageContainer request,
UpgradeEntity upgradeEntity) throws AmbariException {
- upgradeEntity.setRequestId(request.getId());
-
request.persist();
+ RequestEntity requestEntity = s_requestDAO.findByPK(request.getId());
+ upgradeEntity.setRequestEntity(requestEntity);
s_upgradeDAO.create(upgradeEntity);
+
cluster.setUpgradeEntity(upgradeEntity);
return upgradeEntity;
@@ -1670,19 +1668,28 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
* <li>{@link HostRoleStatus#ABORTED}</li>
* <li>{@link HostRoleStatus#PENDING}</li>
* </ul>
+ * This method will also adjust the cluster->upgrade association correctly
+ * based on the new status being supplied.
*
- * @param clusterId
- * the ID of the cluster
+ * @param cluster
+ * the cluster
* @param requestId
* the request to change the status for.
* @param status
* the status to set on the associated request.
+ * @param suspended
+ * if the value of the specified status is
+ * {@link HostRoleStatus#ABORTED}, then this boolean will control
+ * whether the upgrade is suspended (still associated with the
+ * cluster) or aborted (no longer associated with the cluster).
* @param propertyMap
* the map of request properties (needed for things like abort reason
* if present)
*/
- private void setUpgradeRequestStatus(long clusterId, long requestId, HostRoleStatus status,
- Map<String, Object> propertyMap) {
+ @Transactional
+ void setUpgradeRequestStatus(Cluster cluster, long requestId, HostRoleStatus status,
+ boolean suspended, Map<String, Object> propertyMap) throws AmbariException {
+ // these are the only two states we allow
if (status != HostRoleStatus.ABORTED && status != HostRoleStatus.PENDING) {
throw new IllegalArgumentException(String.format("Cannot set status %s, only %s is allowed",
status, EnumSet.of(HostRoleStatus.ABORTED, HostRoleStatus.PENDING)));
@@ -1710,23 +1717,23 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
ActionManager actionManager = getManagementController().getActionManager();
- if (HostRoleStatus.ABORTED == status) {
- if (!internalStatus.isCompletedState()) {
- actionManager.cancelRequest(requestId, reason);
- // Remove relevant upgrade entity
- try {
- Cluster cluster = clusters.get().getClusterById(clusterId);
- UpgradeEntity upgradeEntity = s_upgradeDAO.findUpgradeByRequestId(requestId);
- upgradeEntity.setSuspended(true);
- s_upgradeDAO.merge(upgradeEntity);
-
- cluster.setUpgradeEntity(null);
- } catch (AmbariException e) {
- LOG.warn("Could not clear upgrade entity for cluster with id {}", clusterId, e);
- }
+ if (HostRoleStatus.ABORTED == status && !internalStatus.isCompletedState()) {
+ // cancel the request
+ actionManager.cancelRequest(requestId, reason);
+
+ // either suspend the upgrade or abort it outright
+ UpgradeEntity upgradeEntity = s_upgradeDAO.findUpgradeByRequestId(requestId);
+ if (suspended) {
+ // set the upgrade to suspended
+ upgradeEntity.setSuspended(suspended);
+ s_upgradeDAO.merge(upgradeEntity);
+ } else {
+ // otherwise remove the association with the cluster since it's being
+ // full aborted
+ cluster.setUpgradeEntity(null);
}
- } else {
- // Status must be PENDING.
+
+ } else if (status == HostRoleStatus.PENDING) {
List<Long> taskIds = new ArrayList<>();
List<HostRoleCommandEntity> hrcEntities = s_hostRoleCommandDAO.findByRequestIdAndStatuses(
requestId, Sets.newHashSet(HostRoleStatus.ABORTED, HostRoleStatus.TIMEDOUT));
@@ -1737,16 +1744,9 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
actionManager.resubmitTasks(taskIds);
- try {
- Cluster cluster = clusters.get().getClusterById(clusterId);
- UpgradeEntity lastUpgradeItemForCluster = s_upgradeDAO.findLastUpgradeOrDowngradeForCluster(cluster.getClusterId());
- lastUpgradeItemForCluster.setSuspended(false);
- s_upgradeDAO.merge(lastUpgradeItemForCluster);
-
- cluster.setUpgradeEntity(lastUpgradeItemForCluster);
- } catch (AmbariException e) {
- LOG.warn("Could not clear upgrade entity for cluster with id {}", clusterId, e);
- }
+ UpgradeEntity lastUpgradeItemForCluster = s_upgradeDAO.findLastUpgradeOrDowngradeForCluster(cluster.getClusterId());
+ lastUpgradeItemForCluster.setSuspended(false);
+ s_upgradeDAO.merge(lastUpgradeItemForCluster);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertStateChangedListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertStateChangedListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertStateChangedListener.java
index ce55203..a02a5d8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertStateChangedListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertStateChangedListener.java
@@ -227,7 +227,7 @@ public class AlertStateChangedListener {
Long clusterId = history.getClusterId();
try {
Cluster cluster = m_clusters.get().getClusterById(clusterId);
- if (null != cluster.getUpgradeEntity() || cluster.isUpgradeSuspended()) {
+ if (null != cluster.getUpgradeInProgress()) {
// only send AMBARI alerts if in an upgrade
String serviceName = definition.getServiceName();
if (!StringUtils.equals(serviceName, Services.AMBARI.name())) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
index bd7eb00..22d7f2e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
@@ -223,7 +223,7 @@ public class StackVersionListener {
sch.setUpgradeState(UpgradeState.VERSION_MISMATCH);
}
} else if (upgradeState == UpgradeState.VERSION_MISMATCH && desiredVersion.equals(newVersion)) {
- if (cluster.getUpgradeEntity() != null) {
+ if (cluster.getUpgradeInProgress() != null) {
sch.setUpgradeState(UpgradeState.COMPLETE);
} else {
sch.setUpgradeState(UpgradeState.NONE);
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/UpgradeDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/UpgradeDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/UpgradeDAO.java
index bf9c650..4666edf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/UpgradeDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/UpgradeDAO.java
@@ -105,11 +105,6 @@ public class UpgradeDAO {
@Transactional
public void create(UpgradeEntity entity) {
EntityManager entityManager = entityManagerProvider.get();
- // This is required because since none of the entities
- // for the request are actually persisted yet,
- // JPA ordering could allow foreign key entities
- // to be created after this statement.
- entityManager.flush();
entityManager.persist(entity);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
index 89b0646..527fd7a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
@@ -142,8 +142,17 @@ public class ClusterEntity {
})
private ResourceEntity resource;
- @OneToOne(cascade = CascadeType.ALL)
- @JoinColumn(name = "upgrade_id", referencedColumnName = "upgrade_id")
+ @Basic
+ @Column(name = "upgrade_id", nullable = true, insertable = false, updatable = false)
+ private Long upgradeId;
+
+ @OneToOne(cascade = CascadeType.REMOVE)
+ @JoinColumn(
+ name = "upgrade_id",
+ referencedColumnName = "upgrade_id",
+ nullable = true,
+ insertable = false,
+ updatable = true)
/**
* {@code null} when there is no upgrade/downgrade in progress.
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
index 7421ca1..89574bc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
@@ -24,12 +24,15 @@ import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
@@ -42,8 +45,11 @@ import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
*/
@Entity
@Table(name = "upgrade")
-@TableGenerator(name = "upgrade_id_generator",
- table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_value",
+@TableGenerator(
+ name = "upgrade_id_generator",
+ table = "ambari_sequences",
+ pkColumnName = "sequence_name",
+ valueColumnName = "sequence_value",
pkColumnValue = "upgrade_id_seq",
initialValue = 0)
@NamedQueries({
@@ -68,9 +74,19 @@ public class UpgradeEntity {
@Column(name = "cluster_id", nullable = false, insertable = true, updatable = false)
private Long clusterId;
- @Column(name="request_id", nullable = false)
+ @Column(name = "request_id", nullable = false, insertable = false, updatable = false)
private Long requestId;
+ /**
+ * The request entity associated with this upgrade. This relationship allows
+ * JPA to correctly order non-flushed commits during the transaction which
+ * creates the upgrade. Without it, JPA would not know the correct order and
+ * may try to create the upgrade before the request.
+ */
+ @OneToOne(optional = false, fetch = FetchType.LAZY)
+ @JoinColumn(name = "request_id", nullable = false, insertable = true, updatable = false)
+ private RequestEntity requestEntity = null;
+
@Column(name="from_version", nullable = false)
private String fromVersion = null;
@@ -161,8 +177,9 @@ public class UpgradeEntity {
/**
* @param id the request id
*/
- public void setRequestId(Long id) {
- requestId = id;
+ public void setRequestEntity(RequestEntity requestEntity) {
+ this.requestEntity = requestEntity;
+ requestId = requestEntity.getRequestId();
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
index 8074b31..9594803 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
@@ -672,15 +672,21 @@ public interface Cluster {
boolean isBluePrintDeployed();
/**
- * @return upgrade that is in progress for a cluster. If no upgrade is going
- * on, a null is returned.
+ * Gets an {@link UpgradeEntity} if there is an upgrade in progress or an
+ * upgrade that has been suspended. This will return the associated
+ * {@link UpgradeEntity} if it exists.
+ *
+ * @return an upgrade which will either be in progress or suspended, or
+ * {@code null} if none.
+ *
*/
- UpgradeEntity getUpgradeEntity();
+ UpgradeEntity getUpgradeInProgress();
/**
- * The value is explicitly set on the ClusterEntity when Creating,
- * Aborting (switching to downgrade), Resuming, or Finalizing an upgrade.
- * @param upgradeEntity the upgrade entity to set for cluster
+ * Sets or clears the associated upgrade with the cluster.
+ *
+ * @param upgradeEntity
+ * the upgrade entity to set for cluster, or {@code null} for none.
* @throws AmbariException
*/
void setUpgradeEntity(UpgradeEntity upgradeEntity) throws AmbariException;
@@ -695,18 +701,6 @@ public interface Cluster {
boolean isUpgradeSuspended();
/**
- * Gets an {@link UpgradeEntity} if there is an upgrade in progress or an
- * upgrade that has been suspended. This will first check
- * {@link #getUpgradeEntity()} and return that if it is not {@code null}.
- * Otherwise, this will perform a search for the most recent upgrade/downgrade
- * which has not been completed.
- *
- * @return an upgrade which will either be in progress or suspended, or
- * {@code null} if none.
- */
- UpgradeEntity getUpgradeInProgress();
-
- /**
* Returns the name of the service that the passed config type belongs to.
*
* @param configType
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index 739fe23..b7cc4cd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -1020,39 +1020,6 @@ public class ClusterImpl implements Cluster {
* {@inheritDoc}
*/
@Override
- public UpgradeEntity getUpgradeInProgress() {
- // first check for an upgrade that's actively running
- UpgradeEntity upgradeInProgress = getUpgradeEntity();
- if (null != upgradeInProgress) {
- return upgradeInProgress;
- }
-
- // perform a search for any upgrade which should also return upgrades which
- // are suspended
- UpgradeEntity mostRecentUpgrade = upgradeDAO.findLastUpgradeOrDowngradeForCluster(getClusterId());
- if (mostRecentUpgrade != null) {
- if (mostRecentUpgrade.isSuspended()) {
- return mostRecentUpgrade;
- }
-
- // look for any item from the prior upgrade which is still in progress
- // (not failed, completed, or aborted)
- List<HostRoleCommandEntity> commands = hostRoleCommandDAO.findByRequestIdAndStatuses(
- mostRecentUpgrade.getRequestId(), HostRoleStatus.IN_PROGRESS_STATUSES);
-
- if (!commands.isEmpty()) {
- return mostRecentUpgrade;
- }
- }
-
- return null;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
public ClusterVersionEntity getEffectiveClusterVersion() throws AmbariException {
UpgradeEntity upgradeEntity = getUpgradeInProgress();
if (upgradeEntity == null) {
@@ -3334,7 +3301,7 @@ public class ClusterImpl implements Cluster {
* {@inheritDoc}
*/
@Override
- public UpgradeEntity getUpgradeEntity() {
+ public UpgradeEntity getUpgradeInProgress() {
ClusterEntity clusterEntity = getClusterEntity();
return clusterEntity.getUpgradeEntity();
}
@@ -3350,10 +3317,7 @@ public class ClusterImpl implements Cluster {
clusterEntity.setUpgradeEntity(upgradeEntity);
clusterDAO.merge(clusterEntity);
} catch (RollbackException e) {
- String msg = "Unable to set upgrade entiry " + upgradeEntity + " for cluster "
- + getClusterName();
- LOG.warn(msg);
- throw new AmbariException(msg, e);
+ throw new AmbariException("Unable to update the associated upgrade with the cluster", e);
}
}
@@ -3362,11 +3326,9 @@ public class ClusterImpl implements Cluster {
*/
@Override
public boolean isUpgradeSuspended() {
- UpgradeEntity lastUpgradeItemForCluster = upgradeDAO.findLastUpgradeForCluster(clusterId,
- Direction.UPGRADE);
-
- if (null != lastUpgradeItemForCluster) {
- return lastUpgradeItemForCluster.isSuspended();
+ UpgradeEntity upgrade = getUpgradeInProgress();
+ if (null != upgrade) {
+ return upgrade.isSuspended();
}
return false;
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/main/java/org/apache/ambari/server/state/services/RetryUpgradeActionService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/services/RetryUpgradeActionService.java b/ambari-server/src/main/java/org/apache/ambari/server/state/services/RetryUpgradeActionService.java
index 6d960c3..584ce98 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/services/RetryUpgradeActionService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/services/RetryUpgradeActionService.java
@@ -173,7 +173,7 @@ public class RetryUpgradeActionService extends AbstractScheduledService {
}
// May be null, and either upgrade or downgrade
- UpgradeEntity currentUpgrade = cluster.getUpgradeEntity();
+ UpgradeEntity currentUpgrade = cluster.getUpgradeInProgress();
if (currentUpgrade == null) {
LOG.debug("There is no active stack upgrade in progress. Skip retrying failed tasks.");
return null;
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 3e70989..999b7a7 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -618,7 +618,7 @@ public class UpgradeResourceProviderTest {
upgradeEntity.setToVersion("2.2.2.2");
upgradeEntity.setUpgradePackage("upgrade_test");
upgradeEntity.setUpgradeType(UpgradeType.ROLLING);
- upgradeEntity.setRequestId(2L);
+ upgradeEntity.setRequestEntity(requestEntity);
upgradeDao.create(upgradeEntity);
upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
@@ -1608,7 +1608,7 @@ public class UpgradeResourceProviderTest {
Request request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null);
upgradeResourceProvider.createResources(request);
- List<StageEntity> stages = stageDao.findByRequestId(cluster.getUpgradeEntity().getRequestId());
+ List<StageEntity> stages = stageDao.findByRequestId(cluster.getUpgradeInProgress().getRequestId());
Assert.assertEquals(3, stages.size());
long expectedStageId = 1L;
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
index 19dbb44..bee8983 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
@@ -202,10 +202,7 @@ public class UpgradeSummaryResourceProviderTest {
ServiceComponentHostEvent event = new ServiceComponentHostOpInProgressEvent("ZOOKEEPER_SERVER", "h1", 1L);
ServiceComponentHostEventWrapper eventWrapper = new ServiceComponentHostEventWrapper(event);
- RequestEntity requestEntity = new RequestEntity();
- requestEntity.setRequestId(upgradeRequestId);
- requestEntity.setClusterId(cluster.getClusterId());
- requestDAO.create(requestEntity);
+ RequestEntity requestEntity = requestDAO.findByPK(upgradeRequestId);
// Create the stage and add it to the request
StageEntity stageEntity = new StageEntity();
@@ -269,8 +266,15 @@ public class UpgradeSummaryResourceProviderTest {
Set<Resource> resources = upgradeSummaryResourceProvider.getResources(requestResource, p1And2);
assertEquals(0, resources.size());
+ RequestEntity requestEntity = new RequestEntity();
+ requestEntity.setRequestId(1L);
+ requestEntity.setClusterId(cluster.getClusterId());
+ requestEntity.setStatus(HostRoleStatus.PENDING);
+ requestEntity.setStages(new ArrayList<StageEntity>());
+ requestDAO.create(requestEntity);
+
UpgradeEntity upgrade = new UpgradeEntity();
- upgrade.setRequestId(upgradeRequestId);
+ upgrade.setRequestEntity(requestEntity);
upgrade.setClusterId(cluster.getClusterId());
upgrade.setId(1L);
upgrade.setUpgradePackage("some-name");
@@ -298,7 +302,7 @@ public class UpgradeSummaryResourceProviderTest {
Assert.assertNull(r.getPropertyValue(UpgradeSummaryResourceProvider.UPGRADE_SUMMARY_FAIL_REASON));
// Case 4: Append a failed task to the Upgrade. Resource should have a failed reason.
- RequestEntity requestEntity = requestDAO.findByPK(upgradeRequestId);
+ requestEntity = requestDAO.findByPK(upgradeRequestId);
HostEntity h1 = hostDAO.findByName("h1");
StageEntity nextStage = new StageEntity();
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
index bd9a340..7b8b68a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
@@ -248,7 +248,7 @@ public class StackVersionListenerTest extends EasyMockSupport {
public void testSetUpgradeStateToCompleteWhenHostHasVersionMismatchAndNewVersionIsEqualToComponentDesiredVersionAndClusterUpgradeIsInProgress() {
expect(sch.getVersion()).andReturn(VALID_PREVIOUS_VERSION);
expect(sch.getUpgradeState()).andReturn(UpgradeState.VERSION_MISMATCH);
- expect(cluster.getUpgradeEntity()).andReturn(DUMMY_UPGRADE_ENTITY);
+ expect(cluster.getUpgradeInProgress()).andReturn(DUMMY_UPGRADE_ENTITY);
expect(serviceComponent.getDesiredVersion()).andStubReturn(VALID_NEW_VERSION);
expect(serviceComponent.isVersionAdvertised()).andReturn(Boolean.TRUE);
sch.setUpgradeState(UpgradeState.COMPLETE);
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java
index 636108e..9e47e4d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java
@@ -33,7 +33,6 @@ import org.apache.ambari.server.actionmanager.HostRoleStatus;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
-import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
import org.apache.ambari.server.orm.entities.RequestEntity;
import org.apache.ambari.server.orm.entities.StageEntity;
import org.apache.ambari.server.orm.entities.UpgradeEntity;
@@ -51,8 +50,7 @@ import com.google.inject.Guice;
import com.google.inject.Injector;
/**
- * Tests {@link AlertDefinitionDAO} for interacting with
- * {@link AlertDefinitionEntity}.
+ * Tests {@link UpgradeDAO} for interacting with {@link UpgradeEntity}.
*/
public class UpgradeDAOTest {
@@ -78,10 +76,17 @@ public class UpgradeDAOTest {
helper = injector.getInstance(OrmTestHelper.class);
clusterId = helper.createCluster();
+ RequestEntity requestEntity = new RequestEntity();
+ requestEntity.setRequestId(99L);
+ requestEntity.setClusterId(clusterId.longValue());
+ requestEntity.setStatus(HostRoleStatus.PENDING);
+ requestEntity.setStages(new ArrayList<StageEntity>());
+ requestDAO.create(requestEntity);
+
// create upgrade entities
UpgradeEntity entity = new UpgradeEntity();
entity.setClusterId(clusterId.longValue());
- entity.setRequestId(Long.valueOf(1));
+ entity.setRequestEntity(requestEntity);
entity.setFromVersion("");
entity.setToVersion("");
entity.setUpgradeType(UpgradeType.ROLLING);
@@ -159,7 +164,7 @@ public class UpgradeDAOTest {
entity1.setId(11L);
entity1.setClusterId(clusterId.longValue());
entity1.setDirection(Direction.UPGRADE);
- entity1.setRequestId(1L);
+ entity1.setRequestEntity(requestEntity);
entity1.setFromVersion("2.2.0.0-1234");
entity1.setToVersion("2.3.0.0-4567");
entity1.setUpgradeType(UpgradeType.ROLLING);
@@ -170,7 +175,7 @@ public class UpgradeDAOTest {
entity2.setId(22L);
entity2.setClusterId(clusterId.longValue());
entity2.setDirection(Direction.DOWNGRADE);
- entity2.setRequestId(1L);
+ entity2.setRequestEntity(requestEntity);
entity2.setFromVersion("2.3.0.0-4567");
entity2.setToVersion("2.2.0.0-1234");
entity2.setUpgradeType(UpgradeType.ROLLING);
@@ -181,7 +186,7 @@ public class UpgradeDAOTest {
entity3.setId(33L);
entity3.setClusterId(clusterId.longValue());
entity3.setDirection(Direction.UPGRADE);
- entity3.setRequestId(1L);
+ entity3.setRequestEntity(requestEntity);
entity3.setFromVersion("2.2.0.0-1234");
entity3.setToVersion("2.3.1.1-4567");
entity3.setUpgradeType(UpgradeType.ROLLING);
@@ -211,7 +216,7 @@ public class UpgradeDAOTest {
upgradeEntity.setId(11L);
upgradeEntity.setClusterId(clusterId.longValue());
upgradeEntity.setDirection(Direction.UPGRADE);
- upgradeEntity.setRequestId(1L);
+ upgradeEntity.setRequestEntity(requestEntity);
upgradeEntity.setFromVersion("2.2.0.0-1234");
upgradeEntity.setToVersion("2.3.0.0-4567");
upgradeEntity.setUpgradeType(UpgradeType.ROLLING);
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
index a17c40d..c6ee875 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
@@ -980,7 +980,7 @@ public class UpgradeActionTest {
UpgradeEntity upgradeEntity = new UpgradeEntity();
upgradeEntity.setId(1L);
upgradeEntity.setClusterId(cluster.getClusterId());
- upgradeEntity.setRequestId(requestEntity.getRequestId());
+ upgradeEntity.setRequestEntity(requestEntity);
upgradeEntity.setUpgradePackage("");
upgradeEntity.setFromVersion(sourceRepo);
upgradeEntity.setToVersion(targetRepo);
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
index 5383113..8e8bed3 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
@@ -23,12 +23,14 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.sql.SQLException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.H2DatabaseCleaner;
+import org.apache.ambari.server.actionmanager.HostRoleStatus;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.ServiceComponentResponse;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -38,15 +40,18 @@ import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
+import org.apache.ambari.server.orm.dao.RequestDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.UpgradeDAO;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.RequestEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentHistoryEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentVersionEntity;
+import org.apache.ambari.server.orm.entities.StageEntity;
import org.apache.ambari.server.orm.entities.UpgradeEntity;
import org.apache.ambari.server.state.stack.upgrade.Direction;
import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
@@ -643,6 +648,14 @@ public class ServiceComponentTest {
* @return
*/
private UpgradeEntity createUpgradeEntity(String fromVersion, String toVersion) {
+ RequestDAO requestDAO = injector.getInstance(RequestDAO.class);
+ RequestEntity requestEntity = new RequestEntity();
+ requestEntity.setRequestId(99L);
+ requestEntity.setClusterId(cluster.getClusterId());
+ requestEntity.setStatus(HostRoleStatus.PENDING);
+ requestEntity.setStages(new ArrayList<StageEntity>());
+ requestDAO.create(requestEntity);
+
UpgradeDAO upgradeDao = injector.getInstance(UpgradeDAO.class);
UpgradeEntity upgradeEntity = new UpgradeEntity();
upgradeEntity.setClusterId(cluster.getClusterId());
@@ -651,7 +664,7 @@ public class ServiceComponentTest {
upgradeEntity.setToVersion(toVersion);
upgradeEntity.setUpgradePackage("upgrade_test");
upgradeEntity.setUpgradeType(UpgradeType.ROLLING);
- upgradeEntity.setRequestId(1L);
+ upgradeEntity.setRequestEntity(requestEntity);
upgradeDao.create(upgradeEntity);
List<UpgradeEntity> upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertStateChangedEventTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertStateChangedEventTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertStateChangedEventTest.java
index 222f2b0..d4dbdc8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertStateChangedEventTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertStateChangedEventTest.java
@@ -540,7 +540,7 @@ public class AlertStateChangedEventTest extends EasyMockSupport {
Cluster cluster = createMock(Cluster.class);
EasyMock.expect(clusters.getClusterById(EasyMock.anyLong())).andReturn(cluster).atLeastOnce();
- EasyMock.expect(cluster.getUpgradeEntity()).andReturn(null).anyTimes();
+ EasyMock.expect(cluster.getUpgradeInProgress()).andReturn(null).anyTimes();
EasyMock.expect(cluster.isUpgradeSuspended()).andReturn(false).anyTimes();
}
@@ -556,7 +556,7 @@ public class AlertStateChangedEventTest extends EasyMockSupport {
EasyMock.reset(clusters);
EasyMock.expect(clusters.getClusterById(EasyMock.anyLong())).andReturn(cluster).atLeastOnce();
- EasyMock.expect(cluster.getUpgradeEntity()).andReturn(new UpgradeEntity()).anyTimes();
+ EasyMock.expect(cluster.getUpgradeInProgress()).andReturn(new UpgradeEntity()).anyTimes();
EasyMock.expect(cluster.isUpgradeSuspended()).andReturn(false).anyTimes();
}
@@ -572,7 +572,7 @@ public class AlertStateChangedEventTest extends EasyMockSupport {
EasyMock.reset(clusters);
EasyMock.expect(clusters.getClusterById(EasyMock.anyLong())).andReturn(cluster).atLeastOnce();
- EasyMock.expect(cluster.getUpgradeEntity()).andReturn(null).anyTimes();
+ EasyMock.expect(cluster.getUpgradeInProgress()).andReturn(null).anyTimes();
EasyMock.expect(cluster.isUpgradeSuspended()).andReturn(true).anyTimes();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/64447e52/ambari-server/src/test/java/org/apache/ambari/server/state/services/RetryUpgradeActionServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/services/RetryUpgradeActionServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/services/RetryUpgradeActionServiceTest.java
index 2c0b507..f52f007 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/services/RetryUpgradeActionServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/services/RetryUpgradeActionServiceTest.java
@@ -285,7 +285,7 @@ public class RetryUpgradeActionServiceTest {
UpgradeEntity upgrade = new UpgradeEntity();
upgrade.setId(1L);
- upgrade.setRequestId(upgradeRequestId);
+ upgrade.setRequestEntity(requestEntity);
upgrade.setClusterId(cluster.getClusterId());
upgrade.setUpgradePackage("some-name");
upgrade.setUpgradeType(UpgradeType.ROLLING);