Пример #1
0
        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();
                }
            });
        }
Пример #2
0
            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);
                }
            }
Пример #3
0
            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);
                }
            }
Пример #4
0
        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();
                }
            });
        }