Changeset 5093


Ignore:
Timestamp:
12/13/10 14:13:15 (10 years ago)
Author:
cneumuel
Message:

#1260

  • moved all state-information into lifecycleManager
  • changed isolation level for transactions to ReadCommited
  • made currentlyFetching-status on slave more rubust
  • made LogServiceReader more rubust
Location:
branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln

    r5069 r5093  
    7575Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Hive.Slave.ExecutionEngine-3.3", "HeuristicLab.Hive.Slave.ExecutionEngine\3.3\HeuristicLab.Hive.Slave.ExecutionEngine-3.3.csproj", "{1605256A-1CB3-44AB-AAFF-577093EE5789}"
    7676EndProject
    77 Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "HiveWeb", "HiveWeb\Hive-3.3\", "{590AD383-846B-48FF-8D06-B0AA1B328102}"
     77Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Hive-3.3", "HiveWeb\Hive-3.3\", "{590AD383-846B-48FF-8D06-B0AA1B328102}"
    7878  ProjectSection(WebsiteProperties) = preProject
    7979    TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
     
    9393    Release.AspNetCompiler.FixedNames = "false"
    9494    Release.AspNetCompiler.Debug = "False"
    95     VWDPort = "3220"
     95    VWDPort = "39028"
    9696  EndProjectSection
    9797EndProject
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ApplicationConstants.cs

    r4914 r5093  
    3131    /// ReadUncommitted to minimize deadlocks.
    3232    /// </summary>
    33     public static System.Transactions.IsolationLevel ISOLATION_LEVEL_SCOPE = System.Transactions.IsolationLevel.ReadUncommitted;
     33    public static System.Transactions.IsolationLevel ISOLATION_LEVEL_SCOPE = System.Transactions.IsolationLevel.ReadCommitted;
    3434
    3535    public static int HEARTBEAT_MAX_DIF = 120; // value in seconds
    3636   
    37     public static int JOB_TIME_TO_LIVE = 5;
     37    public static int JOB_TIME_TO_LIVE = 20;
    3838
    3939    /// <summary>
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/ILifecycleManager.cs

    r5000 r5093  
    5050    event EventHandler Stopped;
    5151
    52     IEnumerable<PluginDescription> Plugins { get;}
     52    IEnumerable<PluginDescription> Plugins { get; }
     53
     54    Dictionary<Guid, DateTime> LastHeartbeats { get; }
     55
     56    Dictionary<Guid, int> NewAssignedJobs { get; }
     57
     58    Dictionary<Guid, int> PendingJobs { get; }
    5359
    5460    byte[] ConfigurationFile { get; }
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/HeuristicLab.Hive.ExperimentManager-3.3.csproj

    r5054 r5093  
    121121      <SubType>Designer</SubType>
    122122    </None>
     123    <None Include="f005pc.hagenberg.fhooe.at - app.config">
     124      <SubType>Designer</SubType>
     125    </None>
    123126    <None Include="HeuristicLabHiveExperimentManagerPlugin.cs.frame" />
    124127    <Compile Include="Exceptions\AddJobToHiveException.cs" />
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/app.config

    r5000 r5093  
    2929    </bindings>
    3030    <client>
    31       <endpoint address="net.tcp://localhost:9001/Hive/ClientService.svc" binding="netTcpBinding" bindingConfiguration="ClientTcpStreamedEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientTcpStreamedEndpoint">
     31      <endpoint address="net.tcp://services.heuristiclab.com:8000/Hive-3.3/ClientService.svc" binding="netTcpBinding" bindingConfiguration="ClientTcpStreamedEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientTcpStreamedEndpoint">
    3232        <identity>
    33           <dns value="localhost"/>
     33          <dns value="services.heuristiclab.com"/>
    3434        </identity>
    3535      </endpoint>
    36       <endpoint address="http://localhost:9000/Hive/ClientService.svc" binding="wsHttpBinding" bindingConfiguration="ClientHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientHttpEndpoint">
     36      <endpoint address="http://services.heuristiclab.com/Hive-3.3/ClientService.svc" binding="wsHttpBinding" bindingConfiguration="ClientHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientHttpEndpoint">
    3737        <identity>
    38           <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac="/>
     38          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
    3939        </identity>
    4040      </endpoint>
    4141    </client>
    42 
     42   
    4343  </system.serviceModel>
    4444<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj

    r5054 r5093  
    140140    <Compile Include="Changes.cs" />
    141141    <None Include="app.config" />
     142    <None Include="f005pc.hagenberg.fhooe.at - app.config" />
    142143    <None Include="HeuristicLabHiveClientConsolePlugin.cs.frame" />
    143144    <Compile Include="HiveServerConsole.cs">
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/app.config

    r5000 r5093  
    2626    </bindings>
    2727    <client>
    28       <endpoint address="http://localhost:9000/Hive/ServerConsoleService.svc" behaviorConfiguration="ServerConsoleBehaviour" binding="wsHttpBinding" bindingConfiguration="ServerConsoleHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IServerConsoleFacade" name="ServerConsoleHttpEndpoint">
     28      <endpoint address="http://services.heuristiclab.com/Hive-3.3/ServerConsoleService.svc" behaviorConfiguration="ServerConsoleBehaviour" binding="wsHttpBinding" bindingConfiguration="ServerConsoleHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IServerConsoleFacade" name="ServerConsoleHttpEndpoint">
    2929        <identity>
    30           <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac="/>
     30          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
    3131        </identity>
    3232      </endpoint>
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/CreateHiveDatabaseApplication.cs

    r4424 r5093  
    2525
    2626namespace HeuristicLab.Hive.Server.Core {
    27   [Application("Create Hive Database", "Creates new empty Hive Database.", true)]
     27  [Application("Create Hive-3.3 Database", "Creates new empty Hive Database.", true)]
    2828  class CreateHiveDatabaseApplication : ApplicationBase {
    2929
     
    3838    }
    3939  }
     40
     41  [Application("Test something")]
     42  class TestApplication : ApplicationBase {
     43
     44    public override void Run() {
     45      IContextFactory contextFactory = ServiceLocator.GetContextFactory();
     46      using (contextFactory.GetContext(false)) {
     47        var job = DaoLocator.JobDao.FindWithLimitations(Contracts.BusinessObjects.JobState.Offline, 0, 1);
     48
     49        var jobs = DaoLocator.JobDao.FindAll();
     50
     51      }
     52    }
     53  }
    4054}
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs

    r4424 r5093  
    4747        /// Critical section ///
    4848        JobDto jobToCalculate = null;
    49         using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = ApplicationConstants.ISOLATION_LEVEL_SCOPE })) {
     49        using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) {
    5050          SlaveDto slave = DaoLocator.SlaveDao.FindById(slaveId);
    5151
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs

    r4710 r5093  
    5050      Logger.Info("Searching for dead Jobs");
    5151
    52       List<JobDto> allJobs = new List<JobDto>(DaoLocator.JobDao.FindAll());
     52      IEnumerable<JobDto> allJobs = DaoLocator.JobDao.FindAll();
    5353      foreach (JobDto curJob in allJobs) {
    5454        if (curJob.State != JobState.Calculating &&
     
    6969
    7070    private void lifecycleManager_Stopped(object sender, EventArgs e) {
    71       Logger.Info("Startup Event Fired, Checking DB for consistency");
     71      Logger.Info("Stopped Event Fired, Checking DB for consistency");
    7272      CheckForDeadJobs();
    73       Logger.Info("Startup Event Done");
     73      Logger.Info("Stopped Event Done");
    7474    }
    7575
     
    276276    /// </summary>
    277277    public Response AbortJob(Guid jobId) {
     278      Logger.Debug("JobManager.AbortJob: " + jobId);
    278279      Response response = new Response();
    279280
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/LifecycleManager.cs

    r5000 r5093  
    3535    private bool shutdownRequested;
    3636    private PluginManager pm;
     37
     38    private Dictionary<Guid, DateTime> lastHeartbeats = new Dictionary<Guid, DateTime>();
     39    public Dictionary<Guid, DateTime> LastHeartbeats {
     40      get { return lastHeartbeats; }
     41    }
     42
     43    /// <summary>
     44    /// Contains a list job JobIds which have been sent to a slave, but the slave has not yet sent
     45    /// a jobProgress of the job with a heartbeat, because he has not finished downloading/deserializing it.
     46    /// The number value indicates a TimeToLive count that is decremented with each server-heartbeat.
     47    /// When the number reaches zero, the jobs is assumed to be lost and is set Offline again.
     48    /// </summary>
     49    private Dictionary<Guid, int> newAssignedJobs = new Dictionary<Guid, int>();
     50    public Dictionary<Guid, int> NewAssignedJobs {
     51      get { return newAssignedJobs; }
     52    }
     53
     54    /// <summary>
     55    /// When a slave reconnects and he has finished results waiting it calls IsJobStillNeeded. If the finished
     56    /// result has not yet been collected from anywhere else, the job will be sent by the slave and the job state is set to Pending.
     57    /// Now the job be in pending state until it is received from the reconnected slave or the TimeToLive value of this dictionary has reached zero.
     58    /// </summary>
     59    private Dictionary<Guid, int> pendingJobs = new Dictionary<Guid, int>();
     60    public Dictionary<Guid, int> PendingJobs {
     61      get { return pendingJobs; }
     62    }
    3763
    3864    private TimeSpan interval = new TimeSpan(0, 0, 10);
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/SlaveCommunicator.cs

    r5000 r5093  
    3636using HeuristicLab.Hive.Tracing;
    3737using HeuristicLab.PluginInfrastructure.Manager;
     38using System.Web;
     39using System.Web.SessionState;
    3840
    3941namespace HeuristicLab.Hive.Server.Core {
     
    4244  /// </summary>
    4345  public class SlaveCommunicator : ISlaveCommunicator, IInternalSlaveCommunicator {
    44     private static Dictionary<Guid, DateTime> lastHeartbeats = new Dictionary<Guid, DateTime>();
    45 
    46     /// <summary>
    47     /// Contains a list job JobIds which have been sent to a slave, but the slave has not yet sent
    48     /// a jobProgress of the job with a heartbeat, because he has not finished downloading/deserializing it.
    49     /// The number value indicates a TimeToLive count that is decremented with each server-heartbeat.
    50     /// When the number reaches zero, the jobs is assumed to be lost and is set Offline again.
    51     /// </summary>
    52     private static Dictionary<Guid, int> newAssignedJobs = new Dictionary<Guid, int>();
    53 
    54     /// <summary>
    55     /// When a slave reconnects and he has finished results waiting it calls IsJobStillNeeded. If the finished
    56     /// result has not yet been collected from anywhere else, the job will be sent by the slave and the job state is set to Pending.
    57     /// Now the job be in pending state until it is received from the reconnected slave or the TimeToLive value of this dictionary has reached zero.
    58     /// </summary>
    59     private static Dictionary<Guid, int> pendingJobs = new Dictionary<Guid, int>();
    6046    private static int PENDING_TIMEOUT = 100;
    6147
     
    7460    /// </summary>
    7561    public SlaveCommunicator() {
     62      Logger.Debug("ServiceCommunicator instantiated");
    7663      lifecycleManager = ServiceLocator.GetLifecycleManager();
    7764      jobManager = ServiceLocator.GetJobManager() as IInternalJobManager;
     
    9784            SlaveDto slave = DaoLocator.SlaveDao.FindById(slaveId);
    9885
    99             if (!lastHeartbeats.ContainsKey(slave.Id)) {
    100               Logger.Info("No previous hearbeats are available for " + slave.Id + " although it is in state " + slave.State);
     86            if (!lifecycleManager.LastHeartbeats.ContainsKey(slave.Id)) {
     87              Logger.Info("No previous hearbeats are available for " + slave.Name + "(" + slave.Id + "), although it is in state " + slave.State);
    10188
    10289              // add a heartbeat NOW and give the slave time to say something for HEARTBEAT_MAX_DIF
    10390              // otherwise alls the slaves jobs would be aborted, which is not desirable if the server has just been restarted
    10491              heartbeatLock.EnterWriteLock();
    105               lastHeartbeats.Add(slave.Id, DateTime.Now);
     92              lifecycleManager.LastHeartbeats.Add(slave.Id, DateTime.Now);
    10693              heartbeatLock.ExitWriteLock();
    10794            } else {
    108               DateTime lastHeartbeatOfSlave = lastHeartbeats[slave.Id];
     95              DateTime lastHeartbeatOfSlave = lifecycleManager.LastHeartbeats[slave.Id];
    10996
    11097              TimeSpan diff = DateTime.Now.Subtract(lastHeartbeatOfSlave);
     
    11299              if (diff.TotalSeconds > ApplicationConstants.HEARTBEAT_MAX_DIF) {
    113100                // if slave calculated jobs, the job must be reset
    114                 Logger.Info("Slave timed out and is on RESET");
     101                Logger.Info("Slave timed out and is on RESET (no message for " + diff.TotalSeconds + " seconds.)");
    115102                foreach (JobDto job in DaoLocator.JobDao.FindActiveJobsOfSlave(slave)) {
    116103                  DaoLocator.JobDao.SetJobOffline(job);
    117                   lock (newAssignedJobs) {
    118                     if (newAssignedJobs.ContainsKey(job.Id))
    119                       newAssignedJobs.Remove(job.Id);
     104                  lock (lifecycleManager.NewAssignedJobs) {
     105                    if (lifecycleManager.NewAssignedJobs.ContainsKey(job.Id))
     106                      lifecycleManager.NewAssignedJobs.Remove(job.Id);
    120107                  }
    121108                }
     
    127114                Logger.Debug("removing it from the heartbeats list");
    128115                heartbeatLock.EnterWriteLock();
    129                 lastHeartbeats.Remove(slave.Id);
     116                lifecycleManager.LastHeartbeats.Remove(slave.Id);
    130117                heartbeatLock.ExitWriteLock();
    131118              }
     
    148135
    149136      foreach (JobDto currJob in pendingJobsInDb) {
    150         lock (pendingJobs) {
    151           if (pendingJobs.ContainsKey(currJob.Id)) {
    152             if (pendingJobs[currJob.Id] <= 0) {
     137        lock (lifecycleManager.PendingJobs) {
     138          if (lifecycleManager.PendingJobs.ContainsKey(currJob.Id)) {
     139            if (lifecycleManager.PendingJobs[currJob.Id] <= 0) {
    153140              currJob.State = JobState.Offline;
    154141              DaoLocator.JobDao.Update(currJob);
    155142            } else {
    156               pendingJobs[currJob.Id]--;
     143              lifecycleManager.PendingJobs[currJob.Id]--;
    157144            }
    158145          }
     
    173160
    174161      heartbeatLock.EnterWriteLock();
    175       if (lastHeartbeats.ContainsKey(slave.Id)) {
    176         lastHeartbeats[slave.Id] = DateTime.Now;
     162      if (lifecycleManager.LastHeartbeats.ContainsKey(slave.Id)) {
     163        lifecycleManager.LastHeartbeats[slave.Id] = DateTime.Now;
    177164      } else {
    178         lastHeartbeats.Add(slave.Id, DateTime.Now);
     165        lifecycleManager.LastHeartbeats.Add(slave.Id, DateTime.Now);
    179166      }
    180167      heartbeatLock.ExitWriteLock();
     
    247234        using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = ApplicationConstants.ISOLATION_LEVEL_SCOPE })) {
    248235          SlaveDto slave = UpdateSlaveData(heartbeatData);
     236          DaoLocator.SlaveDao.Update(slave);
     237
    249238          SaveTimestamp(heartbeatData);
    250239
    251240          //ProcessJobProgress(heartbeatData, response);
    252241          response.ActionRequest = ProcessJobProgress(heartbeatData);
    253 
     242         
    254243          //check if new Cal must be loaded
    255244          if (slave.CalendarSyncStatus == CalendarState.Fetch || slave.CalendarSyncStatus == CalendarState.ForceFetch) {
     
    270259          }
    271260
    272           DaoLocator.SlaveDao.Update(slave);
    273261          scope.Complete();
    274262        }
     
    286274    }
    287275
    288     private static void SaveTimestamp(HeartBeatData heartbeatData) {
     276    private void SaveTimestamp(HeartBeatData heartbeatData) {
    289277      heartbeatLock.EnterWriteLock();
    290       if (lastHeartbeats.ContainsKey(heartbeatData.SlaveId)) {
    291         lastHeartbeats[heartbeatData.SlaveId] = DateTime.Now;
     278      if (lifecycleManager.LastHeartbeats.ContainsKey(heartbeatData.SlaveId)) {
     279        lifecycleManager.LastHeartbeats[heartbeatData.SlaveId] = DateTime.Now;
    292280      } else {
    293         lastHeartbeats.Add(heartbeatData.SlaveId, DateTime.Now);
     281        lifecycleManager.LastHeartbeats.Add(heartbeatData.SlaveId, DateTime.Now);
    294282      }
    295283      heartbeatLock.ExitWriteLock();
     
    316304
    317305      // find all the jobs in jobProgress which are not in the database -> they are not supposed to be calculated by this slave
    318       IEnumerable<Guid> jobsToAbort = GetJobsNotInDatabase(heartbeatData.SlaveId, heartbeatData.JobProgress.Keys);
    319       foreach (Guid jobId in jobsToAbort) {
    320         actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, jobId));
    321         heartbeatData.JobProgress.Remove(jobId);
    322       }
     306      //IEnumerable<Guid> jobsToAbort = GetJobsNotCalculatedByThisSlave(heartbeatData.SlaveId, heartbeatData.JobProgress.Keys);
     307      //foreach (Guid jobId in jobsToAbort) {
     308      //  Logger.Error("Job shall not be caculated by this slave or does not exist in DB: " + jobId);
     309      //  actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, jobId));
     310      //  heartbeatData.JobProgress.Remove(jobId);
     311      //}
    323312
    324313      // process all the remaining jobProgresses
     
    327316        if (curJob == null) {
    328317          // job does not exist in db
     318          Logger.Error("Job does not exist in DB: " + jobProgress.Key);
    329319          actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, jobProgress.Key));
    330           Logger.Error("Job does not exist in DB: " + jobProgress.Key);
    331320        } else {
    332321          curJob.Slave = DaoLocator.SlaveDao.GetSlaveForJob(curJob.Id);
     322          Guid id = curJob.Slave != null ? curJob.Slave.Id : Guid.Empty;
    333323          if (curJob.Slave == null || curJob.Slave.Id != heartbeatData.SlaveId) {
    334324            // assigned slave does not match heartbeat
     325            Logger.Error("The slave " + heartbeatData.SlaveId + " is not supposed to calculate Job: " + curJob.ToString());
    335326            actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, curJob.Id));
    336             Logger.Error("The slave " + heartbeatData.SlaveId + " is not supposed to calculate Job: " + curJob);
    337327          } else {
    338328            // save job execution time
     
    341331            if (curJob.State == JobState.Aborted) {
    342332              // a request to abort the job has been set
     333              Logger.Error("Job is in state aborted, send AbortJob: " + curJob.Id);
    343334              actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, curJob.Id));
    344335            } else if (curJob.State == JobState.SnapshotRequested) {
     
    355346      foreach (JobDto currJob in jobsOfSlave) {
    356347        if (heartbeatData.JobProgress.ContainsKey(currJob.Id)) {
    357           lock (newAssignedJobs) {
    358             if (newAssignedJobs.ContainsKey(currJob.Id)) {
     348          lock (lifecycleManager.NewAssignedJobs) {
     349            if (lifecycleManager.NewAssignedJobs.ContainsKey(currJob.Id)) {
    359350              Logger.Info("Job is sending a heart beat, removing it from the newAssignedJobList: " + currJob);
    360               newAssignedJobs.Remove(currJob.Id);
     351              lifecycleManager.NewAssignedJobs.Remove(currJob.Id);
    361352            }
    362353          }
    363354        } else {
    364           lock (newAssignedJobs) {
    365             if (newAssignedJobs.ContainsKey(currJob.Id)) {
    366               newAssignedJobs[currJob.Id]--;
    367               Logger.Error("Job TTL Reduced by one for job: " + currJob + "and is now: " + newAssignedJobs[currJob.Id] + ". User that sucks: " + currJob.Slave);
    368               if (newAssignedJobs[currJob.Id] <= 0) {
     355          lock (lifecycleManager.NewAssignedJobs) {
     356            if (lifecycleManager.NewAssignedJobs.ContainsKey(currJob.Id)) {
     357              lifecycleManager.NewAssignedJobs[currJob.Id]--;
     358              Logger.Error("Job TTL Reduced by one for job: " + currJob + "and is now: " + lifecycleManager.NewAssignedJobs[currJob.Id] + ". User that sucks: " + currJob.Slave);
     359              if (lifecycleManager.NewAssignedJobs[currJob.Id] <= 0) {
    369360                Logger.Error("Job TTL reached Zero, Job gets removed: " + currJob + " and set back to offline. User that sucks: " + currJob.Slave);
    370361
     
    374365                actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, currJob.Id));
    375366
    376                 newAssignedJobs.Remove(currJob.Id);
     367                lifecycleManager.NewAssignedJobs.Remove(currJob.Id);
    377368              }
    378369            } else {
     
    388379
    389380    /// <summary>
    390     /// Returns the jobIds of the jobs which are not assigned to this slave in the database
    391     /// </summary>
    392     private IEnumerable<Guid> GetJobsNotInDatabase(Guid slaveId, IEnumerable<Guid> jobIds) {
     381    /// Returns the jobIds of the jobs which are not assigned to this slave in the database (they either are not stored in DB or they are assigned
     382    /// </summary>
     383    private IEnumerable<Guid> GetJobsNotCalculatedByThisSlave(Guid slaveId, IEnumerable<Guid> jobIds) {
    393384      IEnumerable<Guid> activeJobsOfSlave = DaoLocator.JobDao.FindActiveJobsOfSlave(DaoLocator.SlaveDao.FindById(slaveId)).Select(j => j.Id);
    394385      return jobIds.Except(activeJobsOfSlave).ToList();
     
    520511
    521512        Logger.Info("Job pulled: " + job2Calculate + " for user " + slaveId);
    522         lock (newAssignedJobs) {
    523           if (!newAssignedJobs.ContainsKey(job2Calculate.Id))
    524             newAssignedJobs.Add(job2Calculate.Id, ApplicationConstants.JOB_TIME_TO_LIVE);
     513        lock (lifecycleManager.NewAssignedJobs) {
     514          if (!lifecycleManager.NewAssignedJobs.ContainsKey(job2Calculate.Id))
     515            lifecycleManager.NewAssignedJobs.Add(job2Calculate.Id, ApplicationConstants.JOB_TIME_TO_LIVE);
    525516        }
    526517      } else {
     
    701692
    702693      heartbeatLock.EnterWriteLock();
    703       if (lastHeartbeats.ContainsKey(slaveId))
    704         lastHeartbeats.Remove(slaveId);
     694      if (lifecycleManager.LastHeartbeats.ContainsKey(slaveId))
     695        lifecycleManager.LastHeartbeats.Remove(slaveId);
    705696      heartbeatLock.ExitWriteLock();
    706697
     
    745736      }
    746737      job.State = JobState.Pending;
    747       lock (pendingJobs) {
    748         pendingJobs.Add(job.Id, PENDING_TIMEOUT);
     738      lock (lifecycleManager.PendingJobs) {
     739        lifecycleManager.PendingJobs.Add(job.Id, PENDING_TIMEOUT);
    749740      }
    750741
     
    765756        if (ipd != null) {
    766757          response.List.Add(ConvertPluginDescriptorToDto(ipd));
    767         } else {
    768           response.StatusMessage = ResponseStatus.GetPlugins_PluginsNotAvailable;
    769           return response;
    770758        }
    771759      }
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs

    r5037 r5093  
    4040
    4141    public IEnumerable<JobDto> FindAll() {
    42       return (from job in Context.Jobs
    43               select EntityToDto(job, null)).ToList();
     42      return (from job in Context.Jobs select EntityToDto(job, null)).ToArray();
    4443    }
    4544
     
    142141    public IEnumerable<JobDto> FindJobsWithFinishedChilds(Guid slaveId) {
    143142      SlaveGroupDao cgd = new SlaveGroupDao();
    144      
     143
    145144      List<Guid> idList = new List<Guid>(cgd.FindAllGroupAndParentGroupIdsForSlave(slaveId));
    146145      //Add myself too - enables jobs for one specific host!
     
    151150                    (from child in Context.Jobs
    152151                     where child.ParentJobId == ar.Job.JobId
    153                      select 
     152                     select
    154153                      (child.JobState == Enum.GetName(typeof(JobState), JobState.Finished) ||
    155154                       child.JobState == Enum.GetName(typeof(JobState), JobState.Failed) ||
     
    258257      target.ParentJobId = source.ParentJobId;
    259258     
     259
    260260      foreach (Guid assignRessourceId in source.AssignedResourceIds) {
    261261        if (!target.AssignedResources.Select(x => x.ResourceId).Contains(assignRessourceId)) {
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/HeuristicLab.Hive.Slave.Communication-3.3.csproj

    r5054 r5093  
    111111  </ItemGroup>
    112112  <ItemGroup>
    113     <None Include="app.config">
     113    <None Include="app.config" />
     114    <None Include="f005pc.hagenberg.fhooe.at - app.config">
    114115      <SubType>Designer</SubType>
    115116    </None>
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/WcfService.cs

    r5037 r5093  
    129129    #region PullJob
    130130    public event System.EventHandler<GetJobCompletedEventArgs> GetJobCompleted;
     131    public event System.EventHandler<EventArgs<Exception>> GetJobFailed;
    131132    public void GetJobAsync(Guid guid) {
    132133      Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService();
     
    159160        catch (Exception e) {
    160161          OnExceptionOccured(e);
     162          if (GetJobFailed != null)
     163            GetJobFailed(this, new EventArgs<Exception>(e));
    161164        }
    162165        finally {
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/app.config

    r5000 r5093  
    2727    </bindings>
    2828    <client>
    29       <endpoint address="http://localhost:9000/Hive/SlaveService.svc" binding="wsHttpBinding" bindingConfiguration="SlaveHttpEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveHttpEndpoint">
     29      <endpoint address="http://services.heuristiclab.com/Hive-3.3/SlaveService.svc" binding="wsHttpBinding" bindingConfiguration="SlaveHttpEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveHttpEndpoint">
    3030        <identity>
    31           <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac=" />
     31          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
    3232        </identity>
    3333      </endpoint>
    34       <endpoint address="net.tcp://localhost:9001/Hive/SlaveService.svc" binding="netTcpBinding" bindingConfiguration="SlaveTcpStreamedEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveTcpStreamedEndpoint">
     34      <endpoint address="net.tcp://services.heuristiclab.com:8000/Hive-3.3/SlaveService.svc" binding="netTcpBinding" bindingConfiguration="SlaveTcpStreamedEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveTcpStreamedEndpoint">
    3535        <identity>
    36           <dns value="localhost"/>
     36          <dns value="services.heuristiclab.com"/>
    3737        </identity>
    3838      </endpoint>
    3939    </client>
    4040  </system.serviceModel>
    41 <startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
     41  <startup>
     42    <supportedRuntime version="v2.0.50727"/>
     43  </startup>
     44</configuration>
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/HeuristicLab.Hive.Slave.Console-3.3.csproj

    r5054 r5093  
    7979  </PropertyGroup>
    8080  <ItemGroup>
     81    <Reference Include="HeuristicLab.Clients.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
     82      <HintPath>..\..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Clients.Common-3.3.dll</HintPath>
     83    </Reference>
    8184    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
    8285      <HintPath>..\..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
     
    204207      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
    205208      <Name>HeuristicLab.Hive.Contracts-3.3</Name>
     209    </ProjectReference>
     210    <ProjectReference Include="..\..\HeuristicLab.Hive.Slave.Core\3.3\HeuristicLab.Hive.Slave.Core-3.3.csproj">
     211      <Project>{5010BD86-23B7-4F8C-888A-76D21AD5266A}</Project>
     212      <Name>HeuristicLab.Hive.Slave.Core-3.3</Name>
    206213    </ProjectReference>
    207214  </ItemGroup>
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/LogServiceReader.cs

    r5037 r5093  
    66using HeuristicLab.Core;
    77using HeuristicLab.Hive.Slave.Console.SlaveConsoleService;
     8using HeuristicLab.Clients.Common;
    89
    910namespace HeuristicLab.Hive.Slave.Console {
     
    2526    void timer_Tick(object sender, EventArgs e) {
    2627      try {
    27         using (var slaveClient = new SlaveConsoleCommunicatorClient()) {
    28           var messages = slaveClient.GetLogMessages();
    29           if (messages.Count < messageCount) {
    30             messageCount = 0; // log got cleared
     28        using (var slaveClient = ClientFactory.CreateClient<ISlaveConsoleCommunicator>("SlaveConsoleTcpEndpointClient")) {
     29          try {
     30            var messages = slaveClient.Obj.GetLogMessages();
     31            if (messages.Count < messageCount) {
     32              messageCount = 0; // log got cleared
     33            }
     34            var newMessages = messages.GetRange(messageCount, messages.Count - messageCount);
     35            messageCount = messages.Count;
     36            OnMoreData(newMessages);
     37
    3138          }
    32           var newMessages = messages.GetRange(messageCount, messages.Count - messageCount);
    33           messageCount = messages.Count;
    34           OnMoreData(newMessages);
     39          catch (Exception ex) {
     40            OnMoreData(new List<string> { "Error fetching log: " + ex.ToString() });
     41          }
    3542        }
    3643      }
    3744      catch (Exception ex) {
    38         OnMoreData(new List<string> { "Error fetching log: " + ex.ToString() });
     45        OnMoreData(new List<string> { "Error in slave-communication: " + ex.ToString() });
    3946      }
    4047    }
     
    4855      var handler = MoreData;
    4956      var newData = string.Join(Environment.NewLine, newMessages.ToArray());
    50       if(newMessages.Count() > 0) newData += Environment.NewLine;
     57      if (newMessages.Count() > 0) newData += Environment.NewLine;
    5158      if (handler != null) MoreData(this, newData);
    5259    }
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/app.config

    r4914 r5093  
    1616    <bindings>
    1717      <netTcpBinding>
    18         <binding name="SlaveConsoleTcpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxReceivedMessageSize="104857600">
    19           <readerQuotas maxDepth="32" maxStringContentLength="104857600" maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600"/>
     18        <binding name="SlaveConsoleTcpEndpointBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="104857600" maxBufferSize="104857600" maxReceivedMessageSize="104857600">
     19          <readerQuotas maxDepth="320" maxStringContentLength="104857600" maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600"/>
    2020          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
    2121          <security mode="None">
     
    2727    </bindings>
    2828    <client>
    29       <endpoint address="net.tcp://localhost:8000/SlaveConsoleService" binding="netTcpBinding" bindingConfiguration="SlaveConsoleTcpEndpoint" contract="SlaveConsoleService.ISlaveConsoleCommunicator" name="SlaveConsoleTcpEndpoint"/>
     29      <endpoint address="net.tcp://localhost:8000/SlaveConsoleService" binding="netTcpBinding" bindingConfiguration="SlaveConsoleTcpEndpointBinding" contract="SlaveConsoleService.ISlaveConsoleCommunicator" name="SlaveConsoleTcpEndpointClient"/>
    3030    </client>
    3131  </system.serviceModel>
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Core/3.3/Core.cs

    r5000 r5093  
    115115      wcfService.ProcessSnapshotCompleted += new EventHandler<ProcessSnapshotCompletedEventArgs>(wcfService_ProcessSnapshotCompleted);
    116116      wcfService.Connected += new EventHandler(wcfService_Connected);
     117      wcfService.GetJobFailed += new EventHandler<EventArgs<Exception>>(wcfService_GetJobFailed);
    117118    }
    118119
     
    122123      wcfService.ProcessSnapshotCompleted -= new EventHandler<ProcessSnapshotCompletedEventArgs>(wcfService_ProcessSnapshotCompleted);
    123124      wcfService.Connected -= new EventHandler(wcfService_Connected);
     125      wcfService.GetJobFailed -= new EventHandler<EventArgs<Exception>>(wcfService_GetJobFailed);
    124126    }
    125127
     
    457459    }
    458460
     461    void wcfService_GetJobFailed(object sender, EventArgs<Exception> e) {
     462      Logger.Info("GetJobFailed: " + e.Value.ToString());
     463      CurrentlyFetching = false;
     464    }
     465
    459466    private void FetchCalendarFromServer() {
    460467      ResponseCalendar calres = wcfService.GetCalendarSync(ConfigManager.Instance.GetClientInfo().Id);
  • branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HiveWeb/Hive-3.3/Web.config

    r5066 r5093  
    77  </configSections>
    88 
    9  
    10   <system.diagnostics>
     9  <!--<system.diagnostics>
    1110    <sources>
    1211      <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
     
    4342      </add>
    4443    </sharedListeners>
    45   </system.diagnostics>
    46  
     44  </system.diagnostics>-->
    4745 
    4846  <applicationSettings>
Note: See TracChangeset for help on using the changeset viewer.