AMBARI-10168. Full Delete of Host : Switch host-related tables to use host_id instead of host_name column for hoststate, hostcomponentstate, hostcomponentdesiredstate (alejandro)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1487ad37 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1487ad37 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1487ad37 Branch: refs/heads/trunk Commit: 1487ad371827d80197d185428ef1a380baf10e6f Parents: 97347b7 Author: Alejandro Fernandez <[email protected]> Authored: Wed Mar 25 14:44:07 2015 -0700 Committer: Alejandro Fernandez <[email protected]> Committed: Thu Apr 2 10:36:52 2015 -0700 ---------------------------------------------------------------------- .../orm/dao/HostComponentDesiredStateDAO.java | 2 +- .../apache/ambari/server/orm/dao/HostDAO.java | 6 +- .../HostComponentDesiredStateEntity.java | 18 +- .../HostComponentDesiredStateEntityPK.java | 16 +- .../orm/entities/HostComponentStateEntity.java | 18 +- .../entities/HostComponentStateEntityPK.java | 16 +- .../ambari/server/orm/entities/HostEntity.java | 20 +- .../server/orm/entities/HostStateEntity.java | 18 +- .../server/state/ServiceComponentImpl.java | 2 +- .../svccomphost/ServiceComponentHostImpl.java | 32 ++- .../server/upgrade/AbstractUpgradeCatalog.java | 5 + .../server/upgrade/SchemaUpgradeHelper.java | 34 ++- .../ambari/server/upgrade/UpgradeCatalog.java | 6 + .../server/upgrade/UpgradeCatalog150.java | 32 ++- .../server/upgrade/UpgradeCatalog151.java | 17 +- .../server/upgrade/UpgradeCatalog160.java | 18 +- .../server/upgrade/UpgradeCatalog161.java | 19 +- .../server/upgrade/UpgradeCatalog170.java | 18 +- .../server/upgrade/UpgradeCatalog200.java | 8 + .../server/upgrade/UpgradeCatalog210.java | 156 +++++++---- .../main/resources/Ambari-DDL-MySQL-CREATE.sql | 43 ++-- .../main/resources/Ambari-DDL-Oracle-CREATE.sql | 43 ++-- .../resources/Ambari-DDL-Postgres-CREATE.sql | 45 ++-- .../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql | 41 ++- .../resources/Ambari-DDL-SQLServer-CREATE.sql | 48 ++-- .../dao/HostComponentDesiredStateDAOTest.java | 9 +- .../server/state/ServiceComponentTest.java | 12 +- .../server/state/cluster/ClustersTest.java | 11 +- .../svccomphost/ServiceComponentHostTest.java | 16 +- .../ambari/server/upgrade/SectionDDL.java | 44 ++++ .../server/upgrade/UpgradeCatalog150Test.java | 1 - .../server/upgrade/UpgradeCatalog170Test.java | 14 +- .../server/upgrade/UpgradeCatalog200Test.java | 16 +- .../server/upgrade/UpgradeCatalog210Test.java | 257 ++++++++++++++----- .../server/upgrade/UpgradeCatalogHelper.java | 2 - .../server/upgrade/UpgradeCatalogTest.java | 53 +++- 36 files changed, 741 insertions(+), 375 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java index 8e92877..2d699b7 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java @@ -73,7 +73,7 @@ public class HostComponentDesiredStateDAO { @Transactional public void remove(HostComponentDesiredStateEntity hostComponentDesiredStateEntity) { - HostEntity hostEntity = hostDAO.findByName(hostComponentDesiredStateEntity.getHostName()); + HostEntity hostEntity = hostComponentDesiredStateEntity.getHostEntity(); entityManagerProvider.get().remove(merge(hostComponentDesiredStateEntity)); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java index 0fb9c59..6442bf5 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostDAO.java @@ -40,12 +40,12 @@ public class HostDAO { /** * Looks for Host by ID - * @param id ID of Host + * @param hostId ID of Host * @return Found entity or NULL */ @RequiresSession - public HostEntity findById(long id) { - return entityManagerProvider.get().find(HostEntity.class, id); + public HostEntity findById(long hostId) { + return entityManagerProvider.get().find(HostEntity.class, hostId); } @RequiresSession http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java index e0f1e9e..7f0b19d 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java @@ -49,8 +49,8 @@ public class HostComponentDesiredStateEntity { private String serviceName; @Id - @Column(name = "host_name", insertable = false, updatable = false) - private String hostName = ""; + @Column(name = "host_id", nullable = false, insertable = false, updatable = false) + private Long hostId; @Id @Column(name = "component_name", insertable = false, updatable = false) @@ -82,7 +82,7 @@ public class HostComponentDesiredStateEntity { private ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity; @ManyToOne - @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false) + @JoinColumn(name = "host_id", referencedColumnName = "host_id", nullable = false) private HostEntity hostEntity; @Enumerated(value = EnumType.STRING) @@ -109,12 +109,8 @@ public class HostComponentDesiredStateEntity { this.serviceName = serviceName; } - public String getHostName() { - return defaultString(hostName); - } - - public void setHostName(String hostName) { - this.hostName = hostName; + public Long getHostId() { + return hostEntity != null ? hostEntity.getHostId() : null; } public String getComponentName() { @@ -178,7 +174,7 @@ public class HostComponentDesiredStateEntity { if (desiredStackVersion != null ? !desiredStackVersion.equals(that.desiredStackVersion) : that.desiredStackVersion != null) return false; if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) return false; - if (hostName != null ? !hostName.equals(that.hostName) : that.hostName != null) return false; + if (hostEntity != null ? !hostEntity.equals(that.hostEntity) : that.hostEntity != null) return false; if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) return false; return true; @@ -187,7 +183,7 @@ public class HostComponentDesiredStateEntity { @Override public int hashCode() { int result = clusterId != null ? clusterId.intValue() : 0; - result = 31 * result + (hostName != null ? hostName.hashCode() : 0); + result = 31 * result + (hostEntity != null ? hostEntity.hashCode() : 0); result = 31 * result + (componentName != null ? componentName.hashCode() : 0); result = 31 * result + (desiredState != null ? desiredState.hashCode() : 0); result = 31 * result + (desiredStackVersion != null ? desiredStackVersion.hashCode() : 0); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java index fc92858..1fd899d 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java @@ -47,16 +47,16 @@ public class HostComponentDesiredStateEntityPK implements Serializable { this.serviceName = serviceName; } - private String hostName; + private Long hostId; @Id - @Column(name = "host_name", nullable = false, insertable = true, updatable = true) - public String getHostName() { - return hostName; + @Column(name = "host_id", nullable = false, insertable = true, updatable = true) + public Long getHostId() { + return hostId; } - public void setHostName(String hostName) { - this.hostName = hostName; + public void setHostId(Long hostId) { + this.hostId = hostId; } private String componentName; @@ -80,7 +80,7 @@ public class HostComponentDesiredStateEntityPK implements Serializable { if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false; if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) return false; - if (hostName != null ? !hostName.equals(that.hostName) : that.hostName != null) return false; + if (hostId != null ? !hostId.equals(that.hostId) : that.hostId != null) return false; return true; } @@ -88,7 +88,7 @@ public class HostComponentDesiredStateEntityPK implements Serializable { @Override public int hashCode() { int result = clusterId !=null ? clusterId.intValue() : 0; - result = 31 * result + (hostName != null ? hostName.hashCode() : 0); + result = 31 * result + (hostId != null ? hostId.hashCode() : 0); result = 31 * result + (componentName != null ? componentName.hashCode() : 0); return result; } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java index 0a31b90..4463366 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntity.java @@ -32,7 +32,7 @@ import static org.apache.commons.lang.StringUtils.defaultString; @NamedQueries({ @NamedQuery(name = "HostComponentStateEntity.findAll", query = "SELECT hcs from HostComponentStateEntity hcs"), @NamedQuery(name = "HostComponentStateEntity.findByHost", query = - "SELECT hcs from HostComponentStateEntity hcs WHERE hcs.hostName=:hostName"), + "SELECT hcs from HostComponentStateEntity hcs WHERE hcs.hostEntity.hostName=:hostName"), }) public class HostComponentStateEntity { @@ -45,8 +45,8 @@ public class HostComponentStateEntity { private String serviceName; @Id - @Column(name = "host_name", insertable = false, updatable = false) - private String hostName = ""; + @Column(name = "host_id", nullable=false, insertable = false, updatable = false) + private Long hostId; @Id @Column(name = "component_name", nullable = false, insertable = false, updatable = false) @@ -79,7 +79,7 @@ public class HostComponentStateEntity { private ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity; @ManyToOne - @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false) + @JoinColumn(name = "host_id", referencedColumnName = "host_id", nullable = false) private HostEntity hostEntity; public Long getClusterId() { @@ -99,11 +99,11 @@ public class HostComponentStateEntity { } public String getHostName() { - return defaultString(hostName); + return this.hostEntity.getHostName(); } - public void setHostName(String hostName) { - this.hostName = hostName; + public Long getHostId() { + return hostEntity != null ? hostEntity.getHostId() : null; } public String getComponentName() { @@ -167,7 +167,7 @@ public class HostComponentStateEntity { return false; if (currentState != null ? !currentState.equals(that.currentState) : that.currentState != null) return false; if (upgradeState != null ? !upgradeState.equals(that.upgradeState) : that.upgradeState != null) return false; - if (hostName != null ? !hostName.equals(that.hostName) : that.hostName != null) return false; + if (hostEntity != null ? !hostEntity.equals(that.hostEntity) : that.hostEntity != null) return false; if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) return false; if (version != null ? !version.equals(that.version) : that.version != null) return false; @@ -177,7 +177,7 @@ public class HostComponentStateEntity { @Override public int hashCode() { int result = clusterId != null ? clusterId.intValue() : 0; - result = 31 * result + (hostName != null ? hostName.hashCode() : 0); + result = 31 * result + (hostEntity != null ? hostEntity.hashCode() : 0); result = 31 * result + (componentName != null ? componentName.hashCode() : 0); result = 31 * result + (currentState != null ? currentState.hashCode() : 0); result = 31 * result + (upgradeState != null ? upgradeState.hashCode() : 0); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntityPK.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntityPK.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntityPK.java index bc103a1..86e0dee 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntityPK.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentStateEntityPK.java @@ -48,16 +48,16 @@ public class HostComponentStateEntityPK implements Serializable { this.serviceName = serviceName; } - private String hostName; + private Long hostId; @Id - @Column(name = "host_name", nullable = false, insertable = true, updatable = true) - public String getHostName() { - return hostName; + @Column(name = "host_id", nullable = false, insertable = true, updatable = true) + public Long getHostId() { + return hostId; } - public void setHostName(String hostName) { - this.hostName = hostName; + public void setHostId(Long hostId) { + this.hostId = hostId; } private String componentName; @@ -81,7 +81,7 @@ public class HostComponentStateEntityPK implements Serializable { if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false; if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) return false; - if (hostName != null ? !hostName.equals(that.hostName) : that.hostName != null) return false; + if (hostId != null ? !hostId.equals(that.hostId) : that.hostId != null) return false; return true; } @@ -89,7 +89,7 @@ public class HostComponentStateEntityPK implements Serializable { @Override public int hashCode() { int result = clusterId !=null ? clusterId.intValue() : 0; - result = 31 * result + (hostName != null ? hostName.hashCode() : 0); + result = 31 * result + (hostId != null ? hostId.hashCode() : 0); result = 31 * result + (componentName != null ? componentName.hashCode() : 0); return result; } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java index 4df5f39..a811c16 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostEntity.java @@ -54,9 +54,9 @@ import static org.apache.commons.lang.StringUtils.defaultString; public class HostEntity implements Comparable<HostEntity> { @Id - @Column(name = "id", nullable = false, insertable = true, updatable = false) + @Column(name = "host_id", nullable = false, insertable = true, updatable = false) @GeneratedValue(strategy = GenerationType.TABLE, generator = "host_id_generator") - private Long id; + private Long hostId; @Column(name = "host_name", nullable = false, insertable = true, updatable = true, unique = true) @Basic @@ -133,7 +133,7 @@ public class HostEntity implements Comparable<HostEntity> { @ManyToMany @JoinTable(name = "ClusterHostMapping", - joinColumns = {@JoinColumn(name = "host_id", referencedColumnName = "id")}, + joinColumns = {@JoinColumn(name = "host_id", referencedColumnName = "host_id")}, inverseJoinColumns = {@JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id")} ) private Collection<ClusterEntity> clusterEntities; @@ -144,12 +144,12 @@ public class HostEntity implements Comparable<HostEntity> { @OneToMany(mappedBy = "host", cascade = CascadeType.REMOVE) private Collection<HostRoleCommandEntity> hostRoleCommandEntities; - public Long getId() { - return id; + public Long getHostId() { + return hostId; } - public void setId(Long id) { - this.id = id; + public void setHostId(Long hostId) { + this.hostId = hostId; } public String getHostName() { @@ -279,14 +279,12 @@ public class HostEntity implements Comparable<HostEntity> { HostEntity that = (HostEntity) o; - if (!hostName.equals(that.hostName)) return false; - - return true; + return this.hostId == that.hostId && this.hostName.equals(that.hostName); } @Override public int hashCode() { - return hostName.hashCode(); + return hostId.hashCode(); } @Override http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostStateEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostStateEntity.java index 5d5a1e8..52ae322 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostStateEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostStateEntity.java @@ -35,9 +35,9 @@ import org.apache.ambari.server.state.HostState; @Entity public class HostStateEntity { - @javax.persistence.Column(name = "host_name", nullable = false, insertable = false, updatable = false) + @javax.persistence.Column(name = "host_id", nullable = false, insertable = false, updatable = false) @Id - private String hostName; + private Long hostId; @Column(name = "available_mem", nullable = false, insertable = true, updatable = true) @Basic @@ -64,17 +64,9 @@ public class HostStateEntity { @OneToOne - @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false) + @JoinColumn(name = "host_id", referencedColumnName = "host_id", nullable = false) private HostEntity hostEntity; - public String getHostName() { - return hostName; - } - - public void setHostName(String hostName) { - this.hostName = hostName; - } - public Long getAvailableMem() { return availableMem; } @@ -130,18 +122,18 @@ public class HostStateEntity { HostStateEntity that = (HostStateEntity) o; + if (hostId != null ? hostId != that.hostId : that.hostId != null) return false; if (availableMem != null ? !availableMem.equals(that.availableMem) : that.availableMem != null) return false; if (timeInState != null ? !timeInState.equals(that.timeInState) : that.timeInState!= null) return false; if (agentVersion != null ? !agentVersion.equals(that.agentVersion) : that.agentVersion != null) return false; if (currentState != null ? !currentState.equals(that.currentState) : that.currentState != null) return false; - if (hostName != null ? !hostName.equals(that.hostName) : that.hostName != null) return false; return true; } @Override public int hashCode() { - int result = hostName != null ? hostName.hashCode() : 0; + int result = hostId != null ? hostId.intValue() : 0; result = 31 * result + (availableMem != null ? availableMem.intValue() : 0); result = 31 * result + (timeInState != null ? timeInState.intValue() : 0); result = 31 * result + (agentVersion != null ? agentVersion.hashCode() : 0); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java index 1bd2814..23246b4 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java @@ -120,7 +120,7 @@ public class ServiceComponentImpl implements ServiceComponent { pk.setClusterId(hostComponentStateEntity.getClusterId()); pk.setServiceName(hostComponentStateEntity.getServiceName()); pk.setComponentName(hostComponentStateEntity.getComponentName()); - pk.setHostName(hostComponentStateEntity.getHostName()); + pk.setHostId(hostComponentStateEntity.getHostId()); HostComponentDesiredStateEntity hostComponentDesiredStateEntity = hostComponentDesiredStateDAO.findByPK(pk); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java index 7975f4e..370cd48 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java @@ -690,12 +690,24 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { this.serviceComponent = serviceComponent; clusterGlobalLock = serviceComponent.getClusterGlobalLock(); + HostEntity hostEntity = null; + try { + host = clusters.getHost(hostName); + hostEntity = hostDAO.findByName(hostName); + if (hostEntity == null) { + throw new AmbariException("Could not find host " + hostName); + } + } catch (AmbariException e) { + LOG.error("Host '{}' was not found" + hostName); + throw new RuntimeException(e); + } + stateEntity = new HostComponentStateEntity(); stateEntity.setClusterId(serviceComponent.getClusterId()); stateEntity.setComponentName(serviceComponent.getName()); stateEntity.setServiceName(serviceComponent.getServiceName()); stateEntity.setVersion(State.UNKNOWN.toString()); - stateEntity.setHostName(hostName); + stateEntity.setHostEntity(hostEntity); stateEntity.setCurrentState(stateMachine.getCurrentState()); stateEntity.setUpgradeState(UpgradeState.NONE); stateEntity.setCurrentStackVersion(gson.toJson(new StackId())); @@ -706,7 +718,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { desiredStateEntity.setClusterId(serviceComponent.getClusterId()); desiredStateEntity.setComponentName(serviceComponent.getName()); desiredStateEntity.setServiceName(serviceComponent.getServiceName()); - desiredStateEntity.setHostName(hostName); + desiredStateEntity.setHostEntity(hostEntity); desiredStateEntity.setDesiredState(State.INIT); desiredStateEntity.setDesiredStackVersion( gson.toJson(serviceComponent.getDesiredStackVersion())); @@ -718,14 +730,6 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { desiredStateEntityPK = getHostComponentDesiredStateEntityPK(desiredStateEntity); - try { - host = clusters.getHost(hostName); - } catch (AmbariException e) { - //TODO exception? - LOG.error("Host '{}' was not found" + hostName); - throw new RuntimeException(e); - } - resetLastOpInfo(); } @@ -1321,7 +1325,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { pk.setClusterId(stateEntity.getClusterId()); pk.setComponentName(stateEntity.getComponentName()); pk.setServiceName(stateEntity.getServiceName()); - pk.setHostName(stateEntity.getHostName()); + pk.setHostId(stateEntity.getHostId()); hostComponentStateDAO.removeByPK(pk); @@ -1329,7 +1333,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { desiredPK.setClusterId(desiredStateEntity.getClusterId()); desiredPK.setComponentName(desiredStateEntity.getComponentName()); desiredPK.setServiceName(desiredStateEntity.getServiceName()); - desiredPK.setHostName(desiredStateEntity.getHostName()); + desiredPK.setHostId(desiredStateEntity.getHostId()); hostComponentDesiredStateDAO.removeByPK(desiredPK); @@ -1542,7 +1546,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { dpk.setClusterId(desiredStateEntity.getClusterId()); dpk.setComponentName(desiredStateEntity.getComponentName()); dpk.setServiceName(desiredStateEntity.getServiceName()); - dpk.setHostName(desiredStateEntity.getHostName()); + dpk.setHostId(desiredStateEntity.getHostId()); return dpk; } @@ -1552,7 +1556,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { pk.setClusterId(stateEntity.getClusterId()); pk.setComponentName(stateEntity.getComponentName()); pk.setServiceName(stateEntity.getServiceName()); - pk.setHostName(stateEntity.getHostName()); + pk.setHostId(stateEntity.getHostId()); return pk; } } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java index 1f3c09a..863b5da 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java @@ -91,6 +91,11 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog { return null; } + @Override + public String[] getCompatibleVersions() { + return null; + } + protected static UpgradeCatalog getUpgradeCatalog(String version) { return upgradeCatalogMap.get(version); } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java index 3691af2..61482c9 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java @@ -26,6 +26,8 @@ import java.util.Collections; import java.util.List; import java.util.Properties; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.configuration.Configuration; @@ -126,7 +128,6 @@ public class SchemaUpgradeHelper { */ protected List<UpgradeCatalog> getUpgradePath(String sourceVersion, String targetVersion) throws AmbariException { - List<UpgradeCatalog> upgradeCatalogs = new ArrayList<UpgradeCatalog>(); List<UpgradeCatalog> candidateCatalogs = new ArrayList<UpgradeCatalog>(allUpgradeCatalogs); @@ -150,6 +151,33 @@ public class SchemaUpgradeHelper { } /** + * Determine if the class definitions in the target version allow running the Upgrade Catalogs in the path. + * @param upgradeCatalogs Ordered list of upgrade catalogs + * @param targetVersion Destination version + * @throws AmbariException If invalid path, will throw an exception. + */ + public void validateUpgradePath(List<UpgradeCatalog> upgradeCatalogs, String targetVersion) throws AmbariException { + for(UpgradeCatalog upgradeCatalog : upgradeCatalogs) { + if (upgradeCatalog.getCompatibleVersions() != null) { + boolean validPath = false; + for (String version : upgradeCatalog.getCompatibleVersions()) { + // Treat dots as dots instead of match-any-char, and * as wildcard + String regexVersion = version.replace(".", "\\.").replace("*", ".*"); + Matcher m = Pattern.compile(regexVersion).matcher(targetVersion); + if (m.matches()) { + validPath = true; + break; + } + } + if (!validPath) { + throw new AmbariException("Cannot upgrade because UpgradeCatalog " + + upgradeCatalog.getTargetVersion() + " is not supported in Ambari version " + targetVersion + "."); + } + } + } + } + + /** * Extension of main controller module */ public static class UpgradeHelperModule extends ControllerModule { @@ -243,6 +271,8 @@ public class SchemaUpgradeHelper { List<UpgradeCatalog> upgradeCatalogs = schemaUpgradeHelper.getUpgradePath(sourceVersion, targetVersion); + schemaUpgradeHelper.validateUpgradePath(upgradeCatalogs, targetVersion); + schemaUpgradeHelper.executeUpgrade(upgradeCatalogs); schemaUpgradeHelper.startPersistenceService(); @@ -256,7 +286,7 @@ public class SchemaUpgradeHelper { schemaUpgradeHelper.stopPersistenceService(); } catch (Throwable e) { if (e instanceof AmbariException) { - LOG.error("Exception occured during upgrade, failed", e); + LOG.error("Exception occurred during upgrade, failed", e); throw (AmbariException)e; }else{ LOG.error("Unexpected error, upgrade failed", e); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog.java index fcf4f51..a10b21c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog.java @@ -52,4 +52,10 @@ public interface UpgradeCatalog { * @return null : default */ public String getSourceVersion(); + + /** + * Returns a list of versions using simplified regex of the Ambari versions that allow running this UpgradeCatalog. + * @return null : default + */ + public String[] getCompatibleVersions(); } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java index dd8e33e..d80909b 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog150.java @@ -88,6 +88,19 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog { } @Override + public String getTargetVersion() { + return "1.5.0"; + } + + /** + * {@inheritDoc} + */ + @Override + public String[] getCompatibleVersions() { + return new String[] {"1.5.*", "1.6.*", "1.7.*", "2.0.*"}; + } + + @Override public void executeDDLUpdates() throws AmbariException, SQLException { LOG.debug("Upgrading schema..."); DatabaseType databaseType = configuration.getDatabaseType(); @@ -577,6 +590,7 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog { ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class); ClusterServiceDAO clusterServiceDAO = injector.getInstance(ClusterServiceDAO.class); ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO = injector.getInstance(ServiceComponentDesiredStateDAO.class); + HostDAO hostDao = injector.getInstance(HostDAO.class); List<ClusterEntity> clusterEntities = clusterDAO.findAll(); for (final ClusterEntity clusterEntity : clusterEntities) { @@ -626,8 +640,13 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog { serviceComponentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity); serviceComponentDesiredStateEntity.setHostComponentDesiredStateEntities(new ArrayList<HostComponentDesiredStateEntity>()); + final HostEntity host = hostDao.findByName(jtHostname); + if (host == null) { + continue; + } + final HostComponentStateEntity stateEntity = new HostComponentStateEntity(); - stateEntity.setHostName(jtHostname); + stateEntity.setHostEntity(host); stateEntity.setCurrentState(jtCurrState); stateEntity.setCurrentStackVersion(clusterEntity.getDesiredStackVersion()); @@ -645,7 +664,7 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog { HostComponentDesiredStateDAO hostComponentDesiredStateDAO = injector.getInstance(HostComponentDesiredStateDAO.class); HostDAO hostDAO = injector.getInstance(HostDAO.class); - HostEntity hostEntity = hostDAO.findByName(stateEntity.getHostName()); + HostEntity hostEntity = stateEntity.getHostEntity(); hostEntity.addHostComponentStateEntity(stateEntity); hostEntity.addHostComponentDesiredStateEntity(desiredStateEntity); @@ -754,6 +773,7 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog { protected void processDecommissionedDatanodes() { KeyValueDAO keyValueDAO = injector.getInstance(KeyValueDAO.class); ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class); + HostDAO hostDAO = injector.getInstance(HostDAO.class); Gson gson = injector.getInstance(Gson.class); HostComponentDesiredStateDAO desiredStateDAO = injector.getInstance (HostComponentDesiredStateDAO.class); @@ -777,12 +797,13 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog { String[] nodes = decommissionedNodes.split(","); if (nodes.length > 0) { for (String node : nodes) { + HostEntity hostEntity = hostDAO.findByName(node.trim()); HostComponentDesiredStateEntityPK entityPK = new HostComponentDesiredStateEntityPK(); entityPK.setClusterId(clusterId); entityPK.setServiceName("HDFS"); entityPK.setComponentName("DATANODE"); - entityPK.setHostName(node.trim()); + entityPK.setHostId(hostEntity.getHostId()); HostComponentDesiredStateEntity desiredStateEntity = desiredStateDAO.findByPK(entityPK); desiredStateEntity.setAdminState(HostComponentAdminState.DECOMMISSIONED); @@ -875,9 +896,4 @@ public class UpgradeCatalog150 extends AbstractUpgradeCatalog { } } - - @Override - public String getTargetVersion() { - return "1.5.0"; - } } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog151.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog151.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog151.java index afe27b5..cd3945a 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog151.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog151.java @@ -39,6 +39,18 @@ public class UpgradeCatalog151 extends AbstractUpgradeCatalog { return "1.5.0"; } + @Override + public String getTargetVersion() { + return "1.5.1"; + } + + /** + * {@inheritDoc} + */ + @Override + public String[] getCompatibleVersions() { + return new String[] {"1.5.*", "1.6.*", "1.7.*", "2.0.*"}; + } // ----- Constructors ------------------------------------------------------ @@ -138,9 +150,4 @@ public class UpgradeCatalog151 extends AbstractUpgradeCatalog { @Override public void executeDMLUpdates() throws AmbariException, SQLException { } - - @Override - public String getTargetVersion() { - return "1.5.1"; - } } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog160.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog160.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog160.java index a1f11d8..ac32081 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog160.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog160.java @@ -41,6 +41,19 @@ public class UpgradeCatalog160 extends AbstractUpgradeCatalog { return "1.5.1"; } + @Override + public String getTargetVersion() { + return "1.6.0"; + } + + /** + * {@inheritDoc} + */ + @Override + public String[] getCompatibleVersions() { + return new String[] {"1.6.*", "1.7.*", "2.0.*"}; + } + // ----- Constructors ------------------------------------------------------ @Inject @@ -190,9 +203,4 @@ public class UpgradeCatalog160 extends AbstractUpgradeCatalog { // Add missing property for YARN updateConfigurationProperties("global", Collections.singletonMap("jobhistory_heapsize", "900"), false, false); } - - @Override - public String getTargetVersion() { - return "1.6.0"; - } } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java index 4ab0cb6..ac8bb52 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java @@ -51,6 +51,20 @@ public class UpgradeCatalog161 extends AbstractUpgradeCatalog { return "1.6.0"; } + + @Override + public String getTargetVersion() { + return "1.6.1"; + } + + /** + * {@inheritDoc} + */ + @Override + public String[] getCompatibleVersions() { + return new String[] {"1.6.*", "1.7.*", "2.0.*"}; + } + /** * Logger. */ @@ -316,9 +330,4 @@ public class UpgradeCatalog161 extends AbstractUpgradeCatalog { "threshold=100\npig.optimistic.files.concatenation=false;\n\npig.disable.counter=false\n\n" + "hcat.bin=/usr/bin/hcat"), true, false); } - - @Override - public String getTargetVersion() { - return "1.6.1"; - } } http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java index 98ac89f..db0506b 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java @@ -51,6 +51,7 @@ import org.apache.ambari.server.orm.dao.ClusterDAO; import org.apache.ambari.server.orm.dao.ClusterServiceDAO; import org.apache.ambari.server.orm.dao.ConfigGroupConfigMappingDAO; import org.apache.ambari.server.orm.dao.DaoUtils; +import org.apache.ambari.server.orm.dao.HostDAO; import org.apache.ambari.server.orm.dao.HostRoleCommandDAO; import org.apache.ambari.server.orm.dao.KeyValueDAO; import org.apache.ambari.server.orm.dao.PermissionDAO; @@ -72,6 +73,7 @@ import org.apache.ambari.server.orm.entities.ClusterServiceEntityPK; import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity; 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.HostRoleCommandEntity; import org.apache.ambari.server.orm.entities.HostRoleCommandEntity_; import org.apache.ambari.server.orm.entities.KeyValueEntity; @@ -145,6 +147,14 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog { } /** + * {@inheritDoc} + */ + @Override + public String[] getCompatibleVersions() { + return new String[] {"1.7.*", "2.0.*"}; + } + + /** * Logger. */ private static final Logger LOG = LoggerFactory.getLogger @@ -714,6 +724,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog { ClusterServiceDAO clusterServiceDAO = injector.getInstance(ClusterServiceDAO.class); ServiceDesiredStateDAO serviceDesiredStateDAO = injector.getInstance(ServiceDesiredStateDAO.class); ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO = injector.getInstance(ServiceComponentDesiredStateDAO.class); + HostDAO hostDAO = injector.getInstance(HostDAO.class); List<ClusterEntity> clusterEntities = clusterDAO.findAll(); for (final ClusterEntity clusterEntity : clusterEntities) { @@ -762,7 +773,6 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog { hostComponentDesiredStateEntity.setComponentName(hcDesiredStateEntityToBeDeleted.getComponentName()); hostComponentDesiredStateEntity.setDesiredStackVersion(hcDesiredStateEntityToBeDeleted.getDesiredStackVersion()); hostComponentDesiredStateEntity.setDesiredState(hcDesiredStateEntityToBeDeleted.getDesiredState()); - hostComponentDesiredStateEntity.setHostName(hcDesiredStateEntityToBeDeleted.getHostName()); hostComponentDesiredStateEntity.setHostEntity(hcDesiredStateEntityToBeDeleted.getHostEntity()); hostComponentDesiredStateEntity.setAdminState(hcDesiredStateEntityToBeDeleted.getAdminState()); hostComponentDesiredStateEntity.setMaintenanceState(hcDesiredStateEntityToBeDeleted.getMaintenanceState()); @@ -775,12 +785,16 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog { while (hostComponentStateIterator.hasNext()) { HostComponentStateEntity hcStateToBeDeleted = hostComponentStateIterator.next(); + HostEntity hostToBeDeleted = hostDAO.findByName(hcStateToBeDeleted.getHostName()); + if (hostToBeDeleted == null) { + continue; + } + HostComponentStateEntity hostComponentStateEntity = new HostComponentStateEntity(); hostComponentStateEntity.setClusterId(clusterEntity.getClusterId()); hostComponentStateEntity.setComponentName(hcStateToBeDeleted.getComponentName()); hostComponentStateEntity.setCurrentStackVersion(hcStateToBeDeleted.getCurrentStackVersion()); hostComponentStateEntity.setCurrentState(hcStateToBeDeleted.getCurrentState()); - hostComponentStateEntity.setHostName(hcStateToBeDeleted.getHostName()); hostComponentStateEntity.setHostEntity(hcStateToBeDeleted.getHostEntity()); hostComponentStateEntity.setServiceName(serviceName); hostComponentStateEntity.setServiceComponentDesiredStateEntity(serviceComponentDesiredStateEntity); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java index d3b062a..e577aa4 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java @@ -96,6 +96,14 @@ public class UpgradeCatalog200 extends AbstractUpgradeCatalog { } /** + * {@inheritDoc} + */ + @Override + public String[] getCompatibleVersions() { + return new String[] {"2.0.*"}; + } + + /** * Logger. */ private static final Logger LOG = LoggerFactory.getLogger http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java index 23ed67d..d1a0bbe 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java @@ -26,8 +26,7 @@ import java.util.List; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo; -import org.apache.ambari.server.orm.dao.HostDAO; -import org.apache.ambari.server.orm.entities.HostEntity; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,9 +40,6 @@ import com.google.inject.persist.Transactional; */ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { - @Inject - HostDAO hostDAO; - private static final String CLUSTERS_TABLE = "clusters"; private static final String HOSTS_TABLE = "hosts"; private static final String HOST_COMPONENT_DESIRED_STATE_TABLE = "hostcomponentdesiredstate"; @@ -62,6 +58,8 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { private static final String VIEW_PARAMETER_TABLE = "viewparameter"; private static final String STACK_TABLE_DEFINITION = "stack"; + private static final String HOST_ID_COL = "host_id"; + /** * {@inheritDoc} */ @@ -79,6 +77,13 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { } /** + * {@inheritDoc} + */ + public String[] getCompatibleVersions() { + return new String[] {"*"}; + } + + /** * Logger. */ private static final Logger LOG = LoggerFactory.getLogger @@ -117,12 +122,14 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { private void executeHostsDDLUpdates() throws AmbariException, SQLException { Configuration.DatabaseType databaseType = configuration.getDatabaseType(); - dbAccessor.addColumn(HOSTS_TABLE, new DBColumnInfo("id", Long.class, null, null, true)); + dbAccessor.addColumn(HOSTS_TABLE, new DBColumnInfo(HOST_ID_COL, Long.class, null, null, true)); + // Sequence value for the hosts table primary key. First record will be 1, so ambari_sequence value must be 0. Long hostId = 0L; ResultSet resultSet = null; try { - resultSet = dbAccessor.executeSelect("SELECT host_name FROM hosts"); + // Notice that hosts are ordered by host_id ASC, so any null values are last. + resultSet = dbAccessor.executeSelect("SELECT host_name, host_id FROM hosts ORDER BY host_id ASC, host_name ASC"); hostId = populateHostsId(resultSet); } finally { if (resultSet != null) { @@ -132,39 +139,39 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { // Insert host id number into ambari_sequences dbAccessor.executeQuery("INSERT INTO ambari_sequences (sequence_name, sequence_value) VALUES ('host_id_seq', " + hostId + ")"); - //dbAccessor.insertRow("ambari_sequences", new String[]{"sequence_name", "sequence_value"}, new String[]{"host_id_seq", hostId.toString()}, false); // Make the hosts id non-null after all the values are populated if (databaseType == Configuration.DatabaseType.DERBY) { // This is a workaround for UpgradeTest.java unit test - dbAccessor.executeQuery("ALTER TABLE hosts ALTER column id NOT NULL"); + dbAccessor.executeQuery("ALTER TABLE " + HOSTS_TABLE + " ALTER column " + HOST_ID_COL + " NOT NULL"); } else { - dbAccessor.alterColumn("hosts", new DBColumnInfo("id", Long.class, null, null, false)); - //dbAccessor.executeQuery("ALTER TABLE hosts ALTER column id SET NOT NULL"); + dbAccessor.alterColumn(HOSTS_TABLE, new DBColumnInfo(HOST_ID_COL, Long.class, null, null, false)); } // Drop the 8 FK constraints in the host-related tables. They will be recreated later after the PK is changed. // The only host-related table not being included is alert_history. if (databaseType == Configuration.DatabaseType.DERBY) { - dbAccessor.executeQuery("ALTER TABLE hostcomponentdesiredstate DROP CONSTRAINT hstcmponentdesiredstatehstname"); - dbAccessor.executeQuery("ALTER TABLE hostcomponentstate DROP CONSTRAINT hostcomponentstate_host_name"); - dbAccessor.executeQuery("ALTER TABLE hoststate DROP CONSTRAINT FK_hoststate_host_name"); - dbAccessor.executeQuery("ALTER TABLE host_version DROP CONSTRAINT FK_host_version_host_name"); - dbAccessor.executeQuery("ALTER TABLE host_role_command DROP CONSTRAINT FK_host_role_command_host_name"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_COMPONENT_STATE_TABLE + " DROP CONSTRAINT hostcomponentstate_host_name"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_COMPONENT_DESIRED_STATE_TABLE + " DROP CONSTRAINT hstcmponentdesiredstatehstname"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_ROLE_COMMAND_TABLE + " DROP CONSTRAINT FK_host_role_command_host_name"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_STATE_TABLE + " DROP CONSTRAINT FK_hoststate_host_name"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_VERSION_TABLE + " DROP CONSTRAINT FK_host_version_host_name"); + dbAccessor.executeQuery("ALTER TABLE " + CONFIG_GROUP_HOST_MAPPING_TABLE + " DROP CONSTRAINT FK_cghm_hname"); + dbAccessor.executeQuery("ALTER TABLE " + KERBEROS_PRINCIPAL_HOST_TABLE + " DROP CONSTRAINT FK_krb_pr_host_hostname"); + // This FK name is actually different on Derby. - dbAccessor.executeQuery("ALTER TABLE hostconfigmapping DROP CONSTRAINT FK_hostconfigmapping_host_name"); - dbAccessor.executeQuery("ALTER TABLE configgrouphostmapping DROP CONSTRAINT FK_cghm_hname"); - dbAccessor.executeQuery("ALTER TABLE kerberos_principal_host DROP CONSTRAINT FK_krb_pr_host_hostname"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_CONFIG_MAPPING_TABLE + " DROP CONSTRAINT FK_hostconfigmapping_host_name"); } else { - dbAccessor.dropConstraint(HOST_COMPONENT_DESIRED_STATE_TABLE, "hstcmponentdesiredstatehstname"); dbAccessor.dropConstraint(HOST_COMPONENT_STATE_TABLE, "hostcomponentstate_host_name"); + dbAccessor.dropConstraint(HOST_COMPONENT_DESIRED_STATE_TABLE, "hstcmponentdesiredstatehstname"); + dbAccessor.dropConstraint(HOST_ROLE_COMMAND_TABLE, "FK_host_role_command_host_name"); dbAccessor.dropConstraint(HOST_STATE_TABLE, "FK_hoststate_host_name"); dbAccessor.dropConstraint(HOST_VERSION_TABLE, "FK_host_version_host_name"); - dbAccessor.dropConstraint(HOST_ROLE_COMMAND_TABLE, "FK_host_role_command_host_name"); - dbAccessor.dropConstraint(HOST_CONFIG_MAPPING_TABLE, "FK_hostconfmapping_host_name"); dbAccessor.dropConstraint(CONFIG_GROUP_HOST_MAPPING_TABLE, "FK_cghm_hname"); dbAccessor.dropConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_krb_pr_host_hostname"); + + dbAccessor.dropConstraint(HOST_CONFIG_MAPPING_TABLE, "FK_hostconfmapping_host_name"); } // In Ambari 2.0.0, there were discrepancies with the FK in the ClusterHostMapping table in the Postgres databases. @@ -182,31 +189,25 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { "It is possible it did not exist or the deletion failed. " + e.getMessage()); } - // Readd the FK to the cluster_id; will add the host_id at the end. + // Re-add the FK to the cluster_id; will add the host_id at the end. dbAccessor.addFKConstraint(CLUSTER_HOST_MAPPING_TABLE, "FK_clusterhostmapping_cluster_id", "cluster_id", CLUSTERS_TABLE, "cluster_id", false); - // Drop the PK, and recreate it on the id instead + // Drop the PK, and recreate it on the host_id instead if (databaseType == Configuration.DatabaseType.DERBY) { String constraintName = getDerbyTableConstraintName("p", HOSTS_TABLE); if (null != constraintName) { - dbAccessor.executeQuery("ALTER TABLE hosts DROP CONSTRAINT " + constraintName); + dbAccessor.executeQuery("ALTER TABLE " + HOSTS_TABLE + " DROP CONSTRAINT " + constraintName); } } else { dbAccessor.dropConstraint(HOSTS_TABLE, "hosts_pkey"); } - dbAccessor.executeQuery("ALTER TABLE hosts ADD CONSTRAINT PK_hosts_id PRIMARY KEY (id)"); + dbAccessor.executeQuery("ALTER TABLE " + HOSTS_TABLE + " ADD CONSTRAINT PK_hosts_id PRIMARY KEY (host_id)"); + dbAccessor.executeQuery("ALTER TABLE " + HOSTS_TABLE + " ADD CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)"); - dbAccessor.executeQuery("ALTER TABLE hosts ADD CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)"); // TODO, for now, these still point to the host_name and will be fixed one table at a time to point to the host id. // Re-add the FKs - dbAccessor.addFKConstraint(HOST_COMPONENT_DESIRED_STATE_TABLE, "hstcmponentdesiredstatehstname", - "host_name", HOSTS_TABLE, "host_name", false); - dbAccessor.addFKConstraint(HOST_COMPONENT_STATE_TABLE, "hostcomponentstate_host_name", - "host_name", HOSTS_TABLE, "host_name", false); - dbAccessor.addFKConstraint(HOST_STATE_TABLE, "FK_hoststate_host_name", - "host_name", HOSTS_TABLE, "host_name", false); dbAccessor.addFKConstraint(HOST_VERSION_TABLE, "FK_host_version_host_name", "host_name", HOSTS_TABLE, "host_name", false); dbAccessor.addFKConstraint(HOST_ROLE_COMMAND_TABLE, "FK_host_role_command_host_name", @@ -220,22 +221,79 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { // Add host_id to the host-related tables, and populate the host_id, one table at a time. - dbAccessor.addColumn(CLUSTER_HOST_MAPPING_TABLE, new DBColumnInfo("host_id", Long.class, null, null, true)); - dbAccessor.executeQuery("UPDATE clusterhostmapping chm SET host_id = (SELECT id FROM hosts h WHERE h.host_name = chm.host_name) WHERE chm.host_id IS NULL AND chm.host_name IS NOT NULL"); - - if (databaseType == Configuration.DatabaseType.DERBY) { - // This is a workaround for UpgradeTest.java unit test - dbAccessor.executeQuery("ALTER TABLE clusterhostmapping ALTER column host_id NOT NULL"); - } else { - dbAccessor.executeQuery("ALTER TABLE clusterhostmapping ALTER column host_id SET NOT NULL"); + // TODO, include other tables. + String[] tablesToAddHostID = new String[] { + CLUSTER_HOST_MAPPING_TABLE, + HOST_COMPONENT_STATE_TABLE, + HOST_COMPONENT_DESIRED_STATE_TABLE, + HOST_STATE_TABLE + }; + for (String tableName : tablesToAddHostID) { + dbAccessor.addColumn(tableName, new DBColumnInfo(HOST_ID_COL, Long.class, null, null, true)); + dbAccessor.executeQuery("UPDATE " + tableName + " t SET host_id = (SELECT host_id FROM hosts h WHERE h.host_name = t.host_name) WHERE t.host_id IS NULL AND t.host_name IS NOT NULL"); + + if (databaseType == Configuration.DatabaseType.DERBY) { + // This is a workaround for UpgradeTest.java unit test + dbAccessor.executeQuery("ALTER TABLE " + tableName + " ALTER column " + HOST_ID_COL + " NOT NULL"); + } else { + dbAccessor.executeQuery("ALTER TABLE " + tableName + " ALTER column " + HOST_ID_COL + " SET NOT NULL"); + } } // These are the FKs that have already been corrected. + // TODO, include other tables. dbAccessor.addFKConstraint(CLUSTER_HOST_MAPPING_TABLE, "FK_clusterhostmapping_host_id", - "host_id", HOSTS_TABLE, "id", false); + "host_id", HOSTS_TABLE, "host_id", false); + dbAccessor.addFKConstraint(HOST_COMPONENT_STATE_TABLE, "FK_hostcomponentstate_host_id", + "host_id", HOSTS_TABLE, "host_id", false); + dbAccessor.addFKConstraint(HOST_COMPONENT_DESIRED_STATE_TABLE, "FK_hostcomponentdesiredstate_host_id", + "host_id", HOSTS_TABLE, "host_id", false); + dbAccessor.addFKConstraint(HOST_STATE_TABLE, "FK_hoststate_host_id", + "host_id", HOSTS_TABLE, "host_id", false); - dbAccessor.dropColumn(CLUSTER_HOST_MAPPING_TABLE, "host_name"); + + // For any tables where the host_name was part of the PK, need to drop the PK, and recreate it with the host_id + // TODO, include other tables. + String[] tablesWithHostNameInPK = new String[] { + CLUSTER_HOST_MAPPING_TABLE, + HOST_COMPONENT_STATE_TABLE, + HOST_COMPONENT_DESIRED_STATE_TABLE, + HOST_STATE_TABLE + }; + + if (databaseType == Configuration.DatabaseType.DERBY) { + for (String tableName : tablesWithHostNameInPK) { + String constraintName = getDerbyTableConstraintName("p", tableName); + if (null != constraintName) { + dbAccessor.executeQuery("ALTER TABLE " + tableName + " DROP CONSTRAINT " + constraintName); + } + } + } else { + + dbAccessor.dropConstraint(CLUSTER_HOST_MAPPING_TABLE, "clusterhostmapping_pkey"); + dbAccessor.dropConstraint(HOST_COMPONENT_STATE_TABLE, "hostcomponentstate_pkey"); + dbAccessor.dropConstraint(HOST_COMPONENT_DESIRED_STATE_TABLE, "hostcomponentdesiredstate_pkey"); + dbAccessor.dropConstraint(HOST_STATE_TABLE, "hoststate_pkey"); + // TODO, include other tables. + } + dbAccessor.executeQuery("ALTER TABLE " + CLUSTER_HOST_MAPPING_TABLE + + " ADD CONSTRAINT clusterhostmapping_pkey PRIMARY KEY (cluster_id, host_id)"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_COMPONENT_STATE_TABLE + + " ADD CONSTRAINT hostcomponentstate_pkey PRIMARY KEY (cluster_id, component_name, host_id, service_name)"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_COMPONENT_DESIRED_STATE_TABLE + + " ADD CONSTRAINT hostcomponentdesiredstate_pkey PRIMARY KEY (cluster_id, component_name, host_id, service_name)"); + dbAccessor.executeQuery("ALTER TABLE " + HOST_STATE_TABLE + + " ADD CONSTRAINT hoststate_pkey PRIMARY KEY (host_id)"); + // TODO, include other tables. + + // Finish by deleting the unnecessary host_name columns. + dbAccessor.dropColumn(CLUSTER_HOST_MAPPING_TABLE, "host_name"); + dbAccessor.dropColumn(HOST_COMPONENT_STATE_TABLE, "host_name"); + dbAccessor.dropColumn(HOST_COMPONENT_DESIRED_STATE_TABLE, "host_name"); + dbAccessor.dropColumn(HOST_STATE_TABLE, "host_name"); + // TODO, include other tables. + // view columns for cluster association dbAccessor.addColumn(VIEW_INSTANCE_TABLE, new DBColumnInfo("cluster_handle", String.class, 255, null, true)); dbAccessor.addColumn(VIEW_PARAMETER_TABLE, new DBColumnInfo("cluster_config", String.class, 255, null, true)); @@ -300,7 +358,7 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { /** * Populate the id of the hosts table with an auto-increment int. - * @param resultSet Rows from the hosts table + * @param resultSet Rows from the hosts table, sorted first by host_id * @return Returns an integer with the id for the next host record to be inserted. * @throws SQLException */ @@ -310,10 +368,14 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog { if (resultSet != null) { try { while (resultSet.next()) { + hostId++; final String hostName = resultSet.getString(1); - HostEntity host = hostDAO.findByName(hostName); - host.setId(++hostId); - hostDAO.merge(host); + Long currHostID = resultSet.getLong(2); // in case of a retry, may not be null + + if (currHostID == null && StringUtils.isNotBlank(hostName)) { + dbAccessor.executeQuery("UPDATE " + HOSTS_TABLE + " SET host_id = " + hostId + + " WHERE host_name = '" + hostName + "'"); + } } } catch (Exception e) { LOG.error("Unable to populate the id of the hosts. " + e.getMessage()); http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql index 7593e07..3bfe959 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -102,15 +102,13 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR(255) NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, - host_name VARCHAR(255) NOT NULL, - -- host_id BIGINT NOT NULL, + host_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, admin_state VARCHAR(32), maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', restart_required TINYINT(1) NOT NULL DEFAULT 0, - PRIMARY KEY (cluster_id, component_name, host_name, service_name)); - -- PRIMARY KEY (cluster_id, component_name, host_id, service_name)); + PRIMARY KEY (cluster_id, component_name, host_id, service_name)); CREATE TABLE hostcomponentstate ( cluster_id BIGINT NOT NULL, @@ -118,16 +116,14 @@ CREATE TABLE hostcomponentstate ( version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN', current_stack_version VARCHAR(255) NOT NULL, current_state VARCHAR(255) NOT NULL, - host_name VARCHAR(255) NOT NULL, - -- host_id BIGINT NOT NULL, + host_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE', security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', - PRIMARY KEY (cluster_id, component_name, host_name, service_name)); - -- PRIMARY KEY (cluster_id, component_name, host_id, service_name)); + PRIMARY KEY (cluster_id, component_name, host_id, service_name)); CREATE TABLE hosts ( - id BIGINT NOT NULL, + host_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, cpu_count INTEGER NOT NULL, cpu_info VARCHAR(255) NOT NULL, @@ -143,19 +139,17 @@ CREATE TABLE hosts ( public_host_name VARCHAR(255), rack_info VARCHAR(255) NOT NULL, total_mem BIGINT NOT NULL, - PRIMARY KEY (id)); + PRIMARY KEY (host_id)); CREATE TABLE hoststate ( agent_version VARCHAR(255) NOT NULL, available_mem BIGINT NOT NULL, current_state VARCHAR(255) NOT NULL, health_status VARCHAR(255), - host_name VARCHAR(255) NOT NULL, - -- host_id BIGINT NOT NULL, + host_id BIGINT NOT NULL, time_in_state BIGINT NOT NULL, maintenance_state VARCHAR(512), - PRIMARY KEY (host_name)); - -- PRIMARY KEY (host_id)); + PRIMARY KEY (host_id)); CREATE TABLE host_version ( id BIGINT NOT NULL, @@ -601,31 +595,28 @@ ALTER TABLE clusterconfigmapping ADD CONSTRAINT clusterconfigmappingcluster_id F ALTER TABLE clusterstate ADD CONSTRAINT FK_clusterstate_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); ALTER TABLE cluster_version ADD CONSTRAINT FK_cluster_version_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); ALTER TABLE cluster_version ADD CONSTRAINT FK_cluster_version_repovers_id FOREIGN KEY (repo_version_id) REFERENCES repo_version (repo_version_id); -ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT hstcmponentdesiredstatehstname FOREIGN KEY (host_name) REFERENCES hosts (host_name); --- ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT hstcmponentdesiredstatehstid FOREIGN KEY (host_id) REFERENCES hosts (id); +ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT FK_hostcomponentdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, cluster_id, service_name) REFERENCES servicecomponentdesiredstate (component_name, cluster_id, service_name); ALTER TABLE hostcomponentstate ADD CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, cluster_id, service_name) REFERENCES servicecomponentdesiredstate (component_name, cluster_id, service_name); -ALTER TABLE hostcomponentstate ADD CONSTRAINT hostcomponentstate_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); --- ALTER TABLE hostcomponentstate ADD CONSTRAINT hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); -ALTER TABLE hoststate ADD CONSTRAINT FK_hoststate_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); --- ALTER TABLE hoststate ADD CONSTRAINT FK_hoststate_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +ALTER TABLE hostcomponentstate ADD CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); +ALTER TABLE hoststate ADD CONSTRAINT FK_hoststate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE host_version ADD CONSTRAINT FK_host_version_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); --- ALTER TABLE host_version ADD CONSTRAINT FK_host_version_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +-- ALTER TABLE host_version ADD CONSTRAINT FK_host_version_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE host_version ADD CONSTRAINT FK_host_version_repovers_id FOREIGN KEY (repo_version_id) REFERENCES repo_version (repo_version_id); ALTER TABLE servicecomponentdesiredstate ADD CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id); ALTER TABLE servicedesiredstate ADD CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id); ALTER TABLE execution_command ADD CONSTRAINT FK_execution_command_task_id FOREIGN KEY (task_id) REFERENCES host_role_command (task_id); ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_stage_id FOREIGN KEY (stage_id, request_id) REFERENCES stage (stage_id, request_id); ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); --- ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +-- ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE role_success_criteria ADD CONSTRAINT role_success_criteria_stage_id FOREIGN KEY (stage_id, request_id) REFERENCES stage (stage_id, request_id); ALTER TABLE stage ADD CONSTRAINT FK_stage_request_id FOREIGN KEY (request_id) REFERENCES request (request_id); ALTER TABLE request ADD CONSTRAINT FK_request_schedule_id FOREIGN KEY (request_schedule_id) REFERENCES requestschedule (schedule_id); ALTER TABLE ClusterHostMapping ADD CONSTRAINT FK_clusterhostmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); -ALTER TABLE ClusterHostMapping ADD CONSTRAINT FK_clusterhostmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +ALTER TABLE ClusterHostMapping ADD CONSTRAINT FK_clusterhostmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); --- ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +-- ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id); ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id); ALTER TABLE serviceconfighosts ADD CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id); @@ -634,7 +625,7 @@ ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_confg FOREIGN KEY (c ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id); ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_cgid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id); ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_hname FOREIGN KEY (host_name) REFERENCES hosts (host_name); --- ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +-- ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE requestschedulebatchrequest ADD CONSTRAINT FK_rsbatchrequest_schedule_id FOREIGN KEY (schedule_id) REFERENCES requestschedule (schedule_id); ALTER TABLE hostgroup ADD CONSTRAINT FK_hg_blueprint_name FOREIGN KEY (blueprint_name) REFERENCES blueprint(blueprint_name); ALTER TABLE hostgroup_component ADD CONSTRAINT FK_hgc_blueprint_name FOREIGN KEY (blueprint_name, hostgroup_name) REFERENCES hostgroup(blueprint_name, name); @@ -679,7 +670,7 @@ CREATE TABLE kerberos_principal_host ( ); ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_hostname FOREIGN KEY (host_name) REFERENCES hosts (host_name) ON DELETE CASCADE; --- ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (id) ON DELETE CASCADE; +-- ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id) ON DELETE CASCADE; ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_principalname http://git-wip-us.apache.org/repos/asf/ambari/blob/1487ad37/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql index 0562bc6..807306f 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -91,15 +91,13 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR2(255) NOT NULL, desired_stack_version VARCHAR2(255) NULL, desired_state VARCHAR2(255) NOT NULL, - host_name VARCHAR2(255) NOT NULL, - --host_id NUMBER(19) NOT NULL, + host_id NUMBER(19) NOT NULL, service_name VARCHAR2(255) NOT NULL, admin_state VARCHAR2(32) NULL, maintenance_state VARCHAR2(32) NOT NULL, security_state VARCHAR2(32) DEFAULT 'UNSECURED' NOT NULL, restart_required NUMBER(1) DEFAULT 0 NOT NULL, - PRIMARY KEY (cluster_id, component_name, host_name, service_name)); - --PRIMARY KEY (cluster_id, component_name, host_id, service_name)); + PRIMARY KEY (cluster_id, component_name, host_id, service_name)); CREATE TABLE hostcomponentstate ( cluster_id NUMBER(19) NOT NULL, @@ -107,16 +105,14 @@ CREATE TABLE hostcomponentstate ( version VARCHAR2(32) DEFAULT 'UNKNOWN' NOT NULL, current_stack_version VARCHAR2(255) NOT NULL, current_state VARCHAR2(255) NOT NULL, - host_name VARCHAR2(255) NOT NULL, - --host_id NUMBER(19) NOT NULL, + host_id NUMBER(19) NOT NULL, service_name VARCHAR2(255) NOT NULL, upgrade_state VARCHAR2(32) DEFAULT 'NONE' NOT NULL, security_state VARCHAR2(32) DEFAULT 'UNSECURED' NOT NULL, - PRIMARY KEY (cluster_id, component_name, host_name, service_name)); - --PRIMARY KEY (cluster_id, component_name, host_id, service_name)); + PRIMARY KEY (cluster_id, component_name, host_id, service_name)); CREATE TABLE hosts ( - id NUMBER(19) NOT NULL, + host_id NUMBER(19) NOT NULL, host_name VARCHAR2(255) NOT NULL, cpu_count INTEGER NOT NULL, cpu_info VARCHAR2(255) NULL, @@ -132,19 +128,17 @@ CREATE TABLE hosts ( public_host_name VARCHAR2(255) NULL, rack_info VARCHAR2(255) NOT NULL, total_mem INTEGER NOT NULL, - PRIMARY KEY (id)); + PRIMARY KEY (host_id)); CREATE TABLE hoststate ( agent_version VARCHAR2(255) NULL, available_mem NUMBER(19) NOT NULL, current_state VARCHAR2(255) NOT NULL, health_status VARCHAR2(255) NULL, - host_name VARCHAR2(255) NOT NULL, - --host_id NUMBER(19) NOT NULL, + host_id NUMBER(19) NOT NULL, time_in_state NUMBER(19) NOT NULL, maintenance_state VARCHAR2(512), - PRIMARY KEY (host_name)); - --PRIMARY KEY (host_id)); + PRIMARY KEY (host_id)); CREATE TABLE host_version ( id NUMBER(19) NOT NULL, @@ -590,31 +584,28 @@ ALTER TABLE clusterconfigmapping ADD CONSTRAINT clusterconfigmappingcluster_id F ALTER TABLE clusterstate ADD CONSTRAINT FK_clusterstate_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); ALTER TABLE cluster_version ADD CONSTRAINT FK_cluster_version_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); ALTER TABLE cluster_version ADD CONSTRAINT FK_cluster_version_repovers_id FOREIGN KEY (repo_version_id) REFERENCES repo_version (repo_version_id); -ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT hstcmponentdesiredstatehstname FOREIGN KEY (host_name) REFERENCES hosts (host_name); ---ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT hstcmponentdesiredstatehstid FOREIGN KEY (host_id) REFERENCES hosts (id); +ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT FK_hostcomponentdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE hostcomponentdesiredstate ADD CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, cluster_id, service_name) REFERENCES servicecomponentdesiredstate (component_name, cluster_id, service_name); ALTER TABLE hostcomponentstate ADD CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, cluster_id, service_name) REFERENCES servicecomponentdesiredstate (component_name, cluster_id, service_name); -ALTER TABLE hostcomponentstate ADD CONSTRAINT hostcomponentstate_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); ---ALTER TABLE hostcomponentstate ADD CONSTRAINT hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); -ALTER TABLE hoststate ADD CONSTRAINT FK_hoststate_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); ---ALTER TABLE hoststate ADD CONSTRAINT FK_hoststate_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +ALTER TABLE hostcomponentstate ADD CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); +ALTER TABLE hoststate ADD CONSTRAINT FK_hoststate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE host_version ADD CONSTRAINT FK_host_version_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); ---ALTER TABLE host_version ADD CONSTRAINT FK_host_version_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +--ALTER TABLE host_version ADD CONSTRAINT FK_host_version_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE host_version ADD CONSTRAINT FK_host_version_repovers_id FOREIGN KEY (repo_version_id) REFERENCES repo_version (repo_version_id); ALTER TABLE servicecomponentdesiredstate ADD CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id); ALTER TABLE servicedesiredstate ADD CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id); ALTER TABLE execution_command ADD CONSTRAINT FK_execution_command_task_id FOREIGN KEY (task_id) REFERENCES host_role_command (task_id); ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_stage_id FOREIGN KEY (stage_id, request_id) REFERENCES stage (stage_id, request_id); ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); ---ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +--ALTER TABLE host_role_command ADD CONSTRAINT FK_host_role_command_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE role_success_criteria ADD CONSTRAINT role_success_criteria_stage_id FOREIGN KEY (stage_id, request_id) REFERENCES stage (stage_id, request_id); ALTER TABLE stage ADD CONSTRAINT FK_stage_request_id FOREIGN KEY (request_id) REFERENCES request (request_id); ALTER TABLE request ADD CONSTRAINT FK_request_schedule_id FOREIGN KEY (request_schedule_id) REFERENCES requestschedule (schedule_id); ALTER TABLE ClusterHostMapping ADD CONSTRAINT FK_clusterhostmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); -ALTER TABLE ClusterHostMapping ADD CONSTRAINT FK_clusterhostmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +ALTER TABLE ClusterHostMapping ADD CONSTRAINT FK_clusterhostmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name); ---ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +--ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id); ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id); ALTER TABLE configgroup ADD CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id); @@ -622,7 +613,7 @@ ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_confg FOREIGN KEY (v ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id); ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_cgid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id); ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_hname FOREIGN KEY (host_name) REFERENCES hosts (host_name); ---ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_host_id FOREIGN KEY (host_id) REFERENCES hosts (id); +--ALTER TABLE configgrouphostmapping ADD CONSTRAINT FK_cghm_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id); ALTER TABLE requestschedulebatchrequest ADD CONSTRAINT FK_rsbatchrequest_schedule_id FOREIGN KEY (schedule_id) REFERENCES requestschedule (schedule_id); ALTER TABLE hostgroup ADD CONSTRAINT FK_hg_blueprint_name FOREIGN KEY (blueprint_name) REFERENCES blueprint(blueprint_name); ALTER TABLE hostgroup_component ADD CONSTRAINT FK_hgc_blueprint_name FOREIGN KEY (blueprint_name, hostgroup_name) REFERENCES hostgroup(blueprint_name, name); @@ -669,7 +660,7 @@ CREATE TABLE kerberos_principal_host ( ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_hostname FOREIGN KEY (host_name) REFERENCES hosts (host_name) ON DELETE CASCADE; ---ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (id) ON DELETE CASCADE; +--ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id) ON DELETE CASCADE; ALTER TABLE kerberos_principal_host ADD CONSTRAINT FK_krb_pr_host_principalname
