Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/16/17 13:08:06 (7 years ago)
Author:
jkarder
Message:

#2784: merged r14901 and r15121 into stable

Location:
stable
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Clients.Hive/3.3/HiveClient.cs

    r14186 r15262  
    441441        if (refreshableJob.IsFinished()) {
    442442          refreshableJob.ExecutionState = Core.ExecutionState.Stopped;
    443         } else {
     443        } else if (refreshableJob.IsPaused()) {
     444          refreshableJob.ExecutionState = Core.ExecutionState.Paused;
     445        } else {
    444446          refreshableJob.ExecutionState = Core.ExecutionState.Started;
    445447        }
  • stable/HeuristicLab.Clients.Hive/3.3/HiveTasks/OptimizerHiveTask.cs

    r14186 r15262  
    316316    public override void AddChildHiveTask(HiveTask hiveTask) {
    317317      base.AddChildHiveTask(hiveTask);
    318       var optimizerHiveJob = (OptimizerHiveTask)hiveTask;
     318      var optimizerHiveTask = (OptimizerHiveTask)hiveTask;
    319319      syncTasksWithOptimizers = false;
    320       if (this.ItemTask != null && optimizerHiveJob.ItemTask != null) {
    321         // if task is in state Paused, it has to preserve its ResultCollection, which is cleared when a optimizer is added to an experiment
    322         OptimizerTask optimizerJobClone = null;
    323         if (optimizerHiveJob.Task.State == TaskState.Paused) {
    324           optimizerJobClone = (OptimizerTask)optimizerHiveJob.ItemTask.Clone();
    325         }
     320      if (this.ItemTask != null && optimizerHiveTask.ItemTask != null) {
     321        OptimizerTask optimizerTaskClone = (OptimizerTask)optimizerHiveTask.ItemTask.Clone();
    326322
    327323        if (this.ItemTask.Item is Optimization.Experiment) {
    328           if (!this.ItemTask.OptimizerAsExperiment.Optimizers.Contains(optimizerHiveJob.ItemTask.Item)) {
    329             UpdateOptimizerInExperiment(this.ItemTask.OptimizerAsExperiment, optimizerHiveJob.ItemTask);
     324          if (!this.ItemTask.OptimizerAsExperiment.Optimizers.Contains(optimizerHiveTask.ItemTask.Item)) {
     325            UpdateOptimizerInExperiment(this.ItemTask.OptimizerAsExperiment, optimizerHiveTask.ItemTask);
    330326          }
    331327        } else if (this.ItemTask.Item is Optimization.BatchRun) {
    332           UpdateOptimizerInBatchRun(this.ItemTask.OptimizerAsBatchRun, optimizerHiveJob.ItemTask);
    333         }
    334 
    335         if (optimizerHiveJob.Task.State == TaskState.Paused) {
    336           optimizerHiveJob.ItemTask = optimizerJobClone;
    337         }
     328          UpdateOptimizerInBatchRun(this.ItemTask.OptimizerAsBatchRun, optimizerHiveTask.ItemTask);
     329        }
     330
     331        optimizerHiveTask.syncTasksWithOptimizers = false;
     332        optimizerHiveTask.ItemTask = optimizerTaskClone;
     333        optimizerHiveTask.syncTasksWithOptimizers = true;
    338334      }
    339335      syncTasksWithOptimizers = true;
  • stable/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs

    r14186 r15262  
    304304        }
    305305        GC.Collect(); // force GC, because .NET is too lazy here (deserialization takes a lot of memory)
    306         if (AllJobsFinished()) {
    307           this.ExecutionState = Core.ExecutionState.Stopped;
     306        if (IsFinished()) {
     307          ExecutionState = ExecutionState.Stopped;
    308308          StopResultPolling();
     309        } else if (IsPaused()) {
     310          ExecutionState = ExecutionState.Paused;
     311          StopResultPolling();
     312        } else {
     313          ExecutionState = ExecutionState.Started;
    309314        }
    310315        UpdateTotalExecutionTime();
     
    330335      job.FinishedCount = jobs.Count(j => j.Task.State == TaskState.Finished);
    331336      OnJobStatisticsChanged();
    332     }
    333 
    334     public bool AllJobsFinished() {
    335       return this.GetAllHiveTasks().All(j => (j.Task.State == TaskState.Finished
    336                                                    || j.Task.State == TaskState.Aborted
    337                                                    || j.Task.State == TaskState.Failed)
    338                                                    && !j.IsDownloading);
    339337    }
    340338
     
    513511          this.RefreshAutomatically = false;
    514512          StopResultPolling();
     513        } else if (IsPaused()) {
     514          this.executionState = Core.ExecutionState.Paused;
     515          this.RefreshAutomatically = false;
     516          StopResultPolling();
    515517        } else {
    516518          this.RefreshAutomatically = true;
     
    527529      this.OnStateLogListChanged();
    528530
    529       if (this.ExecutionState != ExecutionState.Stopped) {
     531      if (this.ExecutionState != ExecutionState.Stopped && this.ExecutionState != ExecutionState.Paused) {
    530532        this.RefreshAutomatically = true;
    531533      }
     
    584586
    585587    public bool IsFinished() {
    586       return HiveTasks != null
    587         && HiveTasks.All(x => x.Task.DateFinished.HasValue && x.Task.DateCreated.HasValue);
     588      var tasks = GetAllHiveTasks();
     589      return tasks.All(x => x.Task.State == TaskState.Finished
     590                            || x.Task.State == TaskState.Aborted
     591                            || x.Task.State == TaskState.Failed);
     592    }
     593
     594    public bool IsPaused() {
     595      var tasks = GetAllHiveTasks().Where(x => !x.Task.IsParentTask);
     596      return tasks.All(x => x.Task.State != TaskState.Waiting
     597                            && x.Task.State != TaskState.Transferring
     598                            && x.Task.State != TaskState.Calculating)
     599             && tasks.Any(x => x.Task.State == TaskState.Paused);
    588600    }
    589601
Note: See TracChangeset for help on using the changeset viewer.