----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/17596/ -----------------------------------------------------------
(Updated Feb. 3, 2014, 5:48 p.m.) Review request for Ambari, Mahadev Konar, Nate Cole, Tom Beerbower, and Yusaku Sako. Changes ------- Thanks Tom for your constructive criticism. First of all - this bug exist with/without Ganglia. I have tested both cases. About too broadly property replacement... Properties should be replaced only if they values exist in current properties map. If property cant be resolved, it's value will not be replaced. >>> I guess that a resource provider could use a different Resource >>> implementation if that were the case. Maybe it's okay if we really want to >>> say that this should be the default behavior.<<< I don't know how to manage which Resource implementation should be used in each case. Solution now it compatible with previous versions (we didn't use ${} in previous versions) >>>One thing that I don't like is how the property value must be checked every >>>time getProperty() is called? Why not just do it once on setProperty()?<<< Yes, I have fixed it as you advised. Also, I have added checking for cyclic property references, so it will prevent StackOverflowExeption when properties refer to each other (with any length of cycle) Bugs: AMBARI-4490 https://issues.apache.org/jira/browse/AMBARI-4490 Repository: ambari Description ------- The cause of error messages is that we start use new format properties like "dfs.datanode.http.address":"0.0.0.0:${ambari.dfs.datanode.http.port}". It means that we have to replace ${ambari.dfs.datanode.http.port} with value of ambari.dfs.datanode.http.port property from current config. In this case we need process these value references and keep in mind that: 1) We can have some references in one property, like this "dfs.datanode.http.address":"${ambari.dfs.datanode.http.host}:${ambari.dfs.datanode.http.port}" 2) Also value references can be referenced to another references. 3) Patch have to impact all configs So, I have created private method postProcessPropertyValue in ResourceImpl.java for resolve all of value references Diffs (updated) ----- ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ResourceImpl.java 15fb961 ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ResourceImplTest.java da87bc6 Diff: https://reviews.apache.org/r/17596/diff/ Testing ------- Added unitests Thanks, Dmytro Shkvyra