Changeset 5721 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Core.cs
- Timestamp:
- 03/16/11 18:05:56 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Core.cs
r5718 r5721 26 26 using System.ServiceModel; 27 27 using System.Threading; 28 using System.Threading.Tasks; 28 29 using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts; 29 30 using HeuristicLab.Common; … … 133 134 private void DetermineAction(MessageContainer container) { 134 135 ClientCom.LogMessage("Message: " + container.Message.ToString() + " for job: " + container.JobId); 135 //TODO: find a better solution 136 136 137 if (container is ExecutorMessageContainer<Guid>) { 137 138 ExecutorMessageContainer<Guid> c = (ExecutorMessageContainer<Guid>)container; … … 140 141 switch (container.Message) { 141 142 case MessageContainer.MessageType.CalculateJob: 142 Job job = wcfService.GetJob(container.JobId); 143 JobData jobData = wcfService.GetJobData(job.Id); 144 job = wcfService.UpdateJobState(job.Id, JobState.Calculating, null); 145 StartJobInAppDomain(job, jobData); 143 Task.Factory.StartNew(() => { 144 Job job = wcfService.GetJob(container.JobId); 145 lock (engines) { 146 if (!jobs.ContainsKey(job.Id)) { 147 jobs.Add(job.Id, job); 148 } 149 } 150 JobData jobData = wcfService.GetJobData(job.Id); 151 job = wcfService.UpdateJobState(job.Id, JobState.Calculating, null); 152 StartJobInAppDomain(job, jobData); 153 }); 146 154 break; 147 155 case MessageContainer.MessageType.ShutdownSlave: … … 420 428 appDomain.UnhandledException += new UnhandledExceptionEventHandler(AppDomain_UnhandledException); 421 429 lock (engines) { 422 if (!jobs.ContainsKey(myJob.Id)) { 423 jobs.Add(myJob.Id, myJob); 424 appDomains.Add(myJob.Id, appDomain); 425 ClientCom.LogMessage("Creating AppDomain"); 426 Executor engine = (Executor)appDomain.CreateInstanceAndUnwrap(typeof(Executor).Assembly.GetName().Name, typeof(Executor).FullName); 427 ClientCom.LogMessage("Created AppDomain"); 428 engine.JobId = myJob.Id; 429 engine.Core = this; 430 ClientCom.LogMessage("Starting Engine for job " + myJob.Id); 431 engines.Add(myJob.Id, engine); 432 engine.Start(jobData.Data); 433 SlaveStatusInfo.JobsFetched++; 434 ClientCom.LogMessage("Increment FetchedJobs to:" + SlaveStatusInfo.JobsFetched); 435 } 430 appDomains.Add(myJob.Id, appDomain); 431 ClientCom.LogMessage("Creating AppDomain"); 432 Executor engine = (Executor)appDomain.CreateInstanceAndUnwrap(typeof(Executor).Assembly.GetName().Name, typeof(Executor).FullName); 433 ClientCom.LogMessage("Created AppDomain"); 434 engine.JobId = myJob.Id; 435 engine.Core = this; 436 ClientCom.LogMessage("Starting Engine for job " + myJob.Id); 437 engines.Add(myJob.Id, engine); 438 engine.Start(jobData.Data); 439 SlaveStatusInfo.JobsFetched++; 440 ClientCom.LogMessage("Increment FetchedJobs to:" + SlaveStatusInfo.JobsFetched); 436 441 } 437 heartbeatManager.AwakeHeartBeatThread();438 442 } 439 443 catch (Exception exception) { … … 443 447 } 444 448 } 449 heartbeatManager.AwakeHeartBeatThread(); 445 450 } 446 451
Note: See TracChangeset
for help on using the changeset viewer.