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); } } }
