private void startManager(TaskAssignResponse taskAssign) { RunningTask++; logger.Info("Starting task manager for task " + taskAssign.Task.guid + "..."); TaskRunnerManager manager = new TaskRunnerManager(taskAssign); manager.TaskStateChangedHandler += new TaskStateChanged(delegate(TaskRunnerManager sender, TaskState state) { string guid = sender.TaskAssign.Task.guid; logger.Info("State of task " + guid + " changed to " + state); taskService.UpdateState(guid, state); }); manager.TaskStoppedHandler += new TaskStopped(delegate(TaskRunnerManager sender) { RunningTask--; }); manager.TaskProgressChangedHandler += new TaskProgressChanged(delegate(TaskRunnerManager sender, Dictionary <string, string> modelProgress) { taskService.UpdateModelProgress(taskAssign.Task.guid, new ModelProgress() { Kvs = modelProgress }); }); manager.Run(); }
public void Run() { IsRunning = true; logger.Info("InstanceKeeper [" + InstanceName + "] is running."); using (InstanceServiceClient instanceService = new InstanceServiceClient()) { while (IsRunning) { try { logger.Info("Invoking heartbeat..."); instanceService.Heartbeat(new InstanceHeartbeatStatus() { InstanceName = InstanceName, CurrentRunningTask = RunningTask, MaxRunningTask = MaxRunningTask, SystemStatus = new NodeSystemStatus() { TotalRamSize = SysUtil.getTotalRamSize(), AvailableRamSize = SysUtil.getAvailableRamSize(), ProcessCount = SysUtil.getProcessCount(), LoadAverage = SysUtil.getLoadAverage() } }); logger.Info("Heartbeat sent."); } catch (FaultException ex) { logger.Error("Exception occured during heartbeat: " + ex.Reason); } try { if (RunningTask < MaxRunningTask) { TaskAssignResponse taskAssign = taskService.AssignPendingTask(InstanceName); new Thread(new ThreadStart(delegate() { try { startManager(taskAssign); } catch (Exception e) { logger.Crit("Failed to start task manager: " + e.ToString()); } })).Start(); } } catch { logger.Debug("No task available. "); } Thread.Sleep(HeartbeatInterval); } } }
public TaskRunnerManager(TaskAssignResponse taskAssign) { TaskAssign = taskAssign; }
private void startManager(TaskAssignResponse taskAssign) { RunningTask++; logger.Info("Starting task manager for task " + taskAssign.Task.guid + "..."); TaskRunnerManager manager = new TaskRunnerManager(taskAssign); manager.TaskStateChangedHandler += new TaskStateChanged(delegate(TaskRunnerManager sender, TaskState state) { string guid = sender.TaskAssign.Task.guid; logger.Info("State of task " + guid + " changed to " + state); taskService.UpdateState(guid, state); }); manager.TaskStoppedHandler += new TaskStopped(delegate(TaskRunnerManager sender) { RunningTask--; }); manager.TaskProgressChangedHandler += new TaskProgressChanged(delegate(TaskRunnerManager sender, Dictionary<string, string> modelProgress) { taskService.UpdateModelProgress(taskAssign.Task.guid, new ModelProgress() { Kvs = modelProgress }); }); manager.Run(); }