Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/21/11 17:29:56 (14 years ago)
Author:
ascheibe
Message:

#1233

  • some Admin UI bugfixes

Slave:

  • fixed bug when Pause is called immediately after Calculate
  • send exceptions when something goes wrong in Pause or Stop
Location:
branches/HeuristicLab.Hive-3.4/sources
Files:
1 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administration/3.4/Views/ResourcesView.cs

    r6454 r6464  
    3838    }
    3939
     40    private const string ungroupedGroupName = "UNGROUPED";
     41    private const int slaveImageIndex = 0;
     42    private const int slaveGroupImageIndex = 1;
     43
     44
    4045    public ResourcesView() {
    4146      InitializeComponent();
     
    6873
    6974        //rebuild
    70         TreeNode ungrp = new TreeNode("UNGROUPED");
    71         ungrp.ImageIndex = treeSlaveGroup.ImageList.Images.Count - 1;
     75        TreeNode ungrp = new TreeNode(ungroupedGroupName);
     76        ungrp.ImageIndex = slaveGroupImageIndex;
    7277        ungrp.SelectedImageIndex = ungrp.ImageIndex;
    7378        var newGroup = new SlaveGroup();
    74         newGroup.Name = "UNGROUPED";
     79        newGroup.Name = ungroupedGroupName;
    7580        newGroup.Id = Guid.NewGuid();
    7681        newGroup.Description = "Contains slaves which are in no group";
     
    8287            if (g.ParentResourceId == null) {
    8388              TreeNode tn = new TreeNode();
    84               tn.ImageIndex = treeSlaveGroup.ImageList.Images.Count - 1;
     89              tn.ImageIndex = slaveGroupImageIndex;
    8590              tn.SelectedImageIndex = tn.ImageIndex;
    8691
     
    8994
    9095              BuildSlaveGroupTree(g, tn);
     96              tn.ExpandAll();
    9197              treeSlaveGroup.Nodes.Add(tn);
    9298            }
     
    94100            if (g.ParentResourceId == null) {
    95101              var stn = new TreeNode(g.Name);
    96               stn.ImageIndex = 0;
     102              stn.ImageIndex = slaveImageIndex;
    97103              stn.SelectedImageIndex = stn.ImageIndex;
    98104              stn.Tag = g;
     
    101107          }
    102108        }
     109        ungrp.ExpandAll();
    103110        treeSlaveGroup.Nodes.Add(ungrp);
    104111      }
     
    111118          stn.ImageIndex = 0;
    112119        } else if (r is SlaveGroup) {
    113           stn.ImageIndex = treeSlaveGroup.ImageList.Images.Count - 1;
     120          stn.ImageIndex = slaveGroupImageIndex;
    114121        }
    115122        stn.SelectedImageIndex = stn.ImageIndex;
     
    204211
    205212        if (destNode.TreeView == newNode.TreeView) {
     213          if (destNode.Text == ungroupedGroupName || (destNode.Parent != null && destNode.Parent.Text == ungroupedGroupName)) {
     214            MessageBox.Show(String.Format("You can't drag items to the {0} group.{1}This group only contains slaves which haven't yet been assigned to a real group.",
     215              ungroupedGroupName, Environment.NewLine), "HeuristicLab Hive Administration", MessageBoxButtons.OK, MessageBoxIcon.Information);
     216            return;
     217          }
     218
    206219          SlaveGroup sgrp = null;
    207220          if (destNode.Tag != null && destNode.Tag is SlaveGroup) {
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administration/3.4/Views/SlaveView.Designer.cs

    r6373 r6464  
    6969      this.txtSlaveState.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    7070                  | System.Windows.Forms.AnchorStyles.Right)));
     71      this.txtSlaveState.Enabled = false;
    7172      this.txtSlaveState.Location = new System.Drawing.Point(120, 186);
    7273      this.txtSlaveState.Name = "txtSlaveState";
     
    7879      this.txtOS.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    7980                  | System.Windows.Forms.AnchorStyles.Right)));
     81      this.txtOS.Enabled = false;
    8082      this.txtOS.Location = new System.Drawing.Point(120, 160);
    8183      this.txtOS.Name = "txtOS";
     
    105107      this.txtDetailsDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    106108                  | System.Windows.Forms.AnchorStyles.Right)));
     109      this.txtDetailsDescription.Enabled = false;
    107110      this.txtDetailsDescription.Location = new System.Drawing.Point(120, 56);
    108111      this.txtDetailsDescription.Name = "txtDetailsDescription";
     
    127130      this.txtName.Size = new System.Drawing.Size(249, 20);
    128131      this.txtName.TabIndex = 21;
    129       this.txtName.TextChanged += new System.EventHandler(this.txtName_TextChanged_1);
     132      this.txtName.TextChanged += new System.EventHandler(this.txtName_TextChanged);
    130133      //
    131134      // txtCPU
     
    133136      this.txtCPU.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    134137                  | System.Windows.Forms.AnchorStyles.Right)));
     138      this.txtCPU.Enabled = false;
    135139      this.txtCPU.Location = new System.Drawing.Point(120, 82);
    136140      this.txtCPU.Name = "txtCPU";
     
    142146      this.txtMemory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    143147                  | System.Windows.Forms.AnchorStyles.Right)));
     148      this.txtMemory.Enabled = false;
    144149      this.txtMemory.Location = new System.Drawing.Point(120, 108);
    145150      this.txtMemory.Name = "txtMemory";
     
    151156      this.txtLastHeartbeat.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    152157                  | System.Windows.Forms.AnchorStyles.Right)));
     158      this.txtLastHeartbeat.Enabled = false;
    153159      this.txtLastHeartbeat.Location = new System.Drawing.Point(120, 212);
    154160      this.txtLastHeartbeat.Name = "txtLastHeartbeat";
     
    205211      this.txtFreeMemory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    206212                  | System.Windows.Forms.AnchorStyles.Right)));
     213      this.txtFreeMemory.Enabled = false;
    207214      this.txtFreeMemory.Location = new System.Drawing.Point(120, 134);
    208215      this.txtFreeMemory.Name = "txtFreeMemory";
     
    214221      this.txtId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    215222                  | System.Windows.Forms.AnchorStyles.Right)));
     223      this.txtId.Enabled = false;
    216224      this.txtId.Location = new System.Drawing.Point(120, 30);
    217225      this.txtId.Name = "txtId";
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administration/3.4/Views/SlaveView.cs

    r6373 r6464  
    6666          Slave ct = (Slave)Content;
    6767          txtName.Text = ct.Name;
    68           txtCPU.Text = ct.Cores.ToString() + " Cores @ " + ct.CpuSpeed.ToString() + " Mhz, Arch.: " + ct.CpuArchitecture.ToString();
     68          txtCPU.Text = string.Format("{0} Cores @ {1} Mhz, Arch.: {2}", ct.Cores.ToString(), ct.CpuSpeed.ToString(), ct.CpuArchitecture.ToString());
    6969          txtDetailsDescription.Text = ct.Description;
    7070          txtMemory.Text = ct.Memory.ToString();
     
    7878          txtName.Text = ct.Name;
    7979          ShowSlaveUI(false);
    80         } else
     80        } else {
    8181          throw new Exception("Unknown Resource in SlaveView");
    82 
     82        }
    8383      }
    84     }
    85 
    86     void txtName_TextChanged(object sender, EventArgs e) {
    87       throw new NotImplementedException();
    8884    }
    8985
     
    105101      txtFreeMemory.Visible = show;
    106102      txtId.Visible = show;
     103      txtName.Enabled = !show;
    107104    }
    108105
     
    111108    }
    112109
    113     private void txtName_TextChanged_1(object sender, EventArgs e) {
     110    private void txtName_TextChanged(object sender, EventArgs e) {
    114111      if (Content != null && Content is SlaveGroup) {
    115112        Content.Name = txtName.Text;
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Core.cs

    r6456 r6464  
    299299        throw;
    300300      }
     301      catch (AppDomainNotCreatedException) {
     302        throw;
     303      }
    301304    }
    302305
     
    394397      heartbeatManager.AwakeHeartBeatThread();
    395398      clientCom.LogMessage(string.Format("Exception occured for job {0}: {1}", e.Value.JobId, e.Value2.ToString()));
     399      wcfService.UpdateJobState(e.Value.JobId, JobState.Waiting, e.Value2.ToString());
    396400    }
    397401
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Executor.cs

    r6456 r6464  
    3333  public class Executor : MarshalByRefObject, IDisposable {
    3434    private bool wasJobAborted = false;
    35     private Semaphore pauseStopSem = new Semaphore(0, 1);
    36     private Semaphore startJobSem = new Semaphore(0, 1);
    37     private Semaphore jobStartedSem = new Semaphore(0, 1); // make pause or stop wait until start is finished
     35    private AutoResetEvent pauseStopSem = new AutoResetEvent(false);
     36    private AutoResetEvent startJobSem = new AutoResetEvent(false); // block start method call
     37    private AutoResetEvent jobStartedSem = new AutoResetEvent(false); // make pause or stop wait until start is finished
    3838    private ExecutorQueue executorQueue;
    3939    private bool jobDataInvalid = false; // if true, the jobdata is not sent when the job is failed
     
    4747    public bool IsPausing { get; set; }
    4848
    49     private Exception currentException;
    50     public String CurrentException {
     49    public Exception CurrentException;
     50    public String CurrentExceptionStr {
    5151      get {
    52         if (currentException != null) {
    53           return currentException.ToString();
     52        if (CurrentException != null) {
     53          return CurrentException.ToString();
    5454        } else {
    5555          return string.Empty;
     
    8484
    8585        job.Start();
    86         if (!jobStartedSem.WaitOne(TimeSpan.FromSeconds(Settings.Default.ExecutorSemTimeouts))) {
     86        if (!startJobSem.WaitOne(Settings.Default.ExecutorSemTimeouts)) {
    8787          jobDataInvalid = true;
    8888          throw new TimeoutException("Timeout when starting the job. JobStarted event was not fired.");
    8989        }
    90         jobStartedSem.Release();
    9190      }
    9291      catch (Exception e) {
    93         this.currentException = e;
     92        this.CurrentException = e;
    9493        Job_JobFailed(this, new EventArgs<Exception>(e));
     94      }
     95      finally {
     96        jobStartedSem.Set();
    9597      }
    9698    }
     
    101103      jobStartedSem.WaitOne(Settings.Default.ExecutorSemTimeouts);
    102104      if (job == null) {
    103         currentException = new Exception("Pausing job " + this.JobId + ": Job is null");
     105        CurrentException = new Exception("Pausing job " + this.JobId + ": Job is null");
     106        executorQueue.AddMessage(ExecutorMessageType.ExceptionOccured);
    104107        return;
    105108      }
     
    112115        }
    113116        catch (Exception ex) {
    114           currentException = new Exception("Error pausing job " + this.JobId + ": " + ex.ToString());
     117          CurrentException = new Exception("Error pausing job " + this.JobId + ": " + ex.ToString());
     118          executorQueue.AddMessage(ExecutorMessageType.ExceptionOccured);
    115119        }
    116120      }
     
    122126      jobStartedSem.WaitOne(Settings.Default.ExecutorSemTimeouts);
    123127      if (job == null) {
    124         currentException = new Exception("Stopping job " + this.JobId + ": Job is null");
     128        CurrentException = new Exception("Stopping job " + this.JobId + ": Job is null");
     129        executorQueue.AddMessage(ExecutorMessageType.ExceptionOccured);
    125130      }
    126131      wasJobAborted = true;
     
    132137        }
    133138        catch (Exception ex) {
    134           currentException = new Exception("Error stopping job " + this.JobId + ": " + ex.ToString());
     139          CurrentException = new Exception("Error stopping job " + this.JobId + ": " + ex.ToString());
     140          executorQueue.AddMessage(ExecutorMessageType.ExceptionOccured);
    135141        }
    136142      }
     
    155161      IsStopping = true;
    156162      EventArgs<Exception> ex = (EventArgs<Exception>)e;
    157       currentException = ex.Value;
    158 
     163      CurrentException = ex.Value;
    159164      executorQueue.AddMessage(ExecutorMessageType.JobFailed);
    160165    }
     
    162167    private void Job_JobStopped(object sender, EventArgs e) {
    163168      IsStopping = true;
    164       if (wasJobAborted)
    165         pauseStopSem.Release();
    166 
     169      if (wasJobAborted) {
     170        pauseStopSem.Set();
     171      }
    167172      executorQueue.AddMessage(ExecutorMessageType.JobStopped);
    168173    }
     
    170175    private void Job_JobPaused(object sender, EventArgs e) {
    171176      IsPausing = true;
    172       pauseStopSem.Release();
     177      pauseStopSem.Set();
    173178      executorQueue.AddMessage(ExecutorMessageType.JobPaused);
    174179    }
    175180
    176181    private void Job_JobStarted(object sender, EventArgs e) {
    177       jobStartedSem.Release();
     182      startJobSem.Set();
    178183      executorQueue.AddMessage(ExecutorMessageType.JobStarted);
    179184    }
     
    190195          //send empty job and save exception
    191196          jobData.Data = PersistenceUtil.Serialize(new JobData());
    192           if (currentException == null) {
    193             currentException = new Exception("Job with id " + this.JobId + " is null, sending empty job");
     197          if (CurrentException == null) {
     198            CurrentException = new Exception("Job with id " + this.JobId + " is null, sending empty job");
    194199          }
    195200        } else {
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/ExecutorMessage.cs

    r6371 r6464  
    3030    JobStopped,
    3131    JobFailed,
    32     StopExecutorMonitoringThread
     32    StopExecutorMonitoringThread,
     33    ExceptionOccured
    3334  }
    3435
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Manager/HeartbeatManager.cs

    r6456 r6464  
    4040
    4141    public HeartbeatManager() {
    42       Interval = new TimeSpan(0, 0, Settings.Default.HeartbeatInterval);
     42      Interval = Settings.Default.HeartbeatInterval;
    4343    }
    4444
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Properties/Settings.Designer.cs

    r6456 r6464  
    2626        [global::System.Configuration.UserScopedSettingAttribute()]
    2727        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    28         [global::System.Configuration.DefaultSettingValueAttribute("10")]
    29         public int HeartbeatInterval {
    30             get {
    31                 return ((int)(this["HeartbeatInterval"]));
     28        [global::System.Configuration.DefaultSettingValueAttribute("00:00:10")]
     29        public global::System.TimeSpan HeartbeatInterval {
     30            get {
     31                return ((global::System.TimeSpan)(this["HeartbeatInterval"]));
    3232            }
    3333            set {
     
    182182        [global::System.Configuration.UserScopedSettingAttribute()]
    183183        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    184         [global::System.Configuration.DefaultSettingValueAttribute("50")]
    185         public int DirOpSleepTime {
    186             get {
    187                 return ((int)(this["DirOpSleepTime"]));
     184        [global::System.Configuration.DefaultSettingValueAttribute("00:00:01")]
     185        public global::System.TimeSpan DirOpSleepTime {
     186            get {
     187                return ((global::System.TimeSpan)(this["DirOpSleepTime"]));
    188188            }
    189189            set {
     
    206206        [global::System.Configuration.UserScopedSettingAttribute()]
    207207        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    208         [global::System.Configuration.DefaultSettingValueAttribute("1000")]
    209         public int PluginDeletionTimeout {
    210             get {
    211                 return ((int)(this["PluginDeletionTimeout"]));
     208        [global::System.Configuration.DefaultSettingValueAttribute("00:00:01")]
     209        public global::System.TimeSpan PluginDeletionTimeout {
     210            get {
     211                return ((global::System.TimeSpan)(this["PluginDeletionTimeout"]));
    212212            }
    213213            set {
     
    218218        [global::System.Configuration.UserScopedSettingAttribute()]
    219219        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    220         [global::System.Configuration.DefaultSettingValueAttribute("45")]
    221         public int ExecutorSemTimeouts {
    222             get {
    223                 return ((int)(this["ExecutorSemTimeouts"]));
     220        [global::System.Configuration.DefaultSettingValueAttribute("00:00:46")]
     221        public global::System.TimeSpan ExecutorSemTimeouts {
     222            get {
     223                return ((global::System.TimeSpan)(this["ExecutorSemTimeouts"]));
    224224            }
    225225            set {
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Properties/Settings.settings

    r6456 r6464  
    33  <Profiles />
    44  <Settings>
    5     <Setting Name="HeartbeatInterval" Type="System.Int32" Scope="User">
    6       <Value Profile="(Default)">10</Value>
     5    <Setting Name="HeartbeatInterval" Type="System.TimeSpan" Scope="User">
     6      <Value Profile="(Default)">00:00:10</Value>
    77    </Setting>
    88    <Setting Name="LastUsedFileName" Type="System.String" Scope="User">
     
    4242      <Value Profile="(Default)">3</Value>
    4343    </Setting>
    44     <Setting Name="DirOpSleepTime" Type="System.Int32" Scope="User">
    45       <Value Profile="(Default)">50</Value>
     44    <Setting Name="DirOpSleepTime" Type="System.TimeSpan" Scope="User">
     45      <Value Profile="(Default)">00:00:01</Value>
    4646    </Setting>
    4747    <Setting Name="PluginDeletionRetries" Type="System.Int32" Scope="User">
    4848      <Value Profile="(Default)">5</Value>
    4949    </Setting>
    50     <Setting Name="PluginDeletionTimeout" Type="System.Int32" Scope="User">
    51       <Value Profile="(Default)">1000</Value>
     50    <Setting Name="PluginDeletionTimeout" Type="System.TimeSpan" Scope="User">
     51      <Value Profile="(Default)">00:00:01</Value>
    5252    </Setting>
    53     <Setting Name="ExecutorSemTimeouts" Type="System.Int32" Scope="User">
    54       <Value Profile="(Default)">45</Value>
     53    <Setting Name="ExecutorSemTimeouts" Type="System.TimeSpan" Scope="User">
     54      <Value Profile="(Default)">00:00:46</Value>
    5555    </Setting>
    5656    <Setting Name="QueuesMaxThreads" Type="System.Int32" Scope="User">
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/SlaveJob.cs

    r6456 r6464  
    202202          case ExecutorMessageType.JobFailed:
    203203            executorMonitoringRun = false;
    204             OnJobFailed(new JobFailedException(executor.CurrentException));
     204            OnJobFailed(new JobFailedException(executor.CurrentExceptionStr));
    205205            DisposeAppDomain();
    206206            break;
     
    208208          case ExecutorMessageType.StopExecutorMonitoringThread:
    209209            executorMonitoringRun = false;
    210             return;
     210            break;
     211
     212          case ExecutorMessageType.ExceptionOccured:
     213            executorMonitoringRun = false;
     214            DisposeAppDomain();
     215            if (executor.CurrentException != null) {
     216              OnExceptionOccured(executor.CurrentException);
     217            } else {
     218              OnExceptionOccured(new Exception(string.Format("Unknow exception occured in Executor for job {0}", JobId)));
     219            }
     220            break;
    211221        }
    212222      }
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/app_ascheibe.config

    r6456 r6464  
    1313    <HeuristicLab.Clients.Hive.SlaveCore.Properties.Settings>
    1414      <setting name="HeartbeatInterval" serializeAs="String">
    15         <value>10</value>
     15        <value>00:00:10</value>
    1616      </setting>
    1717      <setting name="LastUsedFileName" serializeAs="String">
     
    5252      </setting>
    5353      <setting name="DirOpSleepTime" serializeAs="String">
    54         <value>50</value>
     54        <value>00:00:01</value>
    5555      </setting>
    5656      <setting name="PluginDeletionRetries" serializeAs="String">
     
    5858      </setting>
    5959      <setting name="PluginDeletionTimeout" serializeAs="String">
    60         <value>1000</value>
     60        <value>00:00:01</value>
    6161      </setting>
    6262      <setting name="ExecutorSemTimeouts" serializeAs="String">
    63         <value>45</value>
     63        <value>00:00:46</value>
    6464      </setting>
    6565      <setting name="QueuesMaxThreads" serializeAs="String">
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/app_f005pc.config

    r6456 r6464  
    1313    <HeuristicLab.Clients.Hive.SlaveCore.Properties.Settings>
    1414      <setting name="HeartbeatInterval" serializeAs="String">
    15         <value>10</value>
     15        <value>00:00:10</value>
    1616      </setting>
    1717      <setting name="LastUsedFileName" serializeAs="String">
     
    5252      </setting>
    5353      <setting name="DirOpSleepTime" serializeAs="String">
    54         <value>50</value>
     54        <value>00:00:01</value>
    5555      </setting>
    5656      <setting name="PluginDeletionRetries" serializeAs="String">
     
    5858      </setting>
    5959      <setting name="PluginDeletionTimeout" serializeAs="String">
    60         <value>1000</value>
     60        <value>00:00:01</value>
    6161      </setting>
    6262      <setting name="ExecutorSemTimeouts" serializeAs="String">
    63         <value>45</value>
     63        <value>00:00:46</value>
    6464      </setting>
    6565      <setting name="QueuesMaxThreads" serializeAs="String">
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/app_services.config

    r6456 r6464  
    1313    <HeuristicLab.Clients.Hive.SlaveCore.Properties.Settings>
    1414      <setting name="HeartbeatInterval" serializeAs="String">
    15         <value>10</value>
     15        <value>00:00:10</value>
    1616      </setting>
    1717      <setting name="LastUsedFileName" serializeAs="String">
     
    5252      </setting>
    5353      <setting name="DirOpSleepTime" serializeAs="String">
    54         <value>50</value>
     54        <value>00:00:01</value>
    5555      </setting>
    5656      <setting name="PluginDeletionRetries" serializeAs="String">
     
    5858      </setting>
    5959      <setting name="PluginDeletionTimeout" serializeAs="String">
    60         <value>1000</value>
     60        <value>00:00:01</value>
    6161      </setting>
    6262      <setting name="ExecutorSemTimeouts" serializeAs="String">
    63         <value>45</value>
     63        <value>00:00:46</value>
    6464      </setting>
    6565      <setting name="QueuesMaxThreads" serializeAs="String">
Note: See TracChangeset for help on using the changeset viewer.