[ClusterLabs Developers] Heads up for potential Pacemaker API change

Ken Gaillot kgaillot at redhat.com
Thu Nov 1 21:41:09 UTC 2018


This would affect most applications using libpe_status.

I ran into a situation recently where a fix would require changing
libpe_status's pe_working_set_t data type.

For most data types in the Pacemaker API, we require (usually by
documented policy rather than code) that library-provided constructors
be used to allocate them. That allows us to add new members at the end
of structs without existing applications needing to be rebuilt.

However we don't have that for pe_working_set_t, so any change to that
currently requires an ABI version bump and thus all applications using
it to be recompiled (and breaking any ABI stability a distro would like
to provide).

I have a PR open currently to add a constructor and destructor for
pe_working_set_t, and document their requirement:

   https://github.com/ClusterLabs/pacemaker/pull/1608

Applications that use the library would need to not only be recompiled
but also modified to use the new functions. The PR gives examples.

A bit of searching turned up only sbd, fence-virt, and pacemaker-mgmt
using libpe_status (and I'm not sure pacemaker-mgmt is still active).
But I'm curious if anyone has custom applications that might be
affected, or has an opinion on the problem and solution here.

In case anyone's interested, the fix that inspired this has its own PR:

   https://github.com/ClusterLabs/pacemaker/pull/1609
-- 
Ken Gaillot <kgaillot at redhat.com>



More information about the Developers mailing list