Repository: ambari Updated Branches: refs/heads/trunk ff1de9807 -> b061b1be2
AMBARI-20875. Removing A Service Causes DB Verification To Produce Warnings (dlysnichenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b061b1be Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b061b1be Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b061b1be Branch: refs/heads/trunk Commit: b061b1be2dca70d73ff82b873a83aad003c18a1a Parents: ff1de98 Author: Lisnichenko Dmitro <dlysniche...@hortonworks.com> Authored: Wed May 3 15:23:41 2017 +0300 Committer: Lisnichenko Dmitro <dlysniche...@hortonworks.com> Committed: Wed May 3 15:23:41 2017 +0300 ---------------------------------------------------------------------- .../server/checks/DatabaseConsistencyCheckHelper.java | 9 +++++++-- .../ambari/server/orm/entities/ClusterConfigEntity.java | 11 +++++++++++ .../java/org/apache/ambari/server/state/ServiceImpl.java | 2 +- .../ambari/server/upgrade/SchemaUpgradeHelper.java | 1 + .../src/main/resources/Ambari-DDL-Derby-CREATE.sql | 1 + .../src/main/resources/Ambari-DDL-MySQL-CREATE.sql | 1 + .../src/main/resources/Ambari-DDL-Oracle-CREATE.sql | 1 + .../src/main/resources/Ambari-DDL-Postgres-CREATE.sql | 1 + .../src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 1 + .../src/main/resources/Ambari-DDL-SQLServer-CREATE.sql | 1 + 10 files changed, 26 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/ambari-server/src/main/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelper.java index 0b7f122..7c40c83 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelper.java @@ -630,6 +630,9 @@ public class DatabaseConsistencyCheckHelper { List<ClusterConfigEntity> notMappedClusterConfigs = getNotMappedClusterConfigsToService(); for (ClusterConfigEntity clusterConfigEntity : notMappedClusterConfigs){ + if (!clusterConfigEntity.isServiceDeleted()){ + continue; // skip clusterConfigs that did not leave after service deletion + } List<String> types = new ArrayList<>(); String type = clusterConfigEntity.getType(); types.add(type); @@ -662,9 +665,11 @@ public class DatabaseConsistencyCheckHelper { Set<String> nonMappedConfigs = new HashSet<>(); for (ClusterConfigEntity clusterConfigEntity : notMappedClasterConfigs) { - nonMappedConfigs.add(clusterConfigEntity.getType() + '-' + clusterConfigEntity.getTag()); + if (!clusterConfigEntity.isServiceDeleted()){ + nonMappedConfigs.add(clusterConfigEntity.getType() + '-' + clusterConfigEntity.getTag()); + } } - if (!notMappedClasterConfigs.isEmpty()){ + if (!nonMappedConfigs.isEmpty()){ warning("You have config(s): {} that is(are) not mapped (in serviceconfigmapping table) to any service!", StringUtils.join(nonMappedConfigs, ",")); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java index 876063d..1092ac5 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java @@ -129,6 +129,9 @@ public class ClusterConfigEntity { @ManyToMany(mappedBy = "clusterConfigEntities") private Collection<ServiceConfigEntity> serviceConfigEntities; + @Column(name = "service_deleted", nullable = false, insertable = true, updatable = true) + private short serviceDeleted = 0; + /** * Unidirectional one-to-one association to {@link StackEntity} */ @@ -136,6 +139,14 @@ public class ClusterConfigEntity { @JoinColumn(name = "stack_id", unique = false, nullable = false, insertable = true, updatable = true) private StackEntity stack; + public boolean isServiceDeleted() { + return serviceDeleted != 0; + } + + public void setServiceDeleted(boolean serviceDeleted) { + this.serviceDeleted = (short)(serviceDeleted ? 1 : 0); + } + public Long getConfigId() { return configId; } http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java index a0c0db1..61f44cc 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java @@ -492,12 +492,12 @@ public class ServiceImpl implements Service { void deleteAllServiceConfigs() throws AmbariException { long clusterId = getClusterId(); ServiceConfigEntity lastServiceConfigEntity = serviceConfigDAO.findMaxVersion(clusterId, getName()); - // de-select every configuration from the service if (lastServiceConfigEntity != null) { for (ClusterConfigEntity serviceConfigEntity : lastServiceConfigEntity.getClusterConfigEntities()) { LOG.info("Disabling configuration {}", serviceConfigEntity); serviceConfigEntity.setSelected(false); + serviceConfigEntity.setServiceDeleted(true); clusterDAO.merge(serviceConfigEntity); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/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 d022f1f..48cf5f6 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 @@ -190,6 +190,7 @@ public class SchemaUpgradeHelper { catalogBinder.addBinding().to(UpgradeCatalog242.class); catalogBinder.addBinding().to(UpgradeCatalog250.class); catalogBinder.addBinding().to(UpgradeCatalog251.class); + catalogBinder.addBinding().to(UpgradeCatalog252.class); catalogBinder.addBinding().to(UpgradeCatalog300.class); catalogBinder.addBinding().to(FinalUpgradeCatalog.class); http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql index b241dc2..ece6600 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql @@ -76,6 +76,7 @@ CREATE TABLE clusterconfig ( config_data VARCHAR(3000) NOT NULL, config_attributes VARCHAR(3000), create_timestamp BIGINT NOT NULL, + service_deleted SMALLINT NOT NULL DEFAULT 0, selected_timestamp BIGINT NOT NULL DEFAULT 0, CONSTRAINT PK_clusterconfig PRIMARY KEY (config_id), CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/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 670bf17..e0f2ef9 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -96,6 +96,7 @@ CREATE TABLE clusterconfig ( config_data LONGTEXT NOT NULL, config_attributes LONGTEXT, create_timestamp BIGINT NOT NULL, + service_deleted SMALLINT NOT NULL DEFAULT 0, selected_timestamp BIGINT NOT NULL DEFAULT 0, CONSTRAINT PK_clusterconfig PRIMARY KEY (config_id), CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/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 00b3248..6d0f856 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -76,6 +76,7 @@ CREATE TABLE clusterconfig ( config_data CLOB NOT NULL, config_attributes CLOB, create_timestamp NUMBER(19) NOT NULL, + service_deleted SMALLINT NOT NULL DEFAULT 0, selected_timestamp NUMBER(19) DEFAULT 0 NOT NULL, CONSTRAINT PK_clusterconfig PRIMARY KEY (config_id), CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql index f6af968..49b956b 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql @@ -76,6 +76,7 @@ CREATE TABLE clusterconfig ( config_data TEXT NOT NULL, config_attributes TEXT, create_timestamp BIGINT NOT NULL, + service_deleted SMALLINT NOT NULL DEFAULT 0, selected_timestamp BIGINT NOT NULL DEFAULT 0, CONSTRAINT PK_clusterconfig PRIMARY KEY (config_id), CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql index 64a0137..c594a2e 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql @@ -75,6 +75,7 @@ CREATE TABLE clusterconfig ( config_data TEXT NOT NULL, config_attributes TEXT, create_timestamp NUMERIC(19) NOT NULL, + service_deleted SMALLINT NOT NULL DEFAULT 0, selected_timestamp NUMERIC(19) NOT NULL DEFAULT 0, CONSTRAINT PK_clusterconfig PRIMARY KEY (config_id), CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), http://git-wip-us.apache.org/repos/asf/ambari/blob/b061b1be/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql index 22b2c3d..77459a6 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql @@ -89,6 +89,7 @@ CREATE TABLE clusterconfig ( config_data VARCHAR(MAX) NOT NULL, config_attributes VARCHAR(MAX), create_timestamp BIGINT NOT NULL, + service_deleted SMALLINT NOT NULL DEFAULT 0, selected_timestamp BIGINT NOT NULL DEFAULT 0, CONSTRAINT PK_clusterconfig PRIMARY KEY CLUSTERED (config_id), CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id),