public WritingContainerFinishEvent(ContainerId containerId, ContainerFinishData containerFinish
                                    )
     : base(WritingHistoryEventType.ContainerFinish)
 {
     this.containerId     = containerId;
     this.containerFinish = containerFinish;
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual ContainerHistoryData GetContainer(ContainerId containerId)
 {
     FileSystemApplicationHistoryStore.HistoryFileReader hfReader = GetHistoryFileReader
                                                                        (containerId.GetApplicationAttemptId().GetApplicationId());
     try
     {
         bool readStartData  = false;
         bool readFinishData = false;
         ContainerHistoryData historyData = ContainerHistoryData.NewInstance(containerId,
                                                                             null, null, null, long.MinValue, long.MaxValue, null, int.MaxValue, null);
         while ((!readStartData || !readFinishData) && hfReader.HasNext())
         {
             FileSystemApplicationHistoryStore.HistoryFileReader.Entry entry = hfReader.Next();
             if (entry.key.id.Equals(containerId.ToString()))
             {
                 if (entry.key.suffix.Equals(StartDataSuffix))
                 {
                     ContainerStartData startData = ParseContainerStartData(entry.value);
                     MergeContainerHistoryData(historyData, startData);
                     readStartData = true;
                 }
                 else
                 {
                     if (entry.key.suffix.Equals(FinishDataSuffix))
                     {
                         ContainerFinishData finishData = ParseContainerFinishData(entry.value);
                         MergeContainerHistoryData(historyData, finishData);
                         readFinishData = true;
                     }
                 }
             }
         }
         if (!readStartData && !readFinishData)
         {
             return(null);
         }
         if (!readStartData)
         {
             Log.Warn("Start information is missing for container " + containerId);
         }
         if (!readFinishData)
         {
             Log.Warn("Finish information is missing for container " + containerId);
         }
         Log.Info("Completed reading history information of container " + containerId);
         return(historyData);
     }
     catch (IOException e)
     {
         Log.Error("Error when reading history file of container " + containerId, e);
         throw;
     }
     finally
     {
         hfReader.Close();
     }
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual void ContainerFinished(ContainerFinishData containerFinish)
 {
     FileSystemApplicationHistoryStore.HistoryFileWriter hfWriter = GetHistoryFileWriter
                                                                        (containerFinish.GetContainerId().GetApplicationAttemptId().GetApplicationId());
     System.Diagnostics.Debug.Assert(containerFinish is ContainerFinishDataPBImpl);
     try
     {
         hfWriter.WriteHistoryData(new FileSystemApplicationHistoryStore.HistoryDataKey(containerFinish
                                                                                        .GetContainerId().ToString(), FinishDataSuffix), ((ContainerFinishDataPBImpl)containerFinish
                                                                                                                                          ).GetProto().ToByteArray());
         Log.Info("Finish information of container " + containerFinish.GetContainerId() +
                  " is written");
     }
     catch (IOException e)
     {
         Log.Error("Error when writing finish information of container " + containerFinish
                   .GetContainerId(), e);
     }
 }
        /// <exception cref="System.IO.IOException"/>
        public virtual void ContainerFinished(ContainerFinishData containerFinish)
        {
            ConcurrentMap <ContainerId, ContainerHistoryData> subMap = GetSubMap(containerFinish
                                                                                 .GetContainerId().GetApplicationAttemptId());
            ContainerHistoryData data = subMap[containerFinish.GetContainerId()];

            if (data == null)
            {
                throw new IOException("The finish information of container " + containerFinish.GetContainerId
                                          () + " is stored before" + " the start information.");
            }
            // Make the assumption that ContainerState should not be null if
            // the finish information is already recorded
            if (data.GetContainerState() != null)
            {
                throw new IOException("The finish information of container " + containerFinish.GetContainerId
                                          () + " is already stored.");
            }
            data.SetFinishTime(containerFinish.GetFinishTime());
            data.SetDiagnosticsInfo(containerFinish.GetDiagnosticsInfo());
            data.SetContainerExitStatus(containerFinish.GetContainerExitStatus());
            data.SetContainerState(containerFinish.GetContainerState());
        }
 private static void MergeContainerHistoryData(ContainerHistoryData historyData, ContainerFinishData
                                               finishData)
 {
     historyData.SetFinishTime(finishData.GetFinishTime());
     historyData.SetDiagnosticsInfo(finishData.GetDiagnosticsInfo());
     historyData.SetContainerExitStatus(finishData.GetContainerExitStatus());
     historyData.SetContainerState(finishData.GetContainerState());
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual void ContainerFinished(ContainerFinishData containerFinish)
 {
 }
 public virtual void ContainerFinished(RMContainer container)
 {
     if (historyServiceEnabled)
     {
         dispatcher.GetEventHandler().Handle(new WritingContainerFinishEvent(container.GetContainerId
                                                                                 (), ContainerFinishData.NewInstance(container.GetContainerId(), container.GetFinishTime
                                                                                                                         (), container.GetDiagnosticsInfo(), container.GetContainerExitStatus(), container
                                                                                                                     .GetContainerState())));
     }
 }
 /// <exception cref="System.IO.IOException"/>
 protected internal virtual void WriteContainerFinishData(ContainerId containerId)
 {
     store.ContainerFinished(ContainerFinishData.NewInstance(containerId, 0, containerId
                                                             .ToString(), 0, ContainerState.Complete));
 }