Changeset 8687 for branches/HiveTaskScheduler/HeuristicLab.Services.Hive
- Timestamp:
- 09/24/12 15:24:24 (12 years ago)
- Location:
- branches/HiveTaskScheduler
- Files:
-
- 5 added
- 9 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Convert.cs
r7916 r8687 527 527 } 528 528 #endregion 529 530 #region UserPriority 531 public static DT.UserPriority ToDto(DB.UserPriority source) { 532 if (source == null) return null; 533 return new DT.UserPriority() { UserId = source.UserId }; 534 } 535 public static DB.UserPriority ToEntity(DT.UserPriority source) { 536 if (source == null) return null; 537 var entity = new DB.UserPriority(); ToEntity(source, entity); 538 return entity; 539 } 540 public static void ToEntity(DT.UserPriority source, DB.UserPriority target) { 541 if ((source != null) && (target != null)) { 542 target.UserId = source.UserId; 543 } 544 } 545 #endregion 529 546 } 530 547 } -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/HeuristicLab.Services.Hive-3.3.csproj
r8600 r8687 114 114 <Compile Include="Convert.cs" /> 115 115 <Compile Include="DataTransfer\Command.cs" /> 116 <Compile Include="DataTransfer\UserPriority.cs" /> 116 117 <Compile Include="DataTransfer\ResourcePermission.cs" /> 117 118 <Compile Include="DataTransfer\Downtime.cs" /> … … 139 140 <Compile Include="HiveJanitor.cs" /> 140 141 <Compile Include="Interfaces\IHiveDao.cs" /> 142 <Compile Include="Interfaces\ITaskScheduler.cs" /> 143 <Compile Include="Scheduler\RoundRobinTaskScheduler.cs" /> 141 144 <Compile Include="Settings.cs" /> 142 145 <None Include="app.config" /> … … 196 199 </PropertyGroup> 197 200 <PropertyGroup> 198 <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)201 <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir) 199 202 set ProjectDir=$(ProjectDir) 200 203 set SolutionDir=$(SolutionDir) … … 202 205 203 206 call PreBuildEvent.cmd</PreBuildEvent> 204 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">207 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' "> 205 208 export ProjectDir=$(ProjectDir) 206 209 export SolutionDir=$(SolutionDir) -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/HiveDao.cs
r7916 r8687 112 112 } 113 113 114 public IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave , int count) {114 public IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave) { 115 115 using (var db = CreateContext()) { 116 116 var resourceIds = GetParentResources(slave.Id).Select(r => r.Id); … … 127 127 orderby ar.Task.Priority descending, db.Random() // take random task to avoid the race condition that occurs when this method is called concurrently (the same task would be returned) 128 128 select DT.Convert.ToDto(ar.Task); 129 var waitingTasks = (count == 0 ? query : query.Take(count)).ToArray();129 var waitingTasks = query.ToArray(); 130 130 return waitingTasks; 131 131 } … … 857 857 #endregion 858 858 859 #region UserPriority Methods 860 public IEnumerable<DT.UserPriority> GetUserPriorities(Expression<Func<UserPriority, bool>> predicate) { 861 using (var db = CreateContext()) { 862 return db.UserPriorities.Where(predicate).Select(x => DT.Convert.ToDto(x)).ToArray(); 863 } 864 } 865 #endregion 866 859 867 #region Helpers 860 868 private void CollectChildTasks(HiveDataContext db, Guid parentTaskId, List<Task> collection) { -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/HiveService.cs
r8071 r8687 499 499 #endregion 500 500 501 #region Resource Methods 502 public IEnumerable<Resource> GetChildResources(Guid resourceId) { 503 return dao.GetChildResources(resourceId); 504 } 505 #endregion 506 501 507 #region Slave Methods 502 508 public int GetNewHeartbeatInterval(Guid slaveId) { … … 671 677 #endregion 672 678 679 #region UserPriority Methods 680 public IEnumerable<UserPriority> GetUserPriorities() { 681 return trans.UseTransaction(() => dao.GetUserPriorities(x => true)); 682 } 683 #endregion 684 673 685 #region Helper Methods 674 686 private IEnumerable<Task> GetChildTasks(Guid? parentTaskId, bool recursive, bool includeParent) { … … 687 699 } 688 700 #endregion 701 702 #region Statistics Methods 703 public IEnumerable<Statistics> GetStatistics() { 704 return dao.GetStatistics(x => true); 705 } 706 public IEnumerable<Statistics> GetStatisticsForTimePeriod(DateTime from, DateTime to) { 707 return dao.GetStatistics(x => x.Timestamp >= from && x.Timestamp <= to); 708 } 709 #endregion 689 710 } 690 711 } -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Interfaces/IHiveDao.cs
r7916 r8687 34 34 void UpdateTask(DT.Task dto); 35 35 void DeleteTask(Guid id); 36 IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave , int count);36 IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave); 37 37 IEnumerable<DT.Task> GetParentTasks(IEnumerable<Guid> resourceIds, int count, bool finished); 38 38 DT.Task UpdateTaskState(Guid taskId, TaskState taskState, Guid? slaveId, Guid? userId, string exception); … … 151 151 List<DT.UserStatistics> GetUserStatistics(); 152 152 #endregion 153 154 #region UserPriority Methods 155 IEnumerable<DT.UserPriority> GetUserPriorities(Expression<Func<UserPriority, bool>> predicate); 156 #endregion 153 157 } 154 158 } -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Interfaces/IServiceLocator.cs
r8051 r8687 31 31 Access.IUserManager UserManager { get; } 32 32 HeartbeatManager HeartbeatManager { get; } 33 ITaskScheduler TaskScheduler { get; } 33 34 } 34 35 } -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Manager/HeartbeatManager.cs
r7723 r8687 31 31 get { return ServiceLocator.Instance.HiveDao; } 32 32 } 33 private I AuthorizationManager auth{34 get { return ServiceLocator.Instance. AuthorizationManager; }33 private ITaskScheduler taskScheduler { 34 get { return ServiceLocator.Instance.TaskScheduler; } 35 35 } 36 36 … … 63 63 // assign new task 64 64 if (heartbeat.AssignJob && slave.IsAllowedToCalculate && heartbeat.FreeCores > 0) { 65 var availableJobs = dao.GetWaitingTasks(slave, 1);66 if (availableJobs. Count() > 0) {65 var availableJobs = taskScheduler.Schedule(dao.GetWaitingTasks(slave)); 66 if (availableJobs.Any()) { 67 67 var job = availableJobs.First(); 68 68 if (AssignJob(slave, job)) -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs
r8071 r8687 168 168 #endregion 169 169 170 #region Resource Methods 171 [OperationContract] 172 IEnumerable<Resource> GetChildResources(Guid resourceId); 173 #endregion 174 170 175 #region Slave Methods 171 176 [OperationContract] … … 238 243 [OperationContract] 239 244 Guid GetUserIdByUsername(string username); 245 #endregion 246 247 #region UserPriorities Methods 248 [OperationContract] 249 IEnumerable<UserPriority> GetUserPriorities(); 250 #endregion 251 252 #region Statistics Methods 253 [OperationContract] 254 IEnumerable<Statistics> GetStatistics(); 255 [OperationContract] 256 IEnumerable<Statistics> GetStatisticsForTimePeriod(DateTime from, DateTime to); 240 257 #endregion 241 258 } -
branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/ServiceLocator.cs
r8051 r8687 89 89 } 90 90 } 91 92 private ITaskScheduler taskScheduler; 93 public ITaskScheduler TaskScheduler { 94 get { 95 if (taskScheduler == null) taskScheduler = new RoundRobinTaskScheduler(); 96 return taskScheduler; 97 } 98 } 91 99 } 92 100 }
Note: See TracChangeset
for help on using the changeset viewer.