Repository: incubator-reef
Updated Branches:
  refs/heads/master 7f5685b38 -> 68e19c818


[REEF-615] Generate class hierarchy on DriverRestart

This adds and calls the class hierarchy generator on driver restarts.

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

Pull Request:
  This closes #393


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

Branch: refs/heads/master
Commit: 68e19c8188685645e6475e01dac61e60f0ca7c76
Parents: 7f5685b
Author: Andrew Chung <[email protected]>
Authored: Thu Aug 20 15:54:07 2015 -0700
Committer: Markus Weimer <[email protected]>
Committed: Thu Aug 20 16:13:05 2015 -0700

----------------------------------------------------------------------
 ...assHierarchyGeneratingDriverStartObserver.cs | 41 ++++++++++++++------
 .../DriverConfiguration.cs                      |  3 +-
 2 files changed, 31 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/68e19c81/lang/cs/Org.Apache.REEF.Driver/ClassHierarchyGeneratingDriverStartObserver.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Driver/ClassHierarchyGeneratingDriverStartObserver.cs 
b/lang/cs/Org.Apache.REEF.Driver/ClassHierarchyGeneratingDriverStartObserver.cs
index e23a45a..78f434d 100644
--- 
a/lang/cs/Org.Apache.REEF.Driver/ClassHierarchyGeneratingDriverStartObserver.cs
+++ 
b/lang/cs/Org.Apache.REEF.Driver/ClassHierarchyGeneratingDriverStartObserver.cs
@@ -32,7 +32,7 @@ namespace Org.Apache.REEF.Driver
     /// <summary>
     /// Utility class that generates the class hierarchy for the assemblies in 
the `global` folder.
     /// </summary>
-    internal sealed class ClassHierarchyGeneratingDriverStartObserver : 
IObserver<IDriverStarted>
+    internal sealed class ClassHierarchyGeneratingDriverStartObserver : 
IObserver<IDriverStarted>, IObserver<IDriverRestarted>
     {
         private static readonly Logger Logger = 
Logger.GetLogger(typeof(ClassHierarchyGeneratingDriverStartObserver));
 
@@ -52,18 +52,16 @@ namespace Org.Apache.REEF.Driver
         /// <param name="value"></param>
         public void OnNext(IDriverStarted value)
         {
-            if (_assemblies != null && _assemblies.Count > 0)
-            {
-                //adding system level assemblies
-                _assemblies.Add(typeof(IDriver).Assembly.GetName().Name);
-                _assemblies.Add(typeof(ITask).Assembly.GetName().Name);
+            GenerateClassHierarchyBin();
+        }
 
-                ClrHandlerHelper.GenerateClassHierarchy(_assemblies);
-            }
-            else
-            {
-                
ClrHandlerHelper.GenerateClassHierarchy(GetAssembliesInGlobalFolder());
-            }
+        /// <summary>
+        /// Generates the class hierarchy file
+        /// </summary>
+        /// <param name="value"></param>
+        public void OnNext(IDriverRestarted value)
+        {
+            GenerateClassHierarchyBin();
         }
 
         /// <summary>
@@ -84,6 +82,25 @@ namespace Org.Apache.REEF.Driver
         }
 
         /// <summary>
+        /// Generates the clr class hierarchy.
+        /// </summary>
+        private void GenerateClassHierarchyBin()
+        {
+            if (_assemblies != null && _assemblies.Count > 0)
+            {
+                //adding system level assemblies
+                _assemblies.Add(typeof(IDriver).Assembly.GetName().Name);
+                _assemblies.Add(typeof(ITask).Assembly.GetName().Name);
+
+                ClrHandlerHelper.GenerateClassHierarchy(_assemblies);
+            }
+            else
+            {
+                
ClrHandlerHelper.GenerateClassHierarchy(GetAssembliesInGlobalFolder());
+            }
+        }
+
+        /// <summary>
         /// </summary>
         /// <returns>The paths of all assemblies in the reef/global 
folder.</returns>
         private ISet<string> GetAssembliesInGlobalFolder()

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/68e19c81/lang/cs/Org.Apache.REEF.Driver/DriverConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/DriverConfiguration.cs 
b/lang/cs/Org.Apache.REEF.Driver/DriverConfiguration.cs
index 716647c..ee2cff3 100644
--- a/lang/cs/Org.Apache.REEF.Driver/DriverConfiguration.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/DriverConfiguration.cs
@@ -226,7 +226,8 @@ namespace Org.Apache.REEF.Driver
                     
.BindNamedParameter(GenericType<DriverBridgeConfigurationOptions.RestartEnabled>.Class,
 RestartEnabled)
                     .Build()
                     // TODO: Move this up
-                    .Set(OnDriverStarted, 
GenericType<ClassHierarchyGeneratingDriverStartObserver>.Class);
+                    .Set(OnDriverStarted, 
GenericType<ClassHierarchyGeneratingDriverStartObserver>.Class)
+                    .Set(OnDriverRestarted, 
GenericType<ClassHierarchyGeneratingDriverStartObserver>.Class);
             }
         }
     }

Reply via email to