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