Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/04/10 10:44:14 (14 years ago)
Author:
cneumuel
Message:

merged with changes from Hive-3.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Core.cs

    r4119 r4141  
    4646using HeuristicLab.Tracing;
    4747using HeuristicLab.Core;
     48using System.IO;
    4849
    4950namespace HeuristicLab.Hive.Client.Core {
     
    134135
    135136        case MessageContainer.MessageType.JobAborted:
    136           //todo: thread this         
    137           lock (engines) {
    138             Guid jobId = new Guid(container.JobId.ToString());
    139             if (engines.ContainsKey(jobId)) {
    140               appDomains[jobId].UnhandledException -= new UnhandledExceptionEventHandler(appDomain_UnhandledException);
    141               AppDomain.Unload(appDomains[jobId]);
    142               appDomains.Remove(jobId);
    143               engines.Remove(jobId);
    144               jobs.Remove(jobId);
    145               GC.Collect();
    146             } else
    147               Logger.Error("JobAbort: Engine doesn't exist");
    148           }
     137          Guid jobId = new Guid(container.JobId.ToString());
     138          KillAppDomain(jobId);
    149139          break;
    150140
     
    247237        if (WcfService.Instance.ConnState == NetworkEnum.WcfConnState.Loggedin) {
    248238          Logger.Info("Sending the finished job with id: " + jId);
    249           wcfService.StoreFinishedJobResultAsync(ConfigManager.Instance.GetClientInfo().Id, jId, sJob, 1.0, null, true);
     239          wcfService.StoreFinishedJobResultAsync(ConfigManager.Instance.GetClientInfo().Id, jId, sJob, 1.0, engines[jId].CurrentException, true);
    250240        } else {
    251241          Logger.Info("Storing the finished job with id: " + jId + " to hdd");
    252242          JobStorageManager.PersistObjectToDisc(wcfService.ServerIP, wcfService.ServerPort, jId, sJob);
    253           lock (engines) {
    254             appDomains[jId].UnhandledException -= new UnhandledExceptionEventHandler(appDomain_UnhandledException);
    255 
    256             //Disposing it
    257             engines[jId].Dispose();
    258 
    259             AppDomain.Unload(appDomains[jId]);
    260             Logger.Debug("Unloaded appdomain");
    261             appDomains.Remove(jId);
    262             engines.Remove(jId);
    263             jobs.Remove(jId);
    264             Logger.Debug("Removed job from appDomains, Engines and Jobs");
    265           }
     243          KillAppDomain(jId);
    266244        }
    267245      } catch (InvalidStateException ise) {
     
    332310        PluginCache.Instance.PreparePlugins(e.Result.Job.PluginsNeeded);
    333311
     312        PluginCache.Instance.CopyPluginsForJob(e.Result.Job.PluginsNeeded, e.Result.Job.Id);
     313
    334314        //        foreach (CachedHivePluginInfoDto plugininfo in PluginCache.Instance.GetPlugins(e.Result.Job.PluginsNeeded))
    335315        //        files.AddRange(plugininfo.PluginFiles);
    336316        Logger.Debug("Plugins fetched for job " + e.Result.Job.Id);
    337317        try {
    338           AppDomain appDomain =
    339             HeuristicLab.PluginInfrastructure.Sandboxing.SandboxManager.CreateAndInitSandbox(
    340               e.Result.Job.Id.ToString(), null);
     318          String pluginDir = Path.Combine(PluginCache.PLUGIN_REPO, e.Result.Job.Id.ToString());
     319         
     320          AppDomain appDomain = HeuristicLab.PluginInfrastructure.Sandboxing.SandboxManager.CreateAndInitSandbox(pluginDir, null);
    341321          appDomain.UnhandledException += new UnhandledExceptionEventHandler(appDomain_UnhandledException);
    342322          lock (engines) {
     
    365345          CurrentlyFetching = false;
    366346          KillAppDomain(e.Result.Job.Id);
     347          wcfService.StoreFinishedJobResultsSync(ConfigManager.Instance.GetClientInfo().Id, e.Result.Job.Id, new byte[] { }, 1, exception, true);
    367348        }
    368349      } else
     
    497478          engines.Remove(id);
    498479          jobs.Remove(id);
     480          PluginCache.Instance.DeletePluginsForJob(id);
    499481          GC.Collect();
    500482        } catch (Exception ex) {
Note: See TracChangeset for help on using the changeset viewer.