qa/628 has been run 100 times without failure since these changes were made.
Changes committed to git://git.performancecopilot.org/kenj/pcp.git dev
debian/control | 2 -
debian/libpcp-pmda3-dev.install | 1
man/man3/pmdadaemon.3 | 24 +++++++++++++-
man/man3/pmdadso.3 | 24 +++++++++++++-
man/man3/pmdainterfacemoved.3 | 68 ++++++++++++++++++++++++++++++++++++++++
qa/628 | 33 ++++++++++++++++++-
src/include/pcp/pmda.h | 2 +
src/libpcp_pmda/src/callback.c | 6 ++-
src/libpcp_pmda/src/exports | 5 ++
src/libpcp_pmda/src/open.c | 15 ++++++++
src/pmcd/src/GNUmakefile | 2 -
src/pmcd/src/config.c | 23 ++++++++++---
12 files changed, 194 insertions(+), 11 deletions(-)
commit 4a076580e08159414803f67d15332f27e77ef0d5
Author: Ken McDonell <kenj@xxxxxxxxxxxxxxxx>
Date: Mon Dec 15 15:49:15 2014 +1100
qa/628: more diags, wait properly in _cleanup()
commit 87908863bb33c4565cd6b42268311470ef8649bc
Author: Ken McDonell <kenj@xxxxxxxxxxxxxxxx>
Date: Mon Dec 15 15:46:22 2014 +1100
pmcd - use link with -lpcp_pmda, use pmdaInterfaceMoved()
Accommodate changes in e_ext_t within libpcp_pmda so that pmcd
actions juggling pmdaInterface structs do not break the behaviour
of DSO PMDAs.
commit cf8c3e10c8a8d82b8f10f220737a7ce0c76b4c88
Author: Ken McDonell <kenj@xxxxxxxxxxxxxxxx>
Date: Mon Dec 15 15:33:56 2014 +1100
libpcp_pmda - add pmdaInterfaceMoved() function
The recent change to e_ext_t replaced the int pmda_interface field
(held a PMDA_INTERFACE_N value) with a back pointer to the base of
the pmdaInterface struct.
It was believed that this structure was only manipulated within
libpcp_pmda, but co-incident and non-deterministic failures of
qa/628 led to some suspicion that this assertion was not correct.
The e_ext_t struct IS only manipulated within libpcp_pmda, but the
the associated pmdaInterface struct is created outside libpcp_pmda,
and the back pointer ONLY works if the pmdaInterface struct is NOT
moved or relocated.
For most PMDAs this is not a problem. But pmcd sometimes will shuffle
and array of pmdaInterface structs and sometimes realloc the whole array,
thereby both moving AND relocating the pmdaInterface struct.
The new pmdaInterfaceMoved() routine re-establishes the back pointer
after a pmdaInterface struct is moved.
Also updated the man pages for pmdaDaemon() and pmdaDSO() to
document the caveat that the pmdaInterface struct passed by pointer
to these routines is not expected to be moved, and if it is moved
pmdaInterfaceMoved() is your new best friend.
commit 2312fefe64d266bb94751a4fc6016a485f00a620
Author: Ken McDonell <kenj@xxxxxxxxxxxxxxxx>
Date: Fri Dec 12 15:49:54 2014 +1100
Revert "debian/control: add dependency on time package"
This reverts commit c8fa3b5f389dd994a6c283123fdde62e993222d1.
Change was already done, this commit undid it, so revert that!!
|