FYI: CVS HEAD breaks mk-livestatus

Andreas Ericsson ae at op5.se
Fri Nov 12 10:57:32 CET 2010


On 11/11/2010 07:43 PM, Mathieu Gagné wrote:
> On 11/11/10 5:11 AM, Andreas Ericsson wrote:
>> Well, it was dead from the point of view of Nagios. It would help if
>> module authors refrain from using functionality that Nagios itself
>> doesn't use.
> 
> I do agree with you...
> 
>> Anyways, I've restored it now, with a comment that it is to be removed
>> when we release Nagios 4 and are allowed to break the API.
> 
> However a minor version isn't the place to break backward compatibility
> even if the function is considered deprecated.
> 
> APR isn't the reference for Nagios development but:

APR is extremely widely used. glibc even more so, and their rules are far
more stringent than those of APR. Nagios is used by 5 eventbroker modules
(Merlin, NDOUtils, DNX, mk-livestatus, npcdmod). Given this fact, I have
no qualms about removing API's that aren't used by any of the major modules
in order to benefit the Nagios core as a whole.

This is why I asked for help with testing things, both here and on the
op5-users list.

> About "Major Versions":
> 
> "Any kind of change can be made during a major version release.
> Particular types of changes that might occur:
>    * remove or change constants
>    * remove (deprecated) functions
>    * fold together macro-ized function replacements"
> 

And this is why we're waiting with removing any used API's until
Nagios 4, when we'll most likely rework the API structure quite a
bit and make implementation details internal to Nagios so we can
muck about with it without having to worry about breaking public
API's (breaking internal ones can be done anytime, anywhere).

If you want to be vehement about this issue, feel free to go through
the sources and supply _r() versions of all functions that accept a
nagios_macros * variable as its first argument and write simple
wrappers for them. The wrappers should look like this:

foo_func(arg1, arg2, arg2)
{
	return foo_func_r(get_global_macros(), arg1, arg2, arg3);
}

The wrapper should come after the reentrant function in the C
source file so that gcc can optimize the sibling calls properly.

I'll take that patch if you write it. I won't do it myself for
functions that people don't care about.

-- 
Andreas Ericsson                   andreas.ericsson at op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.

------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev




More information about the Developers mailing list