Repository: reef
Updated Branches:
  refs/heads/master 6c597f140 -> 92b21364c


[REEF-1688] IMRU: Don't fail if RM allocates extra evaluators

This change replaces exception thrown if RM allocates more
evaluators than IMRU driver requested with a warning and evaluator ignore.

JIRA:
  [REEF-1688](https://issues.apache.org/jira/browse/REEF-1688)

Pull request:
  This closes #1204


Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/92b21364
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/92b21364
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/92b21364

Branch: refs/heads/master
Commit: 92b21364c7234c57b4c4dcfa550078a2e2b82ada
Parents: 6c597f1
Author: Mariia Mykhailova <[email protected]>
Authored: Thu Dec 15 11:41:39 2016 -0800
Committer: Julia Wang <[email protected]>
Committed: Mon Dec 19 10:10:23 2016 -0800

----------------------------------------------------------------------
 lang/cs/Org.Apache.REEF.IMRU.Tests/TestEvaluatorManager.cs   | 6 ++++--
 .../Org.Apache.REEF.IMRU/OnREEF/Driver/EvaluatorManager.cs   | 8 +++++---
 lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs     | 4 ++++
 3 files changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/92b21364/lang/cs/Org.Apache.REEF.IMRU.Tests/TestEvaluatorManager.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IMRU.Tests/TestEvaluatorManager.cs 
b/lang/cs/Org.Apache.REEF.IMRU.Tests/TestEvaluatorManager.cs
index 648d0f5..536d283 100644
--- a/lang/cs/Org.Apache.REEF.IMRU.Tests/TestEvaluatorManager.cs
+++ b/lang/cs/Org.Apache.REEF.IMRU.Tests/TestEvaluatorManager.cs
@@ -89,8 +89,10 @@ namespace Org.Apache.REEF.IMRU.Tests
             var evaluatorManager = CreateEvaluatorManager(2, 1);
             
evaluatorManager.AddMasterEvaluator(CreateMockAllocatedEvaluator(1));
             
evaluatorManager.AddAllocatedEvaluator(CreateMockAllocatedEvaluator(2));
-            Action add = () => 
evaluatorManager.AddAllocatedEvaluator(CreateMockAllocatedEvaluator(3));
-            Assert.Throws<IMRUSystemException>(add);
+            
evaluatorManager.AddAllocatedEvaluator(CreateMockAllocatedEvaluator(3));
+
+            // the last evaluator should be just ignored
+            
Assert.False(evaluatorManager.IsAllocatedEvaluator(EvaluatorIdPrefix + "3"));
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/reef/blob/92b21364/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/EvaluatorManager.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/EvaluatorManager.cs 
b/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/EvaluatorManager.cs
index 27a0f3e..fdab06e 100644
--- a/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/EvaluatorManager.cs
+++ b/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/EvaluatorManager.cs
@@ -128,15 +128,17 @@ namespace Org.Apache.REEF.IMRU.OnREEF.Driver
 
             if (NumberOfAllocatedEvaluators >= _totalExpectedEvaluators)
             {
-                string msg = string.Format("Trying to add an additional 
Evaluator {0}, but the total expected Evaluator number {1} has been reached.", 
evaluator.Id, _totalExpectedEvaluators);
-                Exceptions.Throw(new IMRUSystemException(msg), Logger);
+                string msg = string.Format("Trying to add an additional 
evaluator {0}, but the total expected Evaluator number {1} has been reached. 
Ignoring new evaluator", 
+                    evaluator.Id, _totalExpectedEvaluators);
+                Logger.Log(Level.Warning, msg);
+                return;
             }
            
             _allocatedEvaluatorIds.Add(evaluator.Id);
 
             if (_masterEvaluatorId == null && NumberOfAllocatedEvaluators == 
_totalExpectedEvaluators)
             {
-                string msg = string.Format("Added the last Evaluator {0} but 
master Evaluator is not added yet.", evaluator.Id);
+                string msg = string.Format("Added the last evaluator {0} but 
master evaluator is not added yet.", evaluator.Id);
                 Exceptions.Throw(new IMRUSystemException(msg), Logger);
             }
         }

http://git-wip-us.apache.org/repos/asf/reef/blob/92b21364/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs 
b/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
index d0cd537..27eeba8 100644
--- a/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
+++ b/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
@@ -295,6 +295,10 @@ namespace Org.Apache.REEF.IMRU.OnREEF.Driver
             }
             else
             {
+                if 
(!_evaluatorManager.IsAllocatedEvaluator(allocatedEvaluator.Id))
+                {
+                    return;
+                }
                 configs = _serviceAndContextConfigurationProvider
                     .GetDataLoadingConfigurationForEvaluatorById(
                         allocatedEvaluator.Id);

Reply via email to