public void ReloadAllResources(string dumpingKey = null) { PFX.Task.Factory.StartNew(() => { _resourcesLock.EnterWriteLock(); // the only update (i.e. write) to resources try { Log.Info("Reloading resources for controller"); Console.WriteLine("Reloading resources for controller"); TaskCache.DumpAllTasks(); var resourceBase = new ResourceBaseServiceClient(); try { string farmId = Config.AppSettings[FARMID_PARAM_NAME]; var resources = resourceBase.GetResourcesForFarm(farmId, dumpingKey); // waits all other dumps resourceBase.Close(); string[] resourceNames = resources.Select(r => r.ResourceName).ToArray(); Log.Info("Resources to reload for farm " + farmId + ": " + String.Join(", ", resourceNames)); ResourceCache.ReloadResources(resources); TaskCache.RestoreTasks(resourceNames); //TaskCache.ReloadTasks(resourceNames); PFX.Parallel.ForEach(resourceNames, (name) => { ResourceCache.UpdateNodesState(name); }); Log.Info("Resource reloading done for farm " + farmId); } catch (Exception e) { resourceBase.Abort(); Log.Error("Exception on reloading resources: " + e.ToString()); throw; } } finally { _resourcesLock.ExitWriteLock(); } }); }
public override void RunWithFarm(MITP.ControllerFarmService farm) { try { string farmId = ConfigurationManager.AppSettings[MITP.ControllerFarmService.FARMID_PARAM_NAME]; Resource[] data = null; ResourceBaseServiceClient client = null; try { client = new ResourceBaseServiceClient(); data = client.GetResourcesForFarm(farmId, null); } catch (Exception ex) { Common.Utility.LogError(" Failed to get resources from ResourceBaseService. Exception: " + ex); throw ex; } finally { client.Close(); } var resourceCollector = base.GetResourceCacheCollector(data); var taskCollector = base.GetTaskCacheCollector(); Utility.CreateAndRunRepeatedProcess(5000, false, () => { Common.Utility.ExceptionablePlaceWrapper(() => { foreach (var resource in data) { resourceCollector.push(resource.ResourceName, GenerateResourecMockData(resource)); } }, "Exception while creating and pushing resources mock data in MockCacheCollectorFactory", " Mock statistic data for resources have been generated and pushed", false); }); } catch (Exception ex) { Common.Utility.LogError("failed to reinitialize collecting data", ex); } }
public override void RunWithFarm(MITP.ControllerFarmService farm) { try { string farmId = ConfigurationManager.AppSettings[MITP.ControllerFarmService.FARMID_PARAM_NAME]; Resource[] data = null; ResourceBaseServiceClient client = null; try { client = new ResourceBaseServiceClient(); data = client.GetResourcesForFarm(farmId, null); } catch (Exception ex) { Common.Utility.LogError(" Failed to get resources from ResourceBaseService. Exception: " + ex); throw ex; } finally { client.Close(); } var resourceCollector = base.GetResourceCacheCollector(data); var taskCollector = base.GetTaskCacheCollector(); Utility.CreateAndRunRepeatedProcess(5000, false, () => { Common.Utility.ExceptionablePlaceWrapper(() => { foreach (var resource in data) { resourceCollector.push(resource.ResourceName, GenerateResourecMockData(resource)); } }, "Exception while creating and pushing resources mock data in MockCacheCollectorFactory", " Mock statistic data for resources have been generated and pushed",false); }); } catch (Exception ex) { Common.Utility.LogError("failed to reinitialize collecting data", ex); } }