示例#1
0
        public ClusteredRecoveryJobState GetJobState(string identifier)
        {
            ClusteredRecoveryJobState state = new ClusteredRecoveryJobState(identifier);

            try
            {
                RecoveryConfiguration config = new RecoveryConfiguration();
                config.Identifier = identifier;
                state.Identifier  = identifier;
                if (_runningClusteredJobMap.ContainsKey(identifier))
                {
                    IClusteredRecoveryJob _job = ((IClusteredRecoveryJob)_runningClusteredJobMap[identifier]);
                    state = _job.CurrentState(config) as ClusteredRecoveryJobState;
                }
                else
                {
                    ClusterJobInfoObject clusterJobs = _configurationStore.GetRecoveryJobData(identifier);
                    if (clusterJobs != null)// this should always be equyal
                    {
                        state = clusterJobs.ExecutionState;
                    }
                    else
                    {
                        state.Message = "Invalid identifier provided";
                    }
                    // query db for
                }
            }
            catch (Exception ex)
            {
                if (LoggerManager.Instance.RecoveryLogger != null && LoggerManager.Instance.RecoveryLogger.IsErrorEnabled)
                {
                    LoggerManager.Instance.RecoveryLogger.Error("RecoveryManager.GetState()", ex.ToString());
                }
                state.Message = ex.Message;
            }
            return(state);
        }
示例#2
0
        RecoveryOperationStatus IRecoveryManager.CancelRecoveryJob(string identifier)
        {
            RecoveryOperationStatus state = new RecoveryOperationStatus(RecoveryStatus.Failure);

            state.Message = "Failure during cancellation"; // change this default message

            try
            {
                RecoveryConfiguration config = new RecoveryConfiguration();
                config.Identifier   = identifier;
                state.JobIdentifier = identifier;
                if (_runningClusteredJobMap.ContainsKey(identifier))
                {
                    if (LoggerManager.Instance.RecoveryLogger != null && LoggerManager.Instance.RecoveryLogger.IsInfoEnabled)
                    {
                        LoggerManager.Instance.RecoveryLogger.Info("RecoveryManager.CancelRecoveryJob()", "Explicit canceling initiated");
                    }
                    IClusteredRecoveryJob _job = ((IClusteredRecoveryJob)_runningClusteredJobMap[identifier]);
                    state = _job.Cancel(config, explicitCancel: true);
                    // remove job from active config
                    RemoveRunningJob(identifier);
                }
                else
                {
                    state.Message = "Invalid identifier provided";
                }
            }
            catch (Exception ex)
            {
                if (LoggerManager.Instance.RecoveryLogger != null && LoggerManager.Instance.RecoveryLogger.IsErrorEnabled)
                {
                    LoggerManager.Instance.RecoveryLogger.Error("RecoveryManager.Cancel()", ex.ToString());
                }
                state.Message = ex.Message;
            }
            return(state);
        }
示例#3
0
        RecoveryOperationStatus[] IRecoveryManager.CancelAllRecoveryJobs()
        {
            RecoveryOperationStatus[] state = new RecoveryOperationStatus[_runningClusteredJobMap.Count];// new RecoveryOperationStatus(RecoveryStatusType.failure);
            //state.Message = "Failure during cancellation"; // change this default message

            try
            {
                foreach (string _key in _runningClusteredJobMap.Keys)
                {
                    IClusteredRecoveryJob _job = ((IClusteredRecoveryJob)_runningClusteredJobMap[_key]);

                    //state = _job.Cancel(_key);
                }
            }
            catch (Exception ex)
            {
                if (LoggerManager.Instance.RecoveryLogger != null && LoggerManager.Instance.RecoveryLogger.IsErrorEnabled)
                {
                    LoggerManager.Instance.RecoveryLogger.Error("RecoveryManager.CancelAll()", ex.ToString());
                }
                //  state.Message = ex.Message;
            }
            return(state);
        }