Metrics/JMX is covered by our compatibility guidelines:

http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/Comp
atibility.html#MetricsJMX


Metrics/JMX is similar to our usage of Protocol Buffers/JSON that I
mentioned.  It supports backwards-compatible evolution if the change is
done correctly.  Adding new fields/beans is compatible.  Changing the
names or data types of existing fields/beans is incompatible.  Deleting
existing fields/beans is incompatible.

--Chris Nauroth




On 4/24/15, 11:19 AM, "Yongjun Zhang" <yzh...@cloudera.com> wrote:

>Thanks Allen and Chris!
>
>What about adding new entries to jmx report? Somehow I had the impression
>that if we add new entries to it, it's not considered incompatible. Often
>within the same minor release, we want to add new info to jmx report
>instead of waiting for a major release.
>
>For CLI like fsck, maybe we can add a new command line option to enable
>the
>change, and if the command line option is not enabled, don't change the
>output, so we can still commit the change within the same release line?
>
>Thanks.
>
>--Yongjun
>
>
>On Fri, Apr 24, 2015 at 11:05 AM, Chris Nauroth <cnaur...@hortonworks.com>
>wrote:
>
>> Allen, thank you for calling this out.  I was not aware of this part of
>> the compatibility guidelines.  I committed one of those fsck changes in
>> HDFS-7933.  I see you flagged the issue as incompatible, which agrees
>>with
>> the compatibility guidelines.
>>
>> "Changing the path of a command, removing or renaming command line
>> options, the order of arguments, or the command return code and output
>> break compatibility and may adversely affect users."
>>
>> Most of this intuitively makes sense.  Even ignorant of the
>>compatibility
>> guidelines, I would have known to push back on patches that change the
>> path, remove or rename existing options, or change the order of
>>arguments.
>>
>> HDFS-7933 was an example of an output change, and I find this part of
>>the
>> compatibility guidelines much more challenging.  We need to be able to
>> evolve CLI output within a release line.  On the protocol side, our use
>>of
>> Protocol Buffers and JSON supports evolution if we use it correctly.
>>How
>> can we achieve the equivalent for the CLI?  For example, can we turn
>> HDFS-7933 into a backwards-compatible change if it preserves the old
>> output, and only adds the new information if the user passes a new
>> argument, such as -count-decom?
>>
>> Are there other specific issues that you have in mind for CLI
>> incompatibility problems?  Let's see if we can find a way to amend them
>>to
>> satisfy the compatibility guidelines.
>>
>> --Chris Nauroth
>>
>>
>>
>>
>> On 4/24/15, 1:02 AM, "Allen Wittenauer" <a...@altiscale.com> wrote:
>>
>> >
>> >On Apr 24, 2015, at 5:53 AM, Yongjun Zhang <yzh...@cloudera.com> wrote:
>> >
>> >>
>> >> Basically we are adding two additional lines to the report (as
>> >>highlighted
>> >> above).
>> >>
>> >> Theoretically if a tool parses existing fsck report and expects the
>> >> 'Corrupt blocks" entry to be right after the "Average block
>>replication"
>> >> entry, then the change would fail the tool. But is this really a
>> >>concern?
>> >>
>> >> I guess this is not really a concern, so I don't think this change is
>> >> incompatible. but would anyone please comment?
>> >>
>> >
>> >       If it changes the output of a CLI command, it's an incompatible
>> change:
>> >
>> >
>> 
>>http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/Co
>> >mpatibility.html#Command_Line_Interface_CLI
>> >
>> >
>> >       Other changes to fsck have been punted to 3.x for the *exact
>>same
>> >reason*. In other cases, committers have violated these rules in
>>branch-2
>> >(not just to fsck, but to all sorts of other command line bits, even
>> >removing command options!) to the point that our compatibility
>>guarantees
>> >are pretty much useless.  It's open season on nuking the ecosystem. :(
>> >
>> >       People not following the compat rules is one of the reasons I
>> started
>> >building my own changes and release notes, because we have too many
>> >committers either accidentally committing incompatible changes or just
>> >outright lying about them.  (Š and, as much as I hate to say it, the
>>HDFS
>> >project is easily the biggest offender.)
>>
>>

Reply via email to