<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<comments
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xsi:noNamespaceSchemaLocation='comments.xsd'
  name="Apache_Hadoop_YARN_Common_2.7.2_to_Apache_Hadoop_YARN_Common_3.3.1"
  jdversion="1.0.9">

<!-- This file contains comments for a JDiff report. -->
<!-- It is used only in generating the report, and does not need to ship with the final report. -->

<!-- The id attribute in an identifier element identifiers the change as noted in the report. -->
<!-- An id has the form package[.class[.[ctor|method|field].signature]], where [] indicates optional text. -->
<!-- A comment element can have multiple identifier elements, which will -->
<!-- will cause the same text to appear at each place in the report, but -->
<!-- will be converted to separate comments when the comments file is used. -->
<!-- HTML tags in the text field will appear in the report. -->
<comment>
  <identifier id="org.apache.hadoop.yarn"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.ContainerLogAppender"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.RMProxy"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.RMProxy.createRMProxy_removed(org.apache.hadoop.conf.Configuration, java.lang.Class, java.net.InetSocketAddress)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.RMProxy.createRetryPolicy_added(org.apache.hadoop.conf.Configuration, long, long, boolean)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api.AppAdminClient"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api.TimelineClient"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api.TimelineClient.putDomain_added(org.apache.hadoop.yarn.api.records.ApplicationAttemptId, org.apache.hadoop.yarn.api.records.timeline.TimelineDomain)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api.TimelineClient.putEntities_added(org.apache.hadoop.yarn.api.records.ApplicationAttemptId, org.apache.hadoop.yarn.api.records.timeline.TimelineEntityGroupId, org.apache.hadoop.yarn.api.records.timeline.TimelineEntity[])"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api.TimelineReaderClient"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api.impl"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.client.api.impl.TimelineReaderClientImpl"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.AsyncDispatcher"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.AsyncDispatcher.addMetrics_added(org.apache.hadoop.yarn.metrics.EventTypeMetrics, java.lang.Class)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.AsyncDispatcher.ctor_added(java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.AsyncDispatcher.disableExitOnDispatchException_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.AsyncDispatcher.isStopped_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.Dispatcher"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.Dispatcher.DEFAULT_DISPATCHER_EXIT_ON_ERROR"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.event.Dispatcher.DISPATCHER_EXIT_ON_ERROR_KEY"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat.LogReader"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat.LogReader.readAContainerLogsForALogType_added(java.io.DataInputStream, java.io.PrintStream, long, long)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat.LogReader.readContainerLogsForALogType_added(java.io.DataInputStream, java.io.PrintStream, long, java.util.List)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat.LogReader.readContainerLogsForALogType_added(java.io.DataInputStream, java.io.PrintStream, long, java.util.List, long)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation.filecontroller"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation.filecontroller.ifile"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.logaggregation.filecontroller.tfile"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.AccessRequest"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.ctor_added(org.apache.hadoop.yarn.api.records.ContainerId, int, java.lang.String, java.lang.String, org.apache.hadoop.yarn.api.records.Resource, long, int, long, org.apache.hadoop.yarn.api.records.Priority, long, org.apache.hadoop.yarn.api.records.LogAggregationContext, java.lang.String, org.apache.hadoop.yarn.server.api.ContainerType, org.apache.hadoop.yarn.api.records.ExecutionType)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.ctor_added(org.apache.hadoop.yarn.api.records.ContainerId, int, java.lang.String, java.lang.String, org.apache.hadoop.yarn.api.records.Resource, long, int, long, org.apache.hadoop.yarn.api.records.Priority, long, org.apache.hadoop.yarn.api.records.LogAggregationContext, java.lang.String, org.apache.hadoop.yarn.server.api.ContainerType, org.apache.hadoop.yarn.api.records.ExecutionType, long)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.ctor_added(org.apache.hadoop.yarn.api.records.ContainerId, int, java.lang.String, java.lang.String, org.apache.hadoop.yarn.api.records.Resource, long, int, long, org.apache.hadoop.yarn.api.records.Priority, long, org.apache.hadoop.yarn.api.records.LogAggregationContext, java.lang.String, org.apache.hadoop.yarn.server.api.ContainerType, org.apache.hadoop.yarn.api.records.ExecutionType, long, java.util.Set)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.ctor_added(org.apache.hadoop.yarn.api.records.ContainerId, java.lang.String, java.lang.String, org.apache.hadoop.yarn.api.records.Resource, long, int, long, org.apache.hadoop.yarn.api.records.Priority, long, org.apache.hadoop.yarn.api.records.LogAggregationContext, java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.ctor_added(org.apache.hadoop.yarn.api.records.ContainerId, java.lang.String, java.lang.String, org.apache.hadoop.yarn.api.records.Resource, long, int, long, org.apache.hadoop.yarn.api.records.Priority, long, org.apache.hadoop.yarn.api.records.LogAggregationContext, java.lang.String, org.apache.hadoop.yarn.server.api.ContainerType)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.ctor_changed(org.apache.hadoop.yarn.api.records.ContainerId, java.lang.String, java.lang.String, org.apache.hadoop.yarn.api.records.Resource, long, int, long, org.apache.hadoop.yarn.api.records.Priority, long, org.apache.hadoop.yarn.api.records.LogAggregationContext)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.getAllcationTags_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.getAllocationRequestId_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.getContainerType_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.getExecutionType_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.getNodeLabelExpression_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.security.ContainerTokenIdentifier.getVersion_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state.InvalidStateTransitionException"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state.InvalidStateTransitonException"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state.StateMachine"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state.StateMachine.doTransition_changed(EVENTTYPE, EVENT)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state.StateMachineFactory"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state.StateMachineFactory.make_added(OPERAND, STATE, org.apache.hadoop.yarn.state.StateTransitionListener)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.state.StateTransitionListener"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.AbstractLivelinessMonitor"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.AbstractLivelinessMonitor.ctor_added(java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.AbstractLivelinessMonitor.getExpireInterval_added(O)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.AbstractLivelinessMonitor.register_added(O, long)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.AbstractLivelinessMonitor.setMonitorInterval_changed(long)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.AbstractLivelinessMonitor.setResetTimeOnStart_added(boolean)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.BoundedAppender"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.ConverterUtils"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.MonotonicClock"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.ResourceCalculatorProcessTree"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.ResourceCalculatorProcessTree.getCumulativeRssmem_removed()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.ResourceCalculatorProcessTree.getCumulativeRssmem_removed(int)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.ResourceCalculatorProcessTree.getCumulativeVmem_removed()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.ResourceCalculatorProcessTree.getCumulativeVmem_removed(int)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.ResourceCalculatorProcessTree.initialize_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.SystemClock"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.SystemClock.getInstance_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.DEFAULT_FLOW_VERSION"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.FLOW_NAME_TAG_PREFIX"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.FLOW_RUN_ID_TAG_PREFIX"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.FLOW_VERSION_TAG_PREFIX"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.createTimelineAbout_added(java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.dumpTimelineRecordtoJSON_changed(java.lang.Object)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.dumpTimelineRecordtoJSON_changed(java.lang.Object, boolean)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.generateDefaultFlowName_added(java.lang.String, org.apache.hadoop.yarn.api.records.ApplicationId)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.generateFlowNameTag_added(java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.generateFlowRunIdTag_added(long)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.generateFlowVersionTag_added(java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.getTimelineServiceVersion_added(org.apache.hadoop.conf.Configuration)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.shortenFlowName_added(java.lang.String, org.apache.hadoop.conf.Configuration)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.timelineServiceEnabled_added(org.apache.hadoop.conf.Configuration)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.yarn.util.timeline.TimelineUtils.timelineServiceV1_5Enabled_added(org.apache.hadoop.conf.Configuration)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>

</comments>
