- Timestamp:
- 06/25/15 18:34:40 (9 years ago)
- Location:
- branches/HiveStatistics/sources
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveStatistics/sources
- Property svn:mergeinfo changed
/trunk/sources merged: 12470-12476,12478-12482,12485,12488,12490-12494,12496-12497,12504,12506-12507,12509,12511-12512,12514
- Property svn:mergeinfo changed
-
branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/HiveDao.cs
r12469 r12516 317 317 exp.JobCount = jobs.Count(); 318 318 exp.CalculatingCount = jobs.Count(j => j.State == TaskState.Calculating); 319 exp.FinishedCount = jobs.Count(j => j.State == TaskState.Finished );319 exp.FinishedCount = jobs.Count(j => j.State == TaskState.Finished || j.State == TaskState.Aborted || j.State == TaskState.Failed); 320 320 return exp; 321 321 } -
branches/HiveStatistics/sources/HeuristicLab.Services.Hive/3.3/HiveStatisticsGenerator.cs
r12484 r12516 32 32 private const string UnknownUserName = "Unknown"; 33 33 private static readonly TimeSpan SmallestTimeSpan = new TimeSpan(0, 5, 0); 34 private static readonly TaskState[] CompletedStates = { TaskState.Finished, TaskState.Aborted, TaskState.Failed }; 34 35 35 36 public void GenerateStatistics() { … … 42 43 }); 43 44 45 DimTime time = null; 44 46 pm.UseTransaction(() => { 45 var newTime = UpdateDimTimeTable(pm); 46 if (newTime != null) { 47 time = UpdateDimTimeTable(pm); 48 pm.SubmitChanges(); 49 }); 50 51 if (time != null) { 52 pm.UseTransaction(() => { 53 UpdateFactClientInfoTable(time, pm); 47 54 pm.SubmitChanges(); 48 UpdateFactClientInfoTable(newTime, pm); 49 UpdateTaskFactsTable(newTime, pm); 55 }); 56 57 pm.UseTransaction(() => { 58 UpdateTaskFactsTable(time, pm); 50 59 try { 60 pm.SubmitChanges(); 61 UpdateExistingDimJobs(pm); 51 62 pm.SubmitChanges(); 52 63 } … … 58 69 Exception Details: {0}", e)); 59 70 } 60 } 61 } );71 }); 72 } 62 73 } 63 74 } … … 97 108 var dimJobDao = pm.DimJobDao; 98 109 var jobDao = pm.JobDao; 110 var taskDao = pm.TaskDao; 99 111 var dimJobIds = dimJobDao.GetAll().Select(x => x.JobId); 100 112 var newJobs = jobDao.GetAll() … … 104 116 UserId = x.OwnerUserId, 105 117 JobName = x.Name ?? string.Empty, 106 DateCreated = x.DateCreated 118 DateCreated = x.DateCreated, 119 TotalTasks = taskDao.GetAll().Count(y => y.JobId == x.JobId) 107 120 }) 108 121 .ToList(); … … 112 125 UserId = x.UserId, 113 126 UserName = GetUserName(x.UserId), 114 DateCreated = x.DateCreated 127 DateCreated = x.DateCreated, 128 TotalTasks = x.TotalTasks, 129 CompletedTasks = 0, 130 DateCompleted = null 115 131 })); 132 } 133 134 private void UpdateExistingDimJobs(PersistenceManager pm) { 135 var dimJobDao = pm.DimJobDao; 136 var factTaskDao = pm.FactTaskDao; 137 foreach (var dimJob in dimJobDao.GetNotCompletedJobs()) { 138 var taskStates = factTaskDao.GetByJobId(dimJob.JobId) 139 .GroupBy(x => x.TaskState) 140 .Select(x => new { 141 State = x.Key, 142 Count = x.Count() 143 }).ToList(); 144 int totalTasks = 0, completedTasks = 0; 145 foreach (var state in taskStates) { 146 totalTasks += state.Count; 147 if (CompletedStates.Contains(state.State)) { 148 completedTasks += state.Count; 149 } 150 } 151 if (totalTasks == completedTasks) { 152 dimJob.DateCompleted = factTaskDao.GetLastCompletedTaskFromJob(dimJob.JobId); 153 } 154 dimJob.TotalTasks = totalTasks; 155 dimJob.CompletedTasks = completedTasks; 156 } 116 157 } 117 158 … … 120 161 var slaveDao = pm.SlaveDao; 121 162 var slaves = slaveDao.GetAll(); 122 var recentlyAddedClients = dimClientDao.Get RecentlyAddedClients();163 var recentlyAddedClients = dimClientDao.GetActiveClients(); 123 164 var slaveIds = slaves.Select(x => x.ResourceId); 124 165 … … 136 177 ClientId = client.Id 137 178 }; 138 var clientIds = dimClientDao.GetA ll().Select(x => x.ResourceId);179 var clientIds = dimClientDao.GetActiveClients().Select(x => x.ResourceId); 139 180 var modifiedClientIds = modifiedClients.Select(x => x.SlaveId); 140 181 var newClients = slaves … … 145 186 x.Name, 146 187 ResourceGroupId = x.ParentResourceId, 147 ResourceGroup2Id = x.ParentResource.ParentResourceId 188 GroupName = x.ParentResource.Name, 189 ResourceGroup2Id = x.ParentResource.ParentResourceId, 190 GroupName2 = x.ParentResource.ParentResource.Name 148 191 }) 149 192 .ToList(); … … 156 199 ExpirationTime = null, 157 200 ResourceGroupId = x.ResourceGroupId, 158 ResourceGroup2Id = x.ResourceGroup2Id 201 GroupName = x.GroupName, 202 ResourceGroup2Id = x.ResourceGroup2Id, 203 GroupName2 = x.GroupName2 159 204 })); 160 205 } … … 167 212 var newRawFactInfos = 168 213 from s in slaveDao.GetAll() 169 join c in dimClientDao.Get RecentlyAddedClients() on s.ResourceId equals c.ResourceId214 join c in dimClientDao.GetActiveClients() on s.ResourceId equals c.ResourceId 170 215 join lcf in factClientInfoDao.GetLastUpdateTimestamps() on c.ResourceId equals lcf.ResourceId into joinCf 171 216 from cf in joinCf.DefaultIfEmpty() … … 186 231 from x in newRawFactInfos.ToList() 187 232 let duration = x.LastFactTimestamp != null 188 ? ( newTime.Time - (DateTime)x.LastFactTimestamp).TotalMinutes189 : SmallestTimeSpan.TotalMinutes233 ? (int)(newTime.Time - (DateTime)x.LastFactTimestamp).TotalSeconds 234 : (int)SmallestTimeSpan.TotalSeconds 190 235 select new FactClientInfo { 191 236 ClientId = x.ClientId, … … 193 238 UserId = x.UserId, 194 239 NumUsedCores = x.TotalCores - x.FreeCores, 195 NumTotalCores = x.Total Memory,240 NumTotalCores = x.TotalCores, 196 241 UsedMemory = x.TotalMemory - x.FreeMemory, 197 242 TotalMemory = x.TotalMemory, … … 199 244 SlaveState = x.SlaveState, 200 245 TotalTimeIdle = x.SlaveState == SlaveState.Idle && x.IsAllowedToCalculate ? duration : 0.0, 201 TotalTimeCalculating = x.SlaveState == SlaveState.Calculating ? duration : 0.0,202 246 TotalTimeUnavailable = x.SlaveState == SlaveState.Idle && !x.IsAllowedToCalculate ? duration : 0.0, 203 247 TotalTimeOffline = x.SlaveState == SlaveState.Offline ? duration : 0.0 … … 226 270 join lastFactTask in notFinishedFactTasks on task.TaskId equals lastFactTask.TaskId into lastFactPerTask 227 271 from lastFact in lastFactPerTask.DefaultIfEmpty() 228 join client in dimClientDao.Get RecentlyAddedClients() on lastSlaveId equals client.ResourceId into clientsPerSlaveId272 join client in dimClientDao.GetActiveClients() on lastSlaveId equals client.ResourceId into clientsPerSlaveId 229 273 from client in clientsPerSlaveId.DefaultIfEmpty() 230 274 select new {
Note: See TracChangeset
for help on using the changeset viewer.