On 12 December 2014 at 04:35, malcolm <malcolm.kaval...@oracle.com> wrote:

> So, turns out that if I had naively changed all calls to terror or
> references to sys_errlist, to using strerror_r, then I would have broken
> code for Windows and HPUX (and possibly other OSes).
>
> If we are to assume that current code runs fine on all platforms (maybe
> even AIX an MacOS, for example), then any change/additions made to the code
> and not ifdeffed appropriately can break on other OSes. On the other hand,
> too many ifdefs can pollute the code source and render it less readable
> (though possibly less important).
>
>
readability is less important that correct functionality. The native
libraries are not the main focus of development, and less people work on
them. That's a strength: those that do are presumably competent, and a
weakness: less people are able to review and devlop it.


> In the general case what are code contributors responsibilities to adding
> code regarding OSes besides Linux ?
> What OSes does jenkins test on ?
>

ASF jenkins currently tests on Debian on a pool of hosts

https://builds.apache.org/view/H-L/view/Hadoop/


There are some windows hosts to which jenkins could also schedule work,
though I've found them problematic (you can't run MiniYARN cluster there,
specifically, due to some FS permissions
https://builds.apache.org/job/slider-develop-windows/ )

There is a Solaris host in the jenkins pool, adding a hadoop-solaris would
be the best way of guaranteeing that regressions in the code which broke
solaris would be picked up early.


> I guess maintainers of code on non-tested platforms are responsible for
> their own testing ?
>
>
My colleagues run jenkins builds and tests on our other supported
platforms, RHEL/CentOS and Windows; regressions which break these will be
caught relatively rapidly. As an example from yesterday,
https://issues.apache.org/jira/browse/HDFS-7514 , "TestTextCommand fails on
Windows". Path setup is always a problem there, usually in tests.

I assume others are doing similar things, especially those using Apache
Bigtop as a test suite for alternative filesystems. The tests there are
what you should really try doing internally.

OS/X is one of the two primary dev platforms, any regression there will be
picked up by the engineers within 24h


> How do we avoid the ping-pong effect, i.e. I make a generic change to code
> which breaks on Windows, then the Windows maintainer reverts changes to
> break on Solaris for example ? Or does this not happen in actuality ?
>

Ideally regressions should be picked up during the review phase

If something does slip through, then the following is likely to take place

   1. A new JIRA is created, with a "caused-by" link pointing to the patch
   which caused the problem.
   2. Either: the patch at fault is reverted, pending a revised, fixed
   version.
   3. A patch is applied to fix the problem. This is likely if the problem
   is trivial.

There isn't likely to be a ping-pong effect as if a patch breaks
compatibility and is reverted. It then effectively responsibility of the
authors of the original patch to fix things and resubmit a working patch.
And, after the first failure, reviews will be a lot stricter.

More succinctly: *stuff which causes regressions doesn't get in*

One thing you can do is set up a Windows VM for build and test -we have the
instructions, I have such a VM to hand. I'd also recommend you have a
kerberized linux VM to test what happens there.

You also have the freedom to review other submitted patches and highlight
where you think they will cause problems on Solaris. Unless/until you
become a committer you don't get the right to say +1 and get the patch in,
but you can certainly flag up where a change isn't compatible, then work
with the patch developers to nurture it into shape.


Where we do have trouble in the ASF is
 -nonstandard JVMs, i.e. anything other than oracle and openjdk. You should
not have that problem.
 -native filesystems that don't get used much (yet)
 -non-HDFS filesystems. This is why we don't support any except the object
store libraries bundled in the hadoop source tree, object stores anyone
with the relevant cloud logins can test from their desk.
 -nonstandard networking setups. Anything to test there and find problems
is welcome.

The shell scripts are also undertested and only intermittently maintained
—there's been recent work there in HADOOP-9902(?)  which is a great
improvement to trunk. If you can help test the CLI on your OS, that will
save you support calls.

-Steve

-- 
CONFIDENTIALITY NOTICE
NOTICE: This message is intended for the use of the individual or entity to 
which it is addressed and may contain information that is confidential, 
privileged and exempt from disclosure under applicable law. If the reader 
of this message is not the intended recipient, you are hereby notified that 
any printing, copying, dissemination, distribution, disclosure or 
forwarding of this communication is strictly prohibited. If you have 
received this communication in error, please contact the sender immediately 
and delete it from your system. Thank You.

Reply via email to