Repository: ambari Updated Branches: refs/heads/branch-2.2 7e6877a15 -> 91a5b3709 refs/heads/trunk 0da68672a -> 7f8da72ff
AMBARI-15831. DB exception when trying to add 700 hosts to cluster. (mpapirkovskyy) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/91a5b370 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/91a5b370 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/91a5b370 Branch: refs/heads/branch-2.2 Commit: 91a5b3709696b35f664e3cc987751ceead84e9e0 Parents: 7e6877a Author: Myroslav Papirkovskyi <mpapyrkovs...@hortonworks.com> Authored: Mon Apr 11 19:50:15 2016 +0300 Committer: Myroslav Papirkovskyi <mpapyrkovs...@hortonworks.com> Committed: Tue Apr 12 15:07:13 2016 +0300 ---------------------------------------------------------------------- .../java/org/apache/ambari/server/agent/HeartbeatProcessor.java | 2 -- .../main/java/org/apache/ambari/server/state/host/HostImpl.java | 5 ++++- .../java/org/apache/ambari/server/topology/TopologyManager.java | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/91a5b370/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java index c55fb1c..46b08d2 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartbeatProcessor.java @@ -336,14 +336,12 @@ public class HeartbeatProcessor extends AbstractService{ } host.setStatus(healthStatus.name()); - host.persist(); } //If host doesn't belong to any cluster if ((clusterFsm.getClustersForHost(host.getHostName())).size() == 0) { healthStatus = HostHealthStatus.HealthStatus.HEALTHY; host.setStatus(healthStatus.name()); - host.persist(); } } } http://git-wip-us.apache.org/repos/asf/ambari/blob/91a5b370/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java index 2c8a8b6..01b0f16 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java @@ -255,7 +255,7 @@ public class HostImpl implements Host { hostEntity.setHostStateEntity(hostStateEntity); hostStateEntity.setHealthStatus(gson.toJson(new HostHealthStatus(HealthStatus.UNKNOWN, ""))); if (persisted) { - persist(); + hostStateDAO.create(hostStateEntity); } } else { stateMachine.setCurrentState(hostStateEntity.getCurrentState()); @@ -1209,6 +1209,9 @@ public class HostImpl implements Host { } persisted = true; } else { + //refresh entities from active session + getHostEntity(); + getHostStateEntity(); saveIfPersisted(); } } finally { http://git-wip-us.apache.org/repos/asf/ambari/blob/91a5b370/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java index c317162..5a0aca0 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java @@ -632,7 +632,7 @@ public class TopologyManager { if (null != rackInfoFromTemplate) { host.setRackInfo(rackInfoFromTemplate); - host.persist(); + host.persist(); //todo this is required only if host is not persisted to database yet, is it really so? try { // todo: do we need this in case of blueprints? ambariContext.getController().registerRackChange(ambariContext.getClusterName(topology.getClusterId()));