/// <summary>Create the payload for the HeartBeat.</summary> /// <remarks> /// Create the payload for the HeartBeat. Mainly the list of /// <see cref="Org.Apache.Hadoop.Yarn.Server.Nodemanager.Api.Protocolrecords.LocalResourceStatus /// "/> /// es /// </remarks> /// <returns> /// a /// <see cref="Org.Apache.Hadoop.Yarn.Server.Nodemanager.Api.Protocolrecords.LocalizerStatus /// "/> /// that can be sent via heartbeat. /// </returns> /// <exception cref="System.Exception"/> private LocalizerStatus CreateStatus() { IList <LocalResourceStatus> currentResources = new AList <LocalResourceStatus>(); // TODO: Synchronization?? for (IEnumerator <LocalResource> i = pendingResources.Keys.GetEnumerator(); i.HasNext ();) { LocalResource rsrc = i.Next(); LocalResourceStatus stat = recordFactory.NewRecordInstance <LocalResourceStatus>(); stat.SetResource(rsrc); Future <Path> fPath = pendingResources[rsrc]; if (fPath.IsDone()) { try { Path localPath = fPath.Get(); stat.SetLocalPath(ConverterUtils.GetYarnUrlFromPath(localPath)); stat.SetLocalSize(FileUtil.GetDU(new FilePath(localPath.GetParent().ToUri()))); stat.SetStatus(ResourceStatusType.FetchSuccess); } catch (ExecutionException e) { stat.SetStatus(ResourceStatusType.FetchFailure); stat.SetException(SerializedException.NewInstance(e.InnerException)); } catch (CancellationException e) { stat.SetStatus(ResourceStatusType.FetchFailure); stat.SetException(SerializedException.NewInstance(e)); } // TODO shouldn't remove until ACK i.Remove(); } else { stat.SetStatus(ResourceStatusType.FetchPending); } currentResources.AddItem(stat); } LocalizerStatus status = recordFactory.NewRecordInstance <LocalizerStatus>(); status.SetLocalizerId(localizerId); status.AddAllResources(currentResources); return(status); }
internal static LocalResourceStatus CreateLocalResourceStatus() { LocalResourceStatus ret = recordFactory.NewRecordInstance <LocalResourceStatus>(); NUnit.Framework.Assert.IsTrue(ret is LocalResourceStatusPBImpl); ret.SetResource(CreateResource()); ret.SetLocalPath(ConverterUtils.GetYarnUrlFromPath(new Path("file:///local/foo/bar" ))); ret.SetStatus(ResourceStatusType.FetchSuccess); ret.SetLocalSize(4443L); Exception e = new Exception("Dingos."); e.SetStackTrace(new StackTraceElement[] { new StackTraceElement("foo", "bar", "baz" , 10), new StackTraceElement("sbb", "one", "onm", 10) }); ret.SetException(SerializedException.NewInstance(e)); return(ret); }
/// <exception cref="System.Exception"/> public virtual void TestLocalResourceStatusSerDe() { LocalResourceStatus rsrcS = CreateLocalResourceStatus(); NUnit.Framework.Assert.IsTrue(rsrcS is LocalResourceStatusPBImpl); LocalResourceStatusPBImpl rsrcPb = (LocalResourceStatusPBImpl)rsrcS; DataOutputBuffer @out = new DataOutputBuffer(); rsrcPb.GetProto().WriteDelimitedTo(@out); DataInputBuffer @in = new DataInputBuffer(); @in.Reset(@out.GetData(), 0, @out.GetLength()); YarnServerNodemanagerServiceProtos.LocalResourceStatusProto rsrcPbD = YarnServerNodemanagerServiceProtos.LocalResourceStatusProto .ParseDelimitedFrom(@in); NUnit.Framework.Assert.IsNotNull(rsrcPbD); LocalResourceStatus rsrcD = new LocalResourceStatusPBImpl(rsrcPbD); NUnit.Framework.Assert.AreEqual(rsrcS, rsrcD); NUnit.Framework.Assert.AreEqual(CreateResource(), rsrcS.GetResource()); NUnit.Framework.Assert.AreEqual(CreateResource(), rsrcD.GetResource()); }
public virtual void AddResourceStatus(LocalResourceStatus resource) { stats.AddItem(resource); }
private YarnServerNodemanagerServiceProtos.LocalResourceStatusProto ConvertToProtoFormat (LocalResourceStatus s) { return(((LocalResourceStatusPBImpl)s).GetProto()); }
public virtual void AddResourceStatus(LocalResourceStatus resource) { InitResources(); this.resources.AddItem(resource); }