You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2015/11/26 15:56:24 UTC

[1/2] ambari git commit: AMBARI-14009. Express Upgrade - SQL Exception while trying to DeregisterVersion (after install packages step failed due to invalid repo)

Repository: ambari
Updated Branches:
  refs/heads/branch-2.1 a5b90007e -> bded607d5
  refs/heads/trunk 56c23bb65 -> b3422548b


AMBARI-14009. Express Upgrade - SQL Exception while trying to DeregisterVersion (after install packages step failed due to invalid repo)


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

Branch: refs/heads/branch-2.1
Commit: bded607d543e2f9a706cfb1dad51e8f1401aaa75
Parents: a5b9000
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Thu Nov 26 16:55:40 2015 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Thu Nov 26 16:55:40 2015 +0200

----------------------------------------------------------------------
 .../server/orm/dao/ClusterVersionDAO.java       | 17 ++++++++++++++
 .../apache/ambari/server/orm/dao/CrudDAO.java   |  2 +-
 .../ambari/server/orm/dao/HostVersionDAO.java   | 17 ++++++++++++++
 .../server/orm/dao/RepositoryVersionDAO.java    | 12 ++++++++++
 .../server/orm/entities/HostVersionEntity.java  |  1 -
 .../orm/entities/RepositoryVersionEntity.java   | 24 ++++++++++++++++----
 .../ambari/server/orm/dao/CrudDAOTest.java      |  2 +-
 7 files changed, 68 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/bded607d/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
index 1b00a3e..7a9a6e6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
@@ -158,6 +158,23 @@ public class ClusterVersionDAO extends CrudDAO<ClusterVersionEntity, Long>{
   }
 
   /**
+   * Construct a Cluster Version. Additionally this will update parent connection relations without
+   * forcing refresh of parent entity
+   * @param entity entity to create
+   */
+  @Override
+  @Transactional
+  public void create(ClusterVersionEntity entity) throws IllegalArgumentException {
+    // check if repository version is not missing, to avoid NPE
+    if (entity.getRepositoryVersion() == null) {
+      throw new IllegalArgumentException("RepositoryVersion argument is not set for the entity");
+    }
+
+    super.create(entity);
+    entity.getRepositoryVersion().updateClusterVersionEntityRelation(entity);
+  }
+
+  /**
    * Construct a Cluster Version and return it. This is primarily used to be able to construct the object and mock
    * the function call.
    * @param cluster Cluster

http://git-wip-us.apache.org/repos/asf/ambari/blob/bded607d/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
index ed0a931..473c558 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
@@ -93,7 +93,7 @@ public class CrudDAO<E, K> {
    * @param entity entity to create
    */
   @Transactional
-  public void create(E entity) {
+  protected void create(E entity) {
     entityManagerProvider.get().persist(entity);
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/bded607d/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
index ae63263..f1192f9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
@@ -58,6 +58,23 @@ public class HostVersionDAO extends CrudDAO<HostVersionEntity, Long> {
   }
 
   /**
+   * Construct a Host Version. Additionally this will update parent connection relations without
+   * forcing refresh of parent entity
+   * @param entity entity to create
+   */
+  @Override
+  @Transactional
+  public void create(HostVersionEntity entity) throws IllegalArgumentException{
+    // check if repository version is not missing, to avoid NPE
+    if (entity.getRepositoryVersion() == null) {
+      throw new IllegalArgumentException("RepositoryVersion argument is not set for the entity");
+    }
+
+    super.create(entity);
+    entity.getRepositoryVersion().updateHostVersionEntityRelation(entity);
+  }
+
+  /**
    * Retrieve all of the host versions for the given cluster name, stack name,
    * and stack version.
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/bded607d/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
index 9f5f6f1..e1f7110 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
@@ -47,6 +47,18 @@ public class RepositoryVersionDAO extends CrudDAO<RepositoryVersionEntity, Long>
     super(RepositoryVersionEntity.class);
   }
 
+
+  /**
+   * Creates entity.
+   *
+   * @param entity entity to create
+   */
+  @Override
+  @Transactional
+  public void create(RepositoryVersionEntity entity){
+    super.create(entity);
+  }
+
   /**
    * Retrieves repository version by name.
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/bded607d/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
index 4ee7d49..b69518b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
@@ -151,7 +151,6 @@ public class HostVersionEntity {
     final int prime = 31;
     int result = 1;
     result = prime * result + ((hostEntity == null) ? 0 : hostEntity.hashCode());
-    result = prime * result + ((hostEntity == null) ? 0 : hostEntity.hashCode());
     result = prime * result + ((id == null) ? 0 : id.hashCode());
     result = prime * result + ((repositoryVersion == null) ? 0 : repositoryVersion.hashCode());
     result = prime * result + ((state == null) ? 0 : state.hashCode());

http://git-wip-us.apache.org/repos/asf/ambari/blob/bded607d/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index 16b7c1c..cfe7901 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -17,9 +17,9 @@
  */
 package org.apache.ambari.server.orm.entities;
 
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -50,7 +50,7 @@ import com.google.inject.Provider;
 @Entity
 @Table(name = "repo_version", uniqueConstraints = {
     @UniqueConstraint(columnNames = {"display_name"}),
-    @UniqueConstraint(columnNames = {"stack", "version"})
+    @UniqueConstraint(columnNames = {"stack_id", "version"})
 })
 @TableGenerator(name = "repository_version_id_generator",
     table = "ambari_sequences",
@@ -95,10 +95,10 @@ public class RepositoryVersionEntity {
   private String operatingSystems;
 
   @OneToMany(cascade = CascadeType.REMOVE, mappedBy = "repositoryVersion")
-  private Collection<ClusterVersionEntity> clusterVersionEntities;
+  private Set<ClusterVersionEntity> clusterVersionEntities;
 
   @OneToMany(cascade = CascadeType.REMOVE, mappedBy = "repositoryVersion")
-  private Collection<HostVersionEntity> hostVersionEntities;
+  private Set<HostVersionEntity> hostVersionEntities;
 
   // ----- RepositoryVersionEntity -------------------------------------------------------
 
@@ -114,6 +114,22 @@ public class RepositoryVersionEntity {
     this.operatingSystems = operatingSystems;
   }
 
+  /**
+   * Update one-to-many relation without rebuilding the whole entity
+   * @param entity many-to-one entity
+   */
+  public void updateClusterVersionEntityRelation(ClusterVersionEntity entity){
+    clusterVersionEntities.add(entity);
+  }
+
+  /**
+   * Update one-to-many relation without rebuilding the whole entity
+   * @param entity many-to-one entity
+   */
+  public void updateHostVersionEntityRelation(HostVersionEntity entity){
+    hostVersionEntities.add(entity);
+  }
+
   public Long getId() {
     return id;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/bded607d/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
index 6b5b297..ac6ef63 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
@@ -69,7 +69,7 @@ public class CrudDAOTest {
     entity.setDisplayName("display name" + uniqueCounter);
     entity.setOperatingSystems("repositories");
     entity.setStack(stackEntity);
-    entity.setVersion("version");
+    entity.setVersion("version" + uniqueCounter);
     repositoryVersionDAO.create(entity);
     uniqueCounter++;
   }


[2/2] ambari git commit: AMBARI-14009. Express Upgrade - SQL Exception while trying to DeregisterVersion (after install packages step failed due to invalid repo)

Posted by dm...@apache.org.
AMBARI-14009. Express Upgrade - SQL Exception while trying to DeregisterVersion (after install packages step failed due to invalid repo)


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

Branch: refs/heads/trunk
Commit: b3422548b635f86f2cf30cfbfff881ba589edc75
Parents: 56c23bb
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Thu Nov 26 16:55:40 2015 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Thu Nov 26 16:56:09 2015 +0200

----------------------------------------------------------------------
 .../server/orm/dao/ClusterVersionDAO.java       | 17 ++++++++++++++
 .../apache/ambari/server/orm/dao/CrudDAO.java   |  2 +-
 .../ambari/server/orm/dao/HostVersionDAO.java   | 17 ++++++++++++++
 .../server/orm/dao/RepositoryVersionDAO.java    | 12 ++++++++++
 .../server/orm/entities/HostVersionEntity.java  |  1 -
 .../orm/entities/RepositoryVersionEntity.java   | 24 ++++++++++++++++----
 .../ambari/server/orm/dao/CrudDAOTest.java      |  2 +-
 7 files changed, 68 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/b3422548/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
index 28449ae..1bcca60 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
@@ -159,6 +159,23 @@ public class ClusterVersionDAO extends CrudDAO<ClusterVersionEntity, Long>{
   }
 
   /**
+   * Construct a Cluster Version. Additionally this will update parent connection relations without
+   * forcing refresh of parent entity
+   * @param entity entity to create
+   */
+  @Override
+  @Transactional
+  public void create(ClusterVersionEntity entity) throws IllegalArgumentException {
+    // check if repository version is not missing, to avoid NPE
+    if (entity.getRepositoryVersion() == null) {
+      throw new IllegalArgumentException("RepositoryVersion argument is not set for the entity");
+    }
+
+    super.create(entity);
+    entity.getRepositoryVersion().updateClusterVersionEntityRelation(entity);
+  }
+
+  /**
    * Construct a Cluster Version and return it. This is primarily used to be able to construct the object and mock
    * the function call.
    * @param cluster Cluster

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3422548/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
index ed0a931..473c558 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/CrudDAO.java
@@ -93,7 +93,7 @@ public class CrudDAO<E, K> {
    * @param entity entity to create
    */
   @Transactional
-  public void create(E entity) {
+  protected void create(E entity) {
     entityManagerProvider.get().persist(entity);
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3422548/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
index a1ffc2a..040876a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostVersionDAO.java
@@ -58,6 +58,23 @@ public class HostVersionDAO extends CrudDAO<HostVersionEntity, Long> {
   }
 
   /**
+   * Construct a Host Version. Additionally this will update parent connection relations without
+   * forcing refresh of parent entity
+   * @param entity entity to create
+   */
+  @Override
+  @Transactional
+  public void create(HostVersionEntity entity) throws IllegalArgumentException{
+    // check if repository version is not missing, to avoid NPE
+    if (entity.getRepositoryVersion() == null) {
+      throw new IllegalArgumentException("RepositoryVersion argument is not set for the entity");
+    }
+
+    super.create(entity);
+    entity.getRepositoryVersion().updateHostVersionEntityRelation(entity);
+  }
+
+  /**
    * Retrieve all of the host versions for the given cluster name, stack name,
    * and stack version.
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3422548/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
index 9f5f6f1..e1f7110 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
@@ -47,6 +47,18 @@ public class RepositoryVersionDAO extends CrudDAO<RepositoryVersionEntity, Long>
     super(RepositoryVersionEntity.class);
   }
 
+
+  /**
+   * Creates entity.
+   *
+   * @param entity entity to create
+   */
+  @Override
+  @Transactional
+  public void create(RepositoryVersionEntity entity){
+    super.create(entity);
+  }
+
   /**
    * Retrieves repository version by name.
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3422548/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
index 4ee7d49..b69518b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostVersionEntity.java
@@ -151,7 +151,6 @@ public class HostVersionEntity {
     final int prime = 31;
     int result = 1;
     result = prime * result + ((hostEntity == null) ? 0 : hostEntity.hashCode());
-    result = prime * result + ((hostEntity == null) ? 0 : hostEntity.hashCode());
     result = prime * result + ((id == null) ? 0 : id.hashCode());
     result = prime * result + ((repositoryVersion == null) ? 0 : repositoryVersion.hashCode());
     result = prime * result + ((state == null) ? 0 : state.hashCode());

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3422548/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index 4296077..b1e54de 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -17,9 +17,9 @@
  */
 package org.apache.ambari.server.orm.entities;
 
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -50,7 +50,7 @@ import com.google.inject.Provider;
 @Entity
 @Table(name = "repo_version", uniqueConstraints = {
     @UniqueConstraint(columnNames = {"display_name"}),
-    @UniqueConstraint(columnNames = {"stack", "version"})
+    @UniqueConstraint(columnNames = {"stack_id", "version"})
 })
 @TableGenerator(name = "repository_version_id_generator",
     table = "ambari_sequences",
@@ -95,10 +95,10 @@ public class RepositoryVersionEntity {
   private String operatingSystems;
 
   @OneToMany(cascade = CascadeType.REMOVE, mappedBy = "repositoryVersion")
-  private Collection<ClusterVersionEntity> clusterVersionEntities;
+  private Set<ClusterVersionEntity> clusterVersionEntities;
 
   @OneToMany(cascade = CascadeType.REMOVE, mappedBy = "repositoryVersion")
-  private Collection<HostVersionEntity> hostVersionEntities;
+  private Set<HostVersionEntity> hostVersionEntities;
 
   // ----- RepositoryVersionEntity -------------------------------------------------------
 
@@ -114,6 +114,22 @@ public class RepositoryVersionEntity {
     this.operatingSystems = operatingSystems;
   }
 
+  /**
+   * Update one-to-many relation without rebuilding the whole entity
+   * @param entity many-to-one entity
+   */
+  public void updateClusterVersionEntityRelation(ClusterVersionEntity entity){
+    clusterVersionEntities.add(entity);
+  }
+
+  /**
+   * Update one-to-many relation without rebuilding the whole entity
+   * @param entity many-to-one entity
+   */
+  public void updateHostVersionEntityRelation(HostVersionEntity entity){
+    hostVersionEntities.add(entity);
+  }
+
   public Long getId() {
     return id;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3422548/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
index 6b5b297..ac6ef63 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
@@ -69,7 +69,7 @@ public class CrudDAOTest {
     entity.setDisplayName("display name" + uniqueCounter);
     entity.setOperatingSystems("repositories");
     entity.setStack(stackEntity);
-    entity.setVersion("version");
+    entity.setVersion("version" + uniqueCounter);
     repositoryVersionDAO.create(entity);
     uniqueCounter++;
   }