Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/16/11 00:06:54 (13 years ago)
Author:
cneumuel
Message:

#1233

  • created events when statelog changed
  • fixed memory leak in hiveengine
  • extended timeout for long running transactions and database contexts (when jobdata is stored)
  • replaced random guids in database with sequential guids for performance reasons
  • minor fixes and cleanups
Location:
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HeuristicLab.Clients.Hive-3.4.csproj

    r6373 r6419  
    115115    <Compile Include="Jobs\ItemJob.cs" />
    116116    <Compile Include="RefreshableHiveExperiment.cs" />
     117    <Compile Include="StateLogList.cs" />
     118    <Compile Include="StateLogListList.cs" />
    117119    <Compile Include="ThreadSafeLog.cs" />
    118120    <None Include="app_f005pc.config" />
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HiveClient.cs

    r6407 r6419  
    297297          hiveJob.Job.Id = service.AddJob(hiveJob.Job, jobData, groups.ToList());
    298298        }
    299       }, -1, "Failed to add job");
     299      }, -1, "Failed to add job", log);
    300300
    301301      foreach (HiveJob child in hiveJob.ChildHiveJobs) {
     
    391391    /// If repetitions is -1, it is repeated infinitely.
    392392    /// </summary>
    393     public static void TryAndRepeat(Action action, int repetitions, string errorMessage) {
     393    public static void TryAndRepeat(Action action, int repetitions, string errorMessage, ILog log = null) {
    394394      while (true) {
    395395        try { action(); return; }
    396396        catch (Exception e) {
    397           if (repetitions == 0)
    398             throw new HiveException(errorMessage, e);
     397          if (repetitions == 0) throw new HiveException(errorMessage, e);
     398          if (log != null) log.LogMessage(string.Format("{0}: {1} - will try again!", errorMessage, e.ToString()));
    399399          repetitions--;
    400400        }
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HiveJobs/EngineHiveJob.cs

    r6381 r6419  
    7171      return jobData;
    7272    }
     73
     74    public override void ClearData() {
     75      base.ClearData();
     76      this.ItemJob.InitialOperation = null;
     77    }
    7378  }
    7479}
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HiveJobs/HiveJob.cs

    r6381 r6419  
    123123    protected bool syncJobsWithOptimizers = true;
    124124
     125    public StateLogList StateLog {
     126      get { return new StateLogList(this.job.StateLog); }
     127    }
     128
     129    public StateLogListList ChildStateLogList {
     130      get { return new StateLogListList(this.childHiveJobs.Select(x => x.StateLog)); }
     131    }
     132
    125133    #region Constructors and Cloning
    126134    public HiveJob() {
     
    234242        OnToStringChanged();
    235243        OnItemImageChanged();
     244        OnStateLogChanged();
    236245      }
    237246    }
     
    255264    }
    256265
    257     #region Events
     266    #region Event Handler
    258267    public event EventHandler JobChanged;
    259268    private void OnJobChanged() {
     
    278287    private void OnIsFinishedJobDownloadedChanged() {
    279288      var handler = IsFinishedJobDownloadedChanged;
     289      if (handler != null) handler(this, EventArgs.Empty);
     290    }
     291
     292    public event EventHandler StateLogChanged;
     293    private void OnStateLogChanged() {
     294      var handler = StateLogChanged;
    280295      if (handler != null) handler(this, EventArgs.Empty);
    281296    }
     
    371386    public event CollectionItemsChangedEventHandler<IItemTree<HiveJob>> CollectionReset;
    372387    private void OnCollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<HiveJob>> e) {
     388      foreach (var item in e.Items) {
     389        item.Value.StateLogChanged -= new EventHandler(ChildHiveJob_StateLogChanged);
     390      }
    373391      var handler = CollectionReset;
    374392      if (handler != null) handler(this, ToCollectionItemsChangedEventArgs(e));
     
    377395    public event CollectionItemsChangedEventHandler<IItemTree<HiveJob>> ItemsAdded;
    378396    private void OnItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<HiveJob>> e) {
     397      foreach (var item in e.Items) {
     398        item.Value.StateLogChanged += new EventHandler(ChildHiveJob_StateLogChanged);
     399      }
    379400      var handler = ItemsAdded;
    380401      if (handler != null) handler(this, ToCollectionItemsChangedEventArgs(e));
     
    383404    public event CollectionItemsChangedEventHandler<IItemTree<HiveJob>> ItemsRemoved;
    384405    private void OnItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<HiveJob>> e) {
     406      foreach (var item in e.Items) {
     407        item.Value.StateLogChanged -= new EventHandler(ChildHiveJob_StateLogChanged);
     408      }
    385409      var handler = ItemsRemoved;
    386410      if (handler != null) handler(this, ToCollectionItemsChangedEventArgs(e));
     
    389413    private static CollectionItemsChangedEventArgs<IItemTree<HiveJob>> ToCollectionItemsChangedEventArgs(CollectionItemsChangedEventArgs<IndexedItem<HiveJob>> e) {
    390414      return new CollectionItemsChangedEventArgs<IItemTree<HiveJob>>(e.Items.Select(x => x.Value), e.OldItems == null ? null : e.OldItems.Select(x => x.Value));
     415    }
     416
     417    private void ChildHiveJob_StateLogChanged(object sender, EventArgs e) {
     418      OnStateLogChanged();
    391419    }
    392420    #endregion
     
    443471    /// Delete ItemJob
    444472    /// </summary>
    445     public void ClearData() {
     473    public virtual void ClearData() {
    446474      this.ItemJob.Item = null;
    447475    }
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Jobs/EngineJob.cs

    r6200 r6419  
    11using System;
    2 using System.Collections.Generic;
    32using System.Drawing;
    43using HeuristicLab.Common;
    54using HeuristicLab.Core;
    6 using HeuristicLab.Hive;
    75using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    86
     
    6563    public override void Stop() {
    6664      Item.Stop();
    67     }
    68    
    69     public override void Resume(IEnumerable<IJob> childJobs) {
    70       throw new NotImplementedException();
    7165    }
    7266
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Jobs/ItemJob.cs

    r6381 r6419  
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Drawing;
    2524using HeuristicLab.Common;
     
    113112    public abstract void Stop();
    114113
    115     public abstract void Resume(IEnumerable<IJob> childJobs);
    116 
    117114    public event EventHandler JobStarted;
    118115    protected virtual void OnJobStarted() {
     
    139136    }
    140137
    141     public event EventHandler<EventArgs<IJob>> NewChildJob;
    142     protected virtual void OnNewChildJob(IJob job) {
    143       EventHandler<EventArgs<IJob>> handler = NewChildJob;
    144       if (handler != null) handler(this, new EventArgs<IJob>(job));
    145     }
    146 
    147     public event EventHandler WaitForChildJobs;
    148     protected virtual void OnWaitForChildJobs() {
    149       EventHandler handler = WaitForChildJobs;
    150       if (handler != null) handler(this, EventArgs.Empty);
    151     }
    152 
    153     public event EventHandler DeleteChildJobs;
    154     protected virtual void OnDeleteChildJobs() {
    155       EventHandler handler = DeleteChildJobs;
    156       if (handler != null) handler(this, EventArgs.Empty);
    157     }
    158 
    159138    public event EventHandler ComputeInParallelChanged;
    160139    protected virtual void OnComputeInParallelChanged() {
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Jobs/OptimizerJob.cs

    r6381 r6419  
    113113    public override void Stop() {
    114114      Item.Stop();
    115     }
    116 
    117     public override void Resume(IEnumerable<IJob> childJobs) {
    118       OnJobStopped();
    119115    }
    120116    #endregion
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/RefreshableHiveExperiment.cs

    r6381 r6419  
    8888    }
    8989    private static object logLocker = new object();
    90    
    9190
    9291    #region Constructors and Cloning
     
    220219      UpdateTotalExecutionTime();
    221220      UpdateStatistics();
     221      OnStateLogListChanged();
    222222    }
    223223
     
    269269    #endregion
    270270
     271    #region HiveExperiment Events
    271272    private void RegisterHiveExperimentEvents() {
    272273      hiveExperiment.HiveJobsChanged += new EventHandler(hiveExperiment_HiveJobsChanged);
     
    296297      }
    297298    }
    298 
    299     #region Events
     299    #endregion
     300
     301    #region Event Handler
    300302    public event EventHandler RefreshAutomaticallyChanged;
    301303    private void OnRefreshAutomaticallyChanged() {
     
    358360      if (handler != null) handler(this, new EventArgs<Exception>(exception));
    359361    }
     362
     363    public event EventHandler StateLogListChanged;
     364    private void OnStateLogListChanged() {
     365      var handler = StateLogListChanged;
     366      if (handler != null) handler(this, EventArgs.Empty);
     367    }
    360368    #endregion
    361369
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperiment.cs

    r6381 r6419  
    2424using System.ComponentModel;
    2525using System.Linq;
     26using HeuristicLab.Collections;
    2627using HeuristicLab.Common;
    2728using HeuristicLab.Core;
     
    6869      set {
    6970        if (hiveJobs != value) {
     71          if (hiveJobs != null) DeregisterHiveJobsEvents();
    7072          hiveJobs = value;
     73          if (hiveJobs != null) RegisterHiveJobsEvents();
    7174          OnHiveJobsChanged();
    7275        }
     
    8992      get { return progress; }
    9093      set { this.progress = value; }
     94    }
     95
     96    public StateLogListList StateLogList {
     97      get { return new StateLogListList(this.GetAllHiveJobs().Select(x => x.StateLog)); }
    9198    }
    9299
     
    147154      if (handler != null) handler(this, EventArgs.Empty);
    148155    }
     156
     157    public event EventHandler<CollectionItemsChangedEventArgs<HiveJob>> HiveJobsAdded;
     158    private void OnHiveJobsAdded(CollectionItemsChangedEventArgs<HiveJob> e) {
     159      var handler = HiveJobsAdded;
     160      if (handler != null) handler(this, e);
     161    }
     162
     163    public event EventHandler<CollectionItemsChangedEventArgs<HiveJob>> HiveJobsRemoved;
     164    private void OnHiveJobsRemoved(CollectionItemsChangedEventArgs<HiveJob> e) {
     165      var handler = HiveJobsRemoved;
     166      if (handler != null) handler(this, e);
     167    }
     168
     169    public event EventHandler<CollectionItemsChangedEventArgs<HiveJob>> HiveJobsReset;
     170    private void OnHiveJobsReset(CollectionItemsChangedEventArgs<HiveJob> e) {
     171      var handler = HiveJobsReset;
     172      if (handler != null) handler(this, e);
     173    }
     174
     175    public event EventHandler StateLogListChanged;
     176    private void OnStateLogListChanged() {
     177      var handler = StateLogListChanged;
     178      if (handler != null) handler(this, EventArgs.Empty);
     179    }
     180    #endregion
     181
     182    #region HiveJobs Events
     183    private void RegisterHiveJobsEvents() {
     184      this.hiveJobs.ItemsAdded += new CollectionItemsChangedEventHandler<HiveJob>(hiveJobs_ItemsAdded);
     185      this.hiveJobs.ItemsRemoved += new CollectionItemsChangedEventHandler<HiveJob>(hiveJobs_ItemsRemoved);
     186      this.hiveJobs.CollectionReset += new CollectionItemsChangedEventHandler<HiveJob>(hiveJobs_CollectionReset);
     187    }
     188
     189    private void DeregisterHiveJobsEvents() {
     190      this.hiveJobs.ItemsAdded -= new CollectionItemsChangedEventHandler<HiveJob>(hiveJobs_ItemsAdded);
     191      this.hiveJobs.ItemsRemoved -= new CollectionItemsChangedEventHandler<HiveJob>(hiveJobs_ItemsRemoved);
     192      this.hiveJobs.CollectionReset -= new CollectionItemsChangedEventHandler<HiveJob>(hiveJobs_CollectionReset);
     193    }
     194
     195    private void hiveJobs_CollectionReset(object sender, CollectionItemsChangedEventArgs<HiveJob> e) {
     196      foreach (var item in e.Items) {
     197        item.StateLogChanged -= new EventHandler(item_StateLogChanged);
     198      }
     199      OnHiveJobsReset(e);
     200    }
     201
     202    private void hiveJobs_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<HiveJob> e) {
     203      foreach (var item in e.Items) {
     204        item.StateLogChanged -= new EventHandler(item_StateLogChanged);
     205      }
     206      OnHiveJobsRemoved(e);
     207    }
     208
     209    private void hiveJobs_ItemsAdded(object sender, CollectionItemsChangedEventArgs<HiveJob> e) {
     210      foreach (var item in e.Items) {
     211        item.StateLogChanged += new EventHandler(item_StateLogChanged);
     212      }
     213      OnHiveJobsAdded(e);
     214    }
     215   
     216    private void item_StateLogChanged(object sender, EventArgs e) {
     217      OnStateLogListChanged();
     218    }
    149219    #endregion
    150220
     
    171241
    172242    public IEnumerable<HiveJob> GetAllHiveJobs() {
     243      if (hiveJobs == null) return Enumerable.Empty<HiveJob>();
     244
    173245      var jobs = new List<HiveJob>();
    174246      foreach (HiveJob job in HiveJobs) {
Note: See TracChangeset for help on using the changeset viewer.