Example #1
0
        private static EmrActivityState GetStateFromLastStep(JobFlowDetail jobFlowDetail)
        {
            List <StepDetail> steps = jobFlowDetail.Steps;

            if (steps.Count == 0)
            {
                return(EmrActivityState.Completed);
            }

            StepDetail         lastStep      = steps[steps.Count - 1];
            StepExecutionState lastStepState = lastStep.ExecutionStatusDetail.State;

            if (lastStepState == StepExecutionState.PENDING)
            {
                return(EmrActivityState.Running);
            }
            else if (lastStepState != StepExecutionState.COMPLETED)
            {
                return(EmrActivityState.Failed);
            }
            else
            {
                return(EmrActivityState.Completed);
            }
        }
Example #2
0
        /// <summary>
        /// Send a request to the EMR service to get the latest state of the job
        /// </summary>
        /// <param name="emrClient">Instantiated EMR Client to make requests to the Amazon EMR Service</param>
        /// <param name="jobFlowId">EMR Job flow id</param>
        /// <returns>Current state of the EMR Job</returns>
        public async Task <EmrActivityInfo> CheckAsync(IAmazonElasticMapReduce emrClient, String jobFlowId)
        {
            //Read job state
            DescribeJobFlowsRequest request = new DescribeJobFlowsRequest();

            request.JobFlowIds = new List <string>()
            {
                jobFlowId
            };
            DescribeJobFlowsResponse response = await emrClient.DescribeJobFlowsAsync(request);

            if (response.HttpStatusCode != HttpStatusCode.OK)
            {
                return new EmrActivityInfo()
                       {
                           CurrentState = EmrActivityState.Failed
                       }
            }
            ;

            //Map job state into Completed, Failed or Running
            JobFlowDetail    jobFlowDetail = response.JobFlows[0];
            EmrActivityState activityState = EmrJobStateChecker.GetState(jobFlowDetail);

            return(new EmrActivityInfo()
            {
                JobFlowDetail = jobFlowDetail, CurrentState = activityState
            });
        }
Example #3
0
        private static String GetLatestRunningStepName(JobFlowDetail jobFlowDetail)
        {
            foreach (StepDetail stepDetail in jobFlowDetail.Steps)
            {
                if (stepDetail.ExecutionStatusDetail.State == StepExecutionState.RUNNING)
                {
                    return(stepDetail.StepConfig.Name);
                }
            }

            return(Resources.Info_RunningStepNotDefined);
        }
Example #4
0
        private static EmrActivityState GetState(JobFlowDetail jobFlowDetail)
        {
            JobFlowExecutionState latestState = jobFlowDetail.ExecutionStatusDetail.State;

            if (latestState == JobFlowExecutionState.COMPLETED ||
                latestState == JobFlowExecutionState.WAITING ||
                latestState == JobFlowExecutionState.TERMINATED)
            {
                return(EmrJobStateChecker.GetStateFromLastStep(jobFlowDetail));
            }
            else if (latestState == JobFlowExecutionState.FAILED)
            {
                return(EmrActivityState.Failed);
            }
            else
            {
                return(EmrActivityState.Running);
            }
        }