Skip to content

Commit

Permalink
Merge branch 'main' of ../pcp
Browse files Browse the repository at this point in the history
  • Loading branch information
kmcdonell committed Mar 4, 2024
2 parents f0ec294 + 3225265 commit 7be77e5
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 6 deletions.
63 changes: 63 additions & 0 deletions qa/1488
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/bin/sh
# PCP QA Test No. 1488
# check migrate_pid_service() as used by pm{log,pmie}ctl -m
#
# Copyright (c) 2024 Ken McDonell. All Rights Reserved.
#

if [ $# -eq 0 ]
then
seq=`basename $0`
echo "QA output created by $seq"
else
# use $seq from caller, unless not set
[ -n "$seq" ] || seq=`basename $0`
echo "QA output created by `basename $0` $*"
fi

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

[ "$PCPQA_SYSTEMD" = no ] && _notrun "we're not using systemd here"
[ -n "$PCP_SYSTEMDUNIT_DIR" ] || _notrun "PCP_SYSTEMDUNIT_DIR not set, so no systemd here"
[ -f $PCP_SYSTEMDUNIT_DIR/pmlogger_farm.service ] || _notrun "$PCP_SYSTEMDUNIT_DIR/pmlogger_farm.service not found"

$sudo rm -rf $tmp $tmp.* $seq.full

_cleanup()
{
cd $here
$sudo rm -rf $tmp $tmp.*
}

status=0 # success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_filter()
{
sed \
-e "s@$$@MYPID@g" \
# end
}

echo my pid $$ >>$tmp.full

# real QA test starts here

cat <<End-of-File >$tmp.sh
#!/bin/sh
. $PCP_SHARE_DIR/lib/rc-proc.sh
migrate_pid_service -v $$ pmlogger_farm.service
End-of-File

chmod 755 $tmp.sh
$sudo $tmp.sh | _filter
systemctl -l --quiet --no-pager status pmlogger_farm.service >$tmp.out 2>&1
cat $tmp.out >>$seq.full
grep "$$" $tmp.out | _filter

# success, all done
exit
3 changes: 3 additions & 0 deletions qa/1488.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
QA output created by 1488
migrate_pid_service: added pid MYPID to service "pmlogger_farm.service" using namespace ""
├─MYPID /bin/sh ./1488
4 changes: 2 additions & 2 deletions qa/870
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ trap "cd $here; $sudo rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15

_is_activating()
{
if [ "$PCPQA_SYSTEMD" = yes -o \
\( -n "$PCP_SYSTEMDUNIT_DIR" -a -f $PCP_SYSTEMDUNIT_DIR/pmlogger.service \) ]
if [ "$PCPQA_SYSTEMD" = yes -a \
-n "$PCP_SYSTEMDUNIT_DIR" -a -f $PCP_SYSTEMDUNIT_DIR/pmlogger.service ]
then
eval `systemctl show --property=ActiveState pmlogger.service`
echo "ActiveState=$ActiveState" >>$here/$seq.full
Expand Down
1 change: 1 addition & 0 deletions qa/group
Original file line number Diff line number Diff line change
Expand Up @@ -1946,6 +1946,7 @@ x11
1485 pmda.linux local
1486 logutil local
1487 pmda.linux local valgrind
1488 other local
1489 python pmrep pmimport local
1490 python local labels
1495 pmlogrewrite labels pmlogdump local
Expand Down
22 changes: 19 additions & 3 deletions src/libpcp/src/logmeta.c
Original file line number Diff line number Diff line change
Expand Up @@ -1128,6 +1128,7 @@ __pmLogUndeltaInDom(pmInDom indom, __pmLogInDom *idp)
* found the previous full indom, now march forward in time replacing
* each delta indom with a reconstructed full indom
*/
tidp->isdelta = 0;
for (didp = tidp->prior ; didp != NULL; ) {
int numinst;
int *instlist;
Expand Down Expand Up @@ -1670,10 +1671,9 @@ pmGetInDomArchive_ctx(__pmContext *ctxp, pmInDom indom, int **instlist, char ***
/* Need to "un-delta" this delta indom record */
__pmLogUndeltaInDom(indom, idp);
}
if (idp->numinst > HASH_THRESHOLD) {
if (idp->numinst > HASH_THRESHOLD && big_indom == 0) {
big_indom = 1;
reset_ihash();
break;
}
}

Expand Down Expand Up @@ -1736,7 +1736,23 @@ PM_FAULT_POINT("libpcp/" __FILE__ ":9", PM_FAULT_ALLOC);
int
pmGetInDomArchive(pmInDom indom, int **instlist, char ***namelist)
{
return pmGetInDomArchive_ctx(NULL, indom, instlist, namelist);
int sts;

if (pmDebugOptions.pmapi) {
char dbgbuf[20];
fprintf(stderr, "pmGetInDomArchive(%s,...) <:", pmInDomStr_r(indom, dbgbuf, sizeof(dbgbuf)));
}
sts = pmGetInDomArchive_ctx(NULL, indom, instlist, namelist);
if (pmDebugOptions.pmapi) {
fprintf(stderr, ":> returns ");
if (sts >= 0)
fprintf(stderr, "%d\n", sts);
else {
char errmsg[PM_MAXERRMSGLEN];
fprintf(stderr, "%s\n", pmErrStr_r(sts, errmsg, sizeof(errmsg)));
}
}
return sts;
}

void
Expand Down
2 changes: 1 addition & 1 deletion src/selinux/pcp.te
Original file line number Diff line number Diff line change
Expand Up @@ -676,7 +676,7 @@ optional_policy(`
# type=AVC msg=audit(N): avc: denied { signal } for pid=PID comm="pmsignal" scontext=system_u:system_r:pcp_pmie_t:s0 tcontext=system_u:system_r:unconfined_service_t:s0 tclass=process permissive=0
allow pcp_pmcd_t unconfined_service_t:process signull;
allow pcp_pmlogger_t unconfined_service_t:process signal;
allow pcp_pmie_t unconfined_service_t:process signal;
allow pcp_pmie_t unconfined_service_t:process { signal signull };
')

optional_policy(`
Expand Down

0 comments on commit 7be77e5

Please sign in to comment.