Changeset 9123 for trunk/sources/HeuristicLab.Services.Hive/3.3/HiveDao.cs
- Timestamp:
- 01/07/13 22:00:04 (11 years ago)
- Location:
- trunk/sources/HeuristicLab.Services.Hive
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Services.Hive
-
Property
svn:mergeinfo
set to
/branches/HiveTaskScheduler/HeuristicLab.Services.Hive merged eligible
-
Property
svn:mergeinfo
set to
-
trunk/sources/HeuristicLab.Services.Hive/3.3/HiveDao.cs
r9035 r9123 84 84 } 85 85 86 public void UpdateTask (DT.Task dto) {86 public void UpdateTaskAndPlugins(DT.Task dto) { 87 87 using (var db = CreateContext()) { 88 88 var entity = db.Tasks.FirstOrDefault(x => x.TaskId == dto.Id); … … 94 94 } 95 95 } 96 db.SubmitChanges(); 97 } 98 } 99 100 public void UpdateTask(DT.Task dto) { 101 using (var db = CreateContext()) { 102 var entity = db.Tasks.FirstOrDefault(x => x.TaskId == dto.Id); 103 if (entity == null) db.Tasks.InsertOnSubmit(DT.Convert.ToEntity(dto)); 104 else DT.Convert.ToEntity(dto, entity); 96 105 db.SubmitChanges(); 97 106 } … … 134 143 } 135 144 136 public IEnumerable< DT.Task> GetWaitingTasks(DT.Slave slave, int count) {145 public IEnumerable<TaskInfoForScheduler> GetWaitingTasks(DT.Slave slave) { 137 146 using (var db = CreateContext()) { 138 147 var resourceIds = GetParentResources(slave.Id).Select(r => r.Id); … … 147 156 && ar.Task.CoresNeeded <= slave.FreeCores 148 157 && ar.Task.MemoryNeeded <= slave.FreeMemory 149 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) 150 select DT.Convert.ToDto(ar.Task); 151 var waitingTasks = (count == 0 ? query : query.Take(count)).ToArray(); 158 select new TaskInfoForScheduler() { TaskId = ar.Task.TaskId, JobId = ar.Task.JobId, Priority = ar.Task.Priority }; 159 var waitingTasks = query.ToArray(); 152 160 return waitingTasks; 153 161 } … … 277 285 } 278 286 287 public IEnumerable<JobInfoForScheduler> GetJobInfoForScheduler(Expression<Func<Job, bool>> predicate) { 288 using (var db = CreateContext()) { 289 return db.Jobs.Where(predicate).Select(x => new JobInfoForScheduler() { Id = x.JobId, DateCreated = x.DateCreated, OwnerUserId = x.OwnerUserId }).ToArray(); 290 } 291 } 292 279 293 public Guid AddJob(DT.Job dto) { 280 294 using (var db = CreateContext()) { 281 295 var entity = DT.Convert.ToEntity(dto); 282 296 db.Jobs.InsertOnSubmit(entity); 297 if (!db.UserPriorities.Any(x => x.UserId == dto.OwnerUserId)) 298 EnqueueUserPriority(new DT.UserPriority { Id = dto.OwnerUserId, DateEnqueued = dto.DateCreated }); 283 299 db.SubmitChanges(); 284 300 return entity.JobId; … … 923 939 #endregion 924 940 941 #region UserPriority Methods 942 public IEnumerable<DT.UserPriority> GetUserPriorities(Expression<Func<UserPriority, bool>> predicate) { 943 using (var db = CreateContext()) { 944 return db.UserPriorities.Where(predicate).Select(x => DT.Convert.ToDto(x)).ToArray(); 945 } 946 } 947 948 public void EnqueueUserPriority(DT.UserPriority dto) { 949 using (var db = CreateContext()) { 950 var entity = db.UserPriorities.FirstOrDefault(x => x.UserId == dto.Id); 951 if (entity == null) db.UserPriorities.InsertOnSubmit(DT.Convert.ToEntity(dto)); 952 else DT.Convert.ToEntity(dto, entity); 953 db.SubmitChanges(); 954 } 955 } 956 #endregion 957 925 958 #region Helpers 926 959 private void CollectChildTasks(HiveDataContext db, Guid parentTaskId, List<Task> collection) {
Note: See TracChangeset
for help on using the changeset viewer.