You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by ju...@apache.org on 2015/05/06 23:37:45 UTC

incubator-reef git commit: [REEF-276]: Requesting 100 Containers on YARN causes injection errors in submitting tasks on REEF.NET on HDInsight

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 <an...@microsoft.com>


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 <an...@microsoft.com>
Authored: Tue May 5 14:45:53 2015 -0700
Committer: Julia Wang <jw...@yahoo.com>
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;
+        }
     }
 }