import OL pcp-6.2.0-3.0.1.el9_4

This commit is contained in:
eabdullin 2024-09-04 05:28:00 +00:00
parent 3240804836
commit 0f8cc2f172
6 changed files with 152 additions and 39 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/pcp-6.2.0.src.tar.gz
SOURCES/redhat-issues-RHEL-50693-hacluster-metrics-update.patch

View File

@ -1 +1,2 @@
617d0e505af5f253080effb6701e089fc02e7379 SOURCES/pcp-6.2.0.src.tar.gz
17b4396eb6593178f6c29db6f0eb01234eb6dba0 SOURCES/redhat-issues-RHEL-50693-hacluster-metrics-update.patch

View File

@ -0,0 +1,108 @@
From f8dc87ed130a0cfe1077242a4da2d621c4016bfb Mon Sep 17 00:00:00 2001
From: Ken McDonell <kenj@kenj.id.au>
Date: Thu, 4 Apr 2024 11:34:41 +1100
Subject: [PATCH] libpcp: small derived metrics bug fix
This is a partial fix for
https://github.com/performancecopilot/pcp/issues/1921
If the operand has the semantics of PM_SEM_COUNTER and the
value goes backwards from one fetch to the next, then return
no values for rate().
There is QA to come, but this needs a final blessing from Oracle
before the reproducer archive can be included.
cherry-picked:- f8dc87ed130a0cfe1077242a4da2d621c4016bfb
[Orabug: 36538820]
Signed-off-by: sagar sagar <sagar.sagar@oracle.com>
---
man/man3/pmregisterderived.3 | 13 +++++++++----
src/libpcp/src/derive_fetch.c | 23 ++++++++++++++++++++++-
2 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/man/man3/pmregisterderived.3 b/man/man3/pmregisterderived.3
index d8719f373..32963c3b3 100644
--- a/man/man3/pmregisterderived.3
+++ b/man/man3/pmregisterderived.3
@@ -485,15 +485,20 @@ metric x with the dimension in the
.B time
domain decreased by one and scaling if required in the time utilization case
where the operand is in units of time, and the derived metric is unitless.
-This mimics the rate conversion applied to counter metrics by tools
+There is one value in the result
+for each instance that appears in both the current and the previous
+sample, except in the case where the metric x has
+the semantics of a counter, i.e. PM_SEM_COUNTER, and
+current value of an instance is smaller than the previous value
+of the same instance then no value is
+returned for this instance (this corresponds to a ``counter wrap'' or a ``counter reset'').
+These rules
+mimic the rate conversion applied to counter metrics by tools
such as
.BR pmval (1),
.BR pmie (1)
and
.BR pmchart (1).
-There is one value in the result
-for each instance that appears in both the current and the previous
-sample.
T}
_
instant(x) T{
diff --git a/src/libpcp/src/derive_fetch.c b/src/libpcp/src/derive_fetch.c
index 62921ece4..ed5f6ebcf 100644
--- a/src/libpcp/src/derive_fetch.c
+++ b/src/libpcp/src/derive_fetch.c
@@ -847,7 +847,13 @@ eval_expr(__pmContext *ctxp, node_t *np, struct timespec *stamp, int numpmid,
}
}
else {
- /* rate() conversion, type will be DOUBLE */
+ /*
+ * rate() conversion, type will be DOUBLE
+ *
+ * For COUNTER metrics, return "no value" if the counter is
+ * NOT monotonic increasing ... this matches what pmval(1)
+ * and pmie(1) do in the same circumstances.
+ */
struct timespec stampdiff;
stampdiff = np->data.info->stamp;
@@ -857,18 +863,33 @@ eval_expr(__pmContext *ctxp, node_t *np, struct timespec *stamp, int numpmid,
np->data.info->ivlist[k].value.d = (double)(np->left->data.info->ivlist[i].value.l - np->left->data.info->last_ivlist[j].value.l);
break;
case PM_TYPE_U32:
+ if (np->left->desc.sem == PM_SEM_COUNTER &&
+ np->left->data.info->ivlist[i].value.ul < np->left->data.info->last_ivlist[j].value.ul)
+ continue;
np->data.info->ivlist[k].value.d = (double)(np->left->data.info->ivlist[i].value.ul - np->left->data.info->last_ivlist[j].value.ul);
break;
case PM_TYPE_64:
+ if (np->left->desc.sem == PM_SEM_COUNTER &&
+ np->left->data.info->ivlist[i].value.ll < np->left->data.info->last_ivlist[j].value.ll)
+ continue;
np->data.info->ivlist[k].value.d = (double)(np->left->data.info->ivlist[i].value.ll - np->left->data.info->last_ivlist[j].value.ll);
break;
case PM_TYPE_U64:
+ if (np->left->desc.sem == PM_SEM_COUNTER &&
+ np->left->data.info->ivlist[i].value.ull < np->left->data.info->last_ivlist[j].value.ull)
+ continue;
np->data.info->ivlist[k].value.d = (double)(np->left->data.info->ivlist[i].value.ull - np->left->data.info->last_ivlist[j].value.ull);
break;
case PM_TYPE_FLOAT:
+ if (np->left->desc.sem == PM_SEM_COUNTER &&
+ np->left->data.info->ivlist[i].value.f < np->left->data.info->last_ivlist[j].value.f)
+ continue;
np->data.info->ivlist[k].value.d = (double)(np->left->data.info->ivlist[i].value.f - np->left->data.info->last_ivlist[j].value.f);
break;
case PM_TYPE_DOUBLE:
+ if (np->left->desc.sem == PM_SEM_COUNTER &&
+ np->left->data.info->ivlist[i].value.d < np->left->data.info->last_ivlist[j].value.d)
+ continue;
np->data.info->ivlist[k].value.d = np->left->data.info->ivlist[i].value.d - np->left->data.info->last_ivlist[j].value.d;
break;
default:
--
2.39.3

View File

@ -1,35 +0,0 @@
commit ce6112399ebf0ff39069a34bc9286242c875555e
Author: adam kaminski <adam@adamkaminski.com>
Date: Fri Feb 9 12:49:34 2024 -0500
pmapi.py : fix for struct_time() and day of year out of range on yyyy-01-01
Fix for `day of year out of range` on 2024-01-01, due to self.tm_yday - 1, which returns `[2024, 1, 1, 2, 3, 0, 0, -1, 0]`. The range for tm_yday should be [1, 366].
# timedatectl set-ntp false
# timedatectl set-time "2024-01-01 00:00:00"
# /usr/libexec/pcp/bin/pcp-mpstat -P ALL -t 1 -s 2
Traceback (most recent call last):
File "/usr/libexec/pcp/bin/pcp-mpstat", line 653, in <module>
sts = manager.run()
File "/usr/lib64/python3.6/site-packages/pcp/pmcc.py", line 687, in run
self._printer.report(self)
File "/usr/libexec/pcp/bin/pcp-mpstat", line 606, in report
self.print_machine_info(group, manager)
File "/usr/libexec/pcp/bin/pcp-mpstat", line 585, in print_machine_info
time_string = time.strftime("%x", timestamp.struct_time())
ValueError: day of year out of range
diff --git a/src/python/pcp/pmapi.py b/src/python/pcp/pmapi.py
index fd8d40e32c..05c8afb079 100644
--- a/src/python/pcp/pmapi.py
+++ b/src/python/pcp/pmapi.py
@@ -330,7 +330,7 @@ class tm(Structure):
pywday = 6
stlist = [self.tm_year + 1900, self.tm_mon + 1, self.tm_mday,
self.tm_hour, self.tm_min, self.tm_sec,
- pywday, self.tm_yday - 1, self.tm_isdst]
+ pywday, self.tm_yday + 1, self.tm_isdst]
return time.struct_time(stlist)
def __str__(self):

View File

@ -0,0 +1,27 @@
commit 3bde240a2acc85e63e2f7813330713dd9b59386e
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Mar 27 14:51:28 2024 +1100
pmproxy: disable Redis protocol proxying by default
If a redis-server has been locked down in terms of connections,
we want to prevent pmproxy from being allowed to send arbitrary
RESP commands to it.
This protocol proxying doesn't affect PCP functionality at all,
its more of a developer/sysadmin convenience when Redis used in
cluster mode (relatively uncommon compared to localhost mode).
diff --git a/src/pmproxy/pmproxy.conf b/src/pmproxy/pmproxy.conf
index e54891792e..4cbc1c96af 100644
--- a/src/pmproxy/pmproxy.conf
+++ b/src/pmproxy/pmproxy.conf
@@ -29,7 +29,7 @@ pcp.enabled = true
http.enabled = true
# support Redis protocol proxying
-redis.enabled = true
+redis.enabled = false
# support SSL/TLS protocol wrapping
secure.enabled = true

View File

@ -1,6 +1,6 @@
Name: pcp
Version: 6.2.0
Release: 2%{?dist}
Release: 3.0.1%{?dist}
Summary: System-level performance monitoring and performance management
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
URL: https://pcp.io
@ -8,7 +8,12 @@ URL: https://pcp.io
Source0: https://github.com/performancecopilot/pcp/releases/pcp-%{version}.src.tar.gz
Patch1: redhat-issues-RHEL-2317-default-archive-version.patch
Patch2: redhat-issues-RHEL-25543-python-year-day-range.patch
Patch2: redhat-issues-RHEL-30719-pmproxy-resp-proxy-disabled.patch
Patch3: redhat-issues-RHEL-50693-hacluster-metrics-update.patch
#Oracle patches
Patch1001: 1001-libpcp-small-derived-metrics-bug-fix.patch
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
ExcludeArch: %{ix86}
@ -3493,8 +3498,14 @@ fi
%files zeroconf -f pcp-zeroconf-files.rpm
%changelog
* Wed Mar 20 2024 Nathan Scott <nathans@redhat.com> - 6.2.0-2
- Fix python sub-package year day range issue (RHEL-25543)
* Tue Sep 03 2024 EL Errata <el-errata_ww@oracle.com> - 6.2.0-3.0.1
- Fixed libpcp derived metric issue for ol9 [Orabug: 36538820]
* Thu Aug 08 2024 Nathan Scott <nathans@redhat.com> - 6.2.0-3
- Update hacluster PMDA for pacemaker 2.1.6 crm_mon (RHEL-50693)
* Wed Apr 17 2024 Nathan Scott <nathans@redhat.com> - 6.2.0-2
- Disable RESP proxying by default in pmproxy (RHEL-30719)
* Mon Feb 12 2024 Nathan Scott <nathans@redhat.com> - 6.2.0-1
- Rebase to latest stable version of PCP (RHEL-2317)