Repository: ambari
Updated Branches:
  refs/heads/trunk 3be3c2e13 -> 02f31bc2e


AMBARI-18231. Error around ATLAS_SERVER version advertisement - doesn't 
advertise version (dlysnichenko)


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

Branch: refs/heads/trunk
Commit: 02f31bc2e4273c95ab85a9e61c948dd2674ff100
Parents: 3be3c2e
Author: Lisnichenko Dmitro <[email protected]>
Authored: Tue Aug 23 13:32:51 2016 +0300
Committer: Lisnichenko Dmitro <[email protected]>
Committed: Tue Aug 23 13:32:51 2016 +0300

----------------------------------------------------------------------
 .../listeners/upgrade/StackVersionListener.java |  2 +-
 .../ambari/server/stack/ComponentModule.java    | 17 +++----
 .../ambari/server/state/ComponentInfo.java      | 47 +++++++-----------
 .../server/stack/ComponentModuleTest.java       | 50 ++++++++------------
 4 files changed, 47 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/02f31bc2/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
index 87247eb..7272813 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
@@ -113,7 +113,7 @@ public class StackVersionListener {
       ServiceComponent sc = 
cluster.getService(sch.getServiceName()).getServiceComponent(sch.getServiceComponentName());
       if(!sc.isVersionAdvertised() && StringUtils.isNotBlank(newVersion)
           && !UNKNOWN_VERSION.equalsIgnoreCase(newVersion)) {
-        LOG.error("ServiceComponent {0} doesn't advertise version, " +
+        LOG.error("ServiceComponent {} doesn't advertise version, " +
                 "however ServiceHostComponent {} on host {} advertised version 
as {}. Skipping version update",
             sc.getName(), sch.getServiceComponentName(), sch.getHostName(), 
newVersion);
       } else {

http://git-wip-us.apache.org/repos/asf/ambari/blob/02f31bc2/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
index 537ae32..a42db8b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
@@ -18,6 +18,12 @@
 
 package org.apache.ambari.server.stack;
 
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.ambari.server.state.ComponentInfo;
 import org.apache.ambari.server.state.CustomCommandDefinition;
 import org.apache.ambari.server.state.DependencyInfo;
@@ -25,12 +31,6 @@ import org.apache.ambari.server.state.LogDefinition;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * Component module which provides all functionality related to parsing and 
fully
  * resolving service components from the stack definition.
@@ -90,11 +90,8 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
       }
 
       // Inherit versionAdvertised from the parent if the current Component 
Info has it as null or "inherit".
-      if (null == componentInfo.getVersionAdvertisedField()) {
+      if (null == componentInfo.getVersionAdvertised()) {
         componentInfo.setVersionAdvertised(parentInfo.isVersionAdvertised());
-      } else {
-        // Set to explicit boolean
-        
componentInfo.setVersionAdvertised(componentInfo.getVersionAdvertisedField().booleanValue());
       }
 
       if (componentInfo.getDecommissionAllowed() == null) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/02f31bc2/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
index 2dae526..21ab5e1 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
@@ -18,6 +18,9 @@
 
 package org.apache.ambari.server.state;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -27,9 +30,6 @@ import javax.xml.bind.annotation.XmlElements;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 
-import java.util.ArrayList;
-import java.util.List;
-
 @XmlAccessorType(XmlAccessType.FIELD)
 public class ComponentInfo {
   private String name;
@@ -37,10 +37,7 @@ public class ComponentInfo {
   private String category;
   private boolean deleted;
   private String cardinality = "0+";
-  
-  @XmlElement(name="versionAdvertised")
-  private Boolean versionAdvertisedField;
-  
+
   /**
    * Technically, no component is required to advertise a version. In 
practice, 
    * Components should advertise a version through a mechanism like hdp-select.
@@ -53,7 +50,8 @@ public class ComponentInfo {
    * This is the translation of the xml element ["true", "false", null] (note 
that if a value is not specified,
    * it will inherit from the parent) into a boolean after actually resolving 
it.
    */
-  private boolean versionAdvertisedInternal = false;
+  @XmlElements(@XmlElement(name = "versionAdvertised"))
+  private Boolean versionAdvertised;
 
   /**
    * Used to determine if decommission is allowed
@@ -144,8 +142,7 @@ public class ComponentInfo {
     category = prototype.category;
     deleted = prototype.deleted;
     cardinality = prototype.cardinality;
-    versionAdvertisedField = prototype.versionAdvertisedField;
-    versionAdvertisedInternal = prototype.versionAdvertisedInternal;
+    versionAdvertised = prototype.versionAdvertised;
     decommissionAllowed = prototype.decommissionAllowed;
     clientsToUpdateConfigs = prototype.clientsToUpdateConfigs;
     commandScript = prototype.commandScript;
@@ -318,10 +315,10 @@ public class ComponentInfo {
   /**
    * WARNING: only call this method from unit tests to set the Boolean that 
would have been read from the xml file.
    * If you call this function, you must still call {@see 
org.apache.ambari.server.stack.ComponentModule#resolve()}.
-   * @param versionAdvertisedField
+   * @param versionAdvertised
    */
-  public void setVersionAdvertisedField(Boolean versionAdvertisedField) {
-    this.versionAdvertisedField = versionAdvertisedField;
+  public void setVersionAdvertised(Boolean versionAdvertised) {
+    this.versionAdvertised = versionAdvertised;
   }
 
   /**
@@ -329,16 +326,8 @@ public class ComponentInfo {
    * In all other classes, use {@seealso isVersionAdvertised}
    * @return The Boolean for versionAdvertised from the xml file in order to 
resolve it into a boolean.
    */
-  public Boolean getVersionAdvertisedField() {
-    return this.versionAdvertisedField;
-  }
-
-  /**
-   * WARNING: only call this from ComponentModule to resolve the boolean 
(true|false).
-   * @param versionAdvertised Final resolution of whether version is 
advertised or not.
-   */
-  public void setVersionAdvertised(boolean versionAdvertised) {
-    this.versionAdvertisedInternal = versionAdvertised;
+  public Boolean getVersionAdvertised() {
+    return versionAdvertised;
   }
 
   /**
@@ -347,12 +336,12 @@ public class ComponentInfo {
    * @return boolean of whether this component advertises a version.
    */
   public boolean isVersionAdvertised() {
-    if (null != versionAdvertisedField) {
-      return versionAdvertisedField.booleanValue();
+    if (null != versionAdvertised) {
+      return versionAdvertised;
     }
     // If set to null and has a parent, then the value would have already been 
resolved and set.
     // Otherwise, return the default value (false).
-    return this.versionAdvertisedInternal;
+    return false;
 
   }
 
@@ -406,8 +395,8 @@ public class ComponentInfo {
     if (deleted != that.deleted) return false;
     if (autoDeploy != null ? !autoDeploy.equals(that.autoDeploy) : 
that.autoDeploy != null) return false;
     if (cardinality != null ? !cardinality.equals(that.cardinality) : 
that.cardinality != null) return false;
-    if (versionAdvertisedField != null ? 
!versionAdvertisedField.equals(that.versionAdvertisedField) : 
that.versionAdvertisedField != null) return false;
-    if (versionAdvertisedInternal != that.versionAdvertisedInternal) return 
false;
+    if (versionAdvertised != null ? 
!versionAdvertised.equals(that.versionAdvertised) : that.versionAdvertised != 
null)
+      return false;
     if (decommissionAllowed != null ? 
!decommissionAllowed.equals(that.decommissionAllowed) : 
that.decommissionAllowed != null) return false;
     if (reassignAllowed != null ? 
!reassignAllowed.equals(that.reassignAllowed) : that.reassignAllowed != null) 
return false;
     if (category != null ? !category.equals(that.category) : that.category != 
null) return false;
@@ -449,7 +438,7 @@ public class ComponentInfo {
     result = 31 * result + (configDependencies != null ? 
configDependencies.hashCode() : 0);
     result = 31 * result + (clientConfigFiles != null ? 
clientConfigFiles.hashCode() : 0);
     // NULL = 0, TRUE = 2, FALSE = 1
-    result = 31 * result + (versionAdvertisedField != null ? 
(versionAdvertisedField.booleanValue() ? 2 : 1) : 0);
+    result = 31 * result + (versionAdvertised != null ? (versionAdvertised ? 2 
: 1) : 0);
     return result;
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/02f31bc2/ambari-server/src/test/java/org/apache/ambari/server/stack/ComponentModuleTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/stack/ComponentModuleTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/stack/ComponentModuleTest.java
index 905707c..db1e072 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/stack/ComponentModuleTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/stack/ComponentModuleTest.java
@@ -18,6 +18,11 @@
 
 package org.apache.ambari.server.stack;
 
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.ambari.server.state.AutoDeployInfo;
 import org.apache.ambari.server.state.BulkCommandDefinition;
 import org.apache.ambari.server.state.ClientConfigFileDefinition;
@@ -27,11 +32,6 @@ import 
org.apache.ambari.server.state.CustomCommandDefinition;
 import org.apache.ambari.server.state.DependencyInfo;
 import org.junit.Test;
 
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
 import static org.easymock.EasyMock.createNiceMock;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -490,53 +490,45 @@ public class ComponentModuleTest {
     // Test cases where the current Component Info explicitly sets the value.
 
     // 1. Chain of versionAdvertised is: true (parent) -> true (current) => 
true
-    parentInfo.setVersionAdvertisedField(new Boolean(true));
-    parentInfo.setVersionAdvertised(true);
-    info.setVersionAdvertisedField(new Boolean(true));
+    parentInfo.setVersionAdvertised(new Boolean(true));
+    info.setVersionAdvertised(new Boolean(true));
     assertEquals(true, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
 
     // 2. Chain of versionAdvertised is: true (parent) -> false (current) => 
false
-    parentInfo.setVersionAdvertisedField(new Boolean(true));
-    parentInfo.setVersionAdvertised(true);
-    info.setVersionAdvertisedField(new Boolean(false));
+    parentInfo.setVersionAdvertised(new Boolean(true));
+    info.setVersionAdvertised(new Boolean(false));
     assertEquals(false, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
 
     // 3. Chain of versionAdvertised is: false (parent) -> true (current) => 
true
-    parentInfo.setVersionAdvertisedField(new Boolean(false));
-    parentInfo.setVersionAdvertised(false);
-    info.setVersionAdvertisedField(new Boolean(true));
+    parentInfo.setVersionAdvertised(new Boolean(false));
+    info.setVersionAdvertised(new Boolean(true));
     assertEquals(true, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
 
     // 4. Chain of versionAdvertised is: null (parent) -> true (current) => 
true
-    parentInfo.setVersionAdvertisedField(null);
-    parentInfo.setVersionAdvertised(false);
-    info.setVersionAdvertisedField(new Boolean(true));
+    parentInfo.setVersionAdvertised(null);
+    info.setVersionAdvertised(new Boolean(true));
     assertEquals(true, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
 
     // Test cases where current Component Info is null so it should inherit 
from parent.
 
     // 5. Chain of versionAdvertised is: true (parent) -> null (current) => 
true
-    parentInfo.setVersionAdvertisedField(new Boolean(true));
-    parentInfo.setVersionAdvertised(true);
-    info.setVersionAdvertisedField(null);
+    parentInfo.setVersionAdvertised(new Boolean(true));
+    info.setVersionAdvertised(null);
     assertEquals(true, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
 
     // 6. Chain of versionAdvertised is: true (parent) -> inherit (current) => 
true
-    parentInfo.setVersionAdvertisedField(new Boolean(true));
-    parentInfo.setVersionAdvertised(true);
-    info.setVersionAdvertisedField(null);
+    parentInfo.setVersionAdvertised(new Boolean(true));
+    info.setVersionAdvertised(null);
     assertEquals(true, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
 
     // 7. Chain of versionAdvertised is: false (parent) -> null (current) => 
false
-    parentInfo.setVersionAdvertisedField(new Boolean(false));
-    parentInfo.setVersionAdvertised(false);
-    info.setVersionAdvertisedField(null);
+    parentInfo.setVersionAdvertised(new Boolean(false));
+    info.setVersionAdvertised(null);
     assertEquals(false, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
 
     // 8. Chain of versionAdvertised is: false (parent) -> inherit (current) 
=> false
-    parentInfo.setVersionAdvertisedField(new Boolean(false));
-    parentInfo.setVersionAdvertised(false);
-    info.setVersionAdvertisedField(null);
+    parentInfo.setVersionAdvertised(new Boolean(false));
+    info.setVersionAdvertised(null);
     assertEquals(false, resolveComponent(info, 
parentInfo).getModuleInfo().isVersionAdvertised());
   }
 

Reply via email to