Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/08/15 15:51:32 (9 years ago)
Author:
dglaser
Message:

#2388:

HeuristicLab.Services.Access:
HeuristicLab.Services.Access.DataAccess:

  • Changed connection strings and certificates for local usage

HeuristicLab.Services.Hive.DataAccess:

  • Added compiled queries for frequently used queries
  • Integrated string queries from OptimizedHiveDao

HeuristicLab.Services.Hive:

  • Added NewHeartbeatManager.cs
  • Added NewRoundRobinTaskScheduler.cs
  • Added PerformanceLogger
  • Updated AuthoriziationManager
  • Updated NewHiveService
    • Added Regions
    • Implemented missing methods
    • Improved performance of several queries

HeuristicLab.Services.WebApp.Status:

  • Fixed a bug which caused an error when calculating the average waiting time.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess/3.3/Daos/SlaveDao.cs

    r12551 r12691  
    4646    #region IGenericDao<Guid,Slave> Members
    4747    public Slave GetById(Guid id) {
    48       return Entities.SingleOrDefault(x => x.ResourceId == id);
     48      return GetByIdQuery(dataContext, id);
    4949    }
    5050
     
    117117
    118118    public bool Exists(Slave entity) {
    119       return Table.Contains(entity);
     119      return ExistsQuery(dataContext, entity);
    120120    }
    121121
     
    124124    }
    125125    #endregion
     126
     127    public bool SlaveHasToShutdownComputer(Guid slaveId) {
     128      return dataContext.ExecuteQuery<int>(DowntimeQueryString, slaveId, DateTime.Now, DowntimeType.Shutdown.ToString()).FirstOrDefault() > 0;
     129    }
     130
     131    public bool SlaveIsAllowedToCalculate(Guid slaveId) {
     132      return dataContext.ExecuteQuery<int>(DowntimeQueryString, slaveId, DateTime.Now, DowntimeType.Offline.ToString()).FirstOrDefault() == 0;
     133    }
     134
     135    #region Compiled queries
     136    private static readonly Func<DataContext, Guid, Slave> GetByIdQuery =
     137      CompiledQuery.Compile((DataContext db, Guid slaveId) =>
     138        (from slave in db.GetTable<Resource>().OfType<Slave>()
     139         where slave.ResourceId == slaveId
     140         select slave).SingleOrDefault());
     141
     142    private static readonly Func<DataContext, Slave, bool> ExistsQuery =
     143      CompiledQuery.Compile((DataContext db, Slave entity) =>
     144        db.GetTable<Resource>().OfType<Slave>().Contains(entity));
     145    #endregion
     146
     147    #region String queries
     148    private const string DowntimeQueryString = @"
     149      WITH pr AS (
     150        SELECT ResourceId, ParentResourceId
     151        FROM [Resource]
     152        WHERE ResourceId = {0}
     153        UNION ALL
     154        SELECT r.ResourceId, r.ParentResourceId
     155        FROM [Resource] r JOIN pr ON r.ResourceId = pr.ParentResourceId
     156      )
     157      SELECT COUNT(dt.DowntimeId)
     158      FROM pr JOIN [Downtime] dt ON pr.ResourceId = dt.ResourceId
     159      WHERE {1} BETWEEN dt.StartDate AND dt.EndDate
     160        AND dt.DowntimeType = {2}
     161    ";
     162    #endregion
    126163  }
    127164}
Note: See TracChangeset for help on using the changeset viewer.