[ 
https://issues.apache.org/jira/browse/HADOOP-6668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12866425#action_12866425
 ] 

Sanjay Radia commented on HADOOP-6668:
--------------------------------------

Have gone through the Suresh's original proposal from HADOOP-6289 and Tom's 
patch and comments on it. 
There are several areas of disagreements - I will comment on each of them 
separately.
Let me start with metrics - it is very instructive use case with some subtle 
issues.
Suresh got it mostly right in his proposal. Here is slightly modified version 
to highlight the
reasoning behind the classification choices for metrics:
# The actual metrics themsleves - many or most  are *audience-public*;  more 
comfortable tagging them *evolving* rather than *stable*.
The actual metrics have to be documented separately, since making the 
implementation-class audience-pubic is not appropriate. 
** RPC metrics
** JVM Metrics
** HDFS metrics
** MR Metrics
# Interfaces for those implementing metrics (*Audience-LimitedPrivate* MR, HDFS)
Developers use these Interfaces for adding new metrics to the Hadoop system 
(For example classes in item 3. use these interfaces to implement metrics)
** org/apache/hadoop/metrics/util/MetricsDynamicMBeanBase.java hdfs
** org/apache/hadoop/metrics/util/MetricsIntValue.java hdfs
** org/apache/hadoop/metrics/util/MetricsLongValue.java hdfs
** org/apache/hadoop/metrics/util/MetricsRegistry.java hdfs
** org/apache/hadoop/metrics/util/MetricsTimeVaryingInt.java hdfs
** org/apache/hadoop/metrics/util/MetricsTimeVaryingLong.java hdfs
** org/apache/hadoop/metrics/util/MetricsTimeVaryingRate.java hdfs
** org/apache/hadoop/metrics/util/MBeanUtil.java 
** org/apache/hadoop/metrics/Updater.java hdfs mapreduce
** org/apache/hadoop/metrics/MetricsUtil.java 
# Actual implementations of metrics (*Audience-Private*)
(Note the actual metrics can be public - see item 1)
** org/apache/hadoop/ipc/metrics/RpcActivityMBean.java 
** org/apache/hadoop/ipc/metrics/RpcMetrics.java 
** org/apache/hadoop/ipc/metrics/RpcMgt.java 
** org/apache/hadoop/ipc/metrics/RpcMgtMBean.java 
** org/apache/hadoop/metrics/jvm/EventCounter.java 
** org/apache/hadoop/metrics/jvm/JvmMetrics.java 
# Interfaces needed to implement the plugins (See the actual impls in item 5: 
Ganglia, File, etc) - *Audience-public*, evolving
** org/apache/hadoop/metrics/spi/AbstractMetricsContext.java 
** org/apache/hadoop/metrics/spi/CompositeContext.java 
** org/apache/hadoop/metrics/spi/MetricsRecordImpl.java 
** org/apache/hadoop/metrics/spi/MetricValue.java 
** org/apache/hadoop/metrics/spi/OutputRecord.java 
** org/apache/hadoop/metrics/spi/Util.java
# The impelmentation of metrics plugins
 The actual impl is *audience-private* but the class *name* is public since the 
class name is used in the config file.
 So mark the class as *audience-public*(evolving), but mark all its public 
methods as *audience-private*.
** org/apache/hadoop/metrics/ganglia/GangliaContext.java 
** org/apache/hadoop/metrics/file/FileContext.java hdfs
** org/apache/hadoop/metrics/spi/NoEmitMetricsContext.java 
** org/apache/hadoop/metrics/spi/NullContext.java 
** org/apache/hadoop/metrics/spi/NullContextWithUpdateThread.java 
# Metrics Framework Impl - *audience-private*
** org/apache/hadoop/metrics/MetricsContext.java hdfs mapreduce
** org/apache/hadoop/metrics/util/MetricsBase.java 
** org/apache/hadoop/metrics/MetricsRecord.java hdfs mapreduce
** org/apache/hadoop/metrics/ContextFactory.java 
** org/apache/hadoop/metrics/MetricsException.java 
** org/apache/hadoop/metrics/MetricsServlet.java 

> Apply audience and stability annotations to classes in common
> -------------------------------------------------------------
>
>                 Key: HADOOP-6668
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6668
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: documentation
>            Reporter: Tom White
>            Assignee: Tom White
>            Priority: Blocker
>             Fix For: 0.21.0
>
>         Attachments: common.interface-tw-annotated.txt, HADOOP-6668.patch, 
> HADOOP-6668.patch, HADOOP-6668.patch, HADOOP-6668.patch, HADOOP-6668.patch, 
> HADOOP-6668.patch
>
>
> Mark private implementation classes with the InterfaceAudience.Private or 
> InterfaceAudience.LimitedPrivate annotation to exclude them from user Javadoc 
> and JDiff.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to