Repository: incubator-reef Updated Branches: refs/heads/master b4152d7db -> 7a07abcf6
[REEF-276]: Requesting 100 Containers on YARN causes injection errors in submitting tasks on REEF.NET on HDInsight This addressed the issue by * The original issue was caused by AvroSerializer not serializing HashSets correctly and included empty entries. * Changing the use of HashSet<ConfigurationEntry> in AvroConfiguration.Bindings to List<ConfigurationEntry> fixes the issue temporarily. This closes #174 JIRA: [REEF-276](https://issues.apache.org/jira/browse/REEF-276) Author: afchung90 <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/7a07abcf Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/7a07abcf Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/7a07abcf Branch: refs/heads/master Commit: 7a07abcf6a4564e2c9ab91434227d1ca32d8e770 Parents: b4152d7 Author: afchung90 <[email protected]> Authored: Tue May 5 14:45:53 2015 -0700 Committer: Julia Wang <[email protected]> Committed: Wed May 6 14:35:19 2015 -0700 ---------------------------------------------------------------------- .../Configuration/TestAvroConfiguration.cs | 3 +-- .../AvroConfiguration.cs | 9 ++++++--- .../ConfigurationEntry.cs | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7a07abcf/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs index 17e4575..d9392ab 100644 --- a/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs +++ b/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs @@ -53,7 +53,6 @@ namespace Org.Apache.REEF.Tang.Tests.Configuration private AvroConfiguration ToAvroConfiguration() { - var a = new AvroConfiguration(); HashSet<ConfigurationEntry> b = new HashSet<ConfigurationEntry>(); ConfigurationEntry e1 = new ConfigurationEntry(); e1.key = "a"; @@ -63,7 +62,7 @@ namespace Org.Apache.REEF.Tang.Tests.Configuration e2.value = "b1=b2"; b.Add(e1); b.Add(e2); - a.Bindings = b; + var a = new AvroConfiguration(b); return a; } } http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7a07abcf/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/AvroConfiguration.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/AvroConfiguration.cs b/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/AvroConfiguration.cs index 7c8dc0a..9a4fa9d 100644 --- a/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/AvroConfiguration.cs +++ b/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/AvroConfiguration.cs @@ -27,9 +27,12 @@ namespace Org.Apache.REEF.Tang.Formats.AvroConfigurationDataContract [DataContract(Name = "AvroConfiguration", Namespace = "org.apache.reef.tang.formats.avro")] public class AvroConfiguration { - public AvroConfiguration(HashSet<ConfigurationEntry> bindings) + public AvroConfiguration(ISet<ConfigurationEntry> bindings) { - this.Bindings = bindings; + // TODO: [REEF-276] AvroSerializer currently does not serialize HashSets + // correctly, so using a List for now to get around the issue. + // An ISet is still passed in to guarantee configuration uniqueness. + this.Bindings = new List<ConfigurationEntry>(bindings); } public AvroConfiguration() @@ -37,7 +40,7 @@ namespace Org.Apache.REEF.Tang.Formats.AvroConfigurationDataContract } [DataMember] - public HashSet<ConfigurationEntry> Bindings { get; set; } + public List<ConfigurationEntry> Bindings { get; set; } public static AvroConfiguration GetAvroConfigurationFromEmbeddedString(string jsonString) { http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7a07abcf/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/ConfigurationEntry.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/ConfigurationEntry.cs b/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/ConfigurationEntry.cs index e8f72d0..e5bd5f5 100644 --- a/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/ConfigurationEntry.cs +++ b/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationDataContract/ConfigurationEntry.cs @@ -40,5 +40,24 @@ namespace Org.Apache.REEF.Tang.Formats.AvroConfigurationDataContract [DataMember] public string value { get; set; } + + public override bool Equals(object obj) + { + var that = obj as ConfigurationEntry; + return that != null && this.Equals(that); + } + + public override int GetHashCode() + { + unchecked + { + return ((this.key != null ? this.key.GetHashCode() : 0) * 397) ^ (this.value != null ? this.value.GetHashCode() : 0); + } + } + + protected bool Equals(ConfigurationEntry that) + { + return this.key == that.key && this.value == that.value; + } } }
