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)); }