diff --git a/.gitignore b/.gitignore index 443070e..d14de8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -SOURCES/parfait-0.5.4.tar.gz /parfait-0.5.4.tar.gz +/no-jackson-version2.patch +/no-jcip-annotations.patch +/no-more-objects.patch diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..eb7c84f --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-8 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/no-jcip-annotations.patch b/no-jcip-annotations.patch deleted file mode 100644 index d102355..0000000 --- a/no-jcip-annotations.patch +++ /dev/null @@ -1,238 +0,0 @@ -diff -Naurp parfait-0.5.3.orig/dxm/pom.xml parfait-0.5.3/dxm/pom.xml ---- parfait-0.5.3.orig/dxm/pom.xml 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/dxm/pom.xml 2017-10-06 11:56:57.565404760 +1100 -@@ -38,10 +38,6 @@ - guava - - -- net.jcip -- jcip-annotations -- -- - javax.measure - unit-api - -diff -Naurp parfait-0.5.3.orig/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java parfait-0.5.3/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java ---- parfait-0.5.3.orig/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/dxm/src/main/java/io/pcp/parfait/dxm/PcpMmvWriter.java 2017-10-06 11:56:57.567404741 +1100 -@@ -54,7 +54,7 @@ import io.pcp.parfait.dxm.types.DefaultT - import io.pcp.parfait.dxm.types.MmvMetricType; - import io.pcp.parfait.dxm.types.TypeHandler; - import com.google.common.base.Preconditions; --import net.jcip.annotations.GuardedBy; -+//import net.jcip.annotations.GuardedBy; - import org.apache.commons.lang.builder.ToStringBuilder; - import org.apache.commons.lang.builder.ToStringStyle; - -@@ -162,7 +162,7 @@ public class PcpMmvWriter implements Pcp - private volatile boolean usePerMetricLock = true; - private final Map perMetricByteBuffers = newConcurrentMap(); - private final Object globalLock = new Object(); -- @GuardedBy("itself") -+ //@GuardedBy("itself") - private volatile ByteBuffer dataFileBuffer = null; - - -diff -Naurp parfait-0.5.3.orig/parfait-core/pom.xml parfait-0.5.3/parfait-core/pom.xml ---- parfait-0.5.3.orig/parfait-core/pom.xml 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-core/pom.xml 2017-10-06 11:56:57.567404741 +1100 -@@ -34,10 +34,6 @@ - test - - -- net.jcip -- jcip-annotations -- -- - com.google.guava - guava - -diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java ---- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounterBuilder.java 2017-10-06 11:56:57.568404732 +1100 -@@ -20,7 +20,7 @@ import java.util.List; - - import javax.measure.Unit; - --import net.jcip.annotations.ThreadSafe; -+//import net.jcip.annotations.ThreadSafe; - - import com.google.common.base.Supplier; - import com.google.common.collect.ImmutableList; -@@ -34,7 +34,7 @@ import com.google.common.collect.Lists; - * create the TimeWindowCounters from scratch, or 'copy' an existing - * MonitoredCounter. - */ --@ThreadSafe -+//@ThreadSafe - public class TimeWindowCounterBuilder { - private final List timeWindows; - private final Supplier timeSource; -diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java ---- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindowCounter.java 2017-10-06 11:56:57.568404732 +1100 -@@ -18,8 +18,8 @@ package io.pcp.parfait; - - import java.util.Arrays; - --import net.jcip.annotations.GuardedBy; --import net.jcip.annotations.ThreadSafe; -+//import net.jcip.annotations.GuardedBy; -+//import net.jcip.annotations.ThreadSafe; - - import com.google.common.annotations.VisibleForTesting; - import com.google.common.base.Supplier; -@@ -43,15 +43,15 @@ import com.google.common.base.Supplier; - * prove too contentious and require change later. - *

- */ --@ThreadSafe -+//@ThreadSafe - public class TimeWindowCounter implements Counter { -- @GuardedBy("lock") -+ //@GuardedBy("lock") - private long overallValue; -- @GuardedBy("lock") -+ //@GuardedBy("lock") - private final long[] interimValues; -- @GuardedBy("lock") -+ //@GuardedBy("lock") - private int headIndex = 0; -- @GuardedBy("lock") -+ //@GuardedBy("lock") - private long headTime; - - private final Object lock = new Object(); -@@ -87,7 +87,7 @@ public class TimeWindowCounter implement - * until headTime is within one 'tick' of the current time; we have then - * found the correct bucket. - */ -- @GuardedBy("lock") -+ //@GuardedBy("lock") - private void cleanState() { - long eventTime = timeSource.get(); - long bucketsToSkip = (eventTime - headTime) / window.getResolution(); -diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java ---- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/TimeWindow.java 2017-10-06 11:56:57.569404723 +1100 -@@ -16,7 +16,7 @@ - - package io.pcp.parfait; - --import net.jcip.annotations.ThreadSafe; -+//import net.jcip.annotations.ThreadSafe; - - import com.google.common.base.Preconditions; - -@@ -27,7 +27,7 @@ import com.google.common.base.Preconditi - * (the amount of time represented by each window), and a resolution (the - * duration at which events will be clustered together). - */ --@ThreadSafe -+//@ThreadSafe - public final class TimeWindow { - private final int resolution; - private final long period; -@@ -82,4 +82,4 @@ public final class TimeWindow { - // We know that bucket count fits in an int, per our constructor checks - return (int) (period / resolution); - } --} -\ No newline at end of file -+} -diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java ---- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/EventTimer.java 2017-10-06 11:56:57.570404714 +1100 -@@ -32,13 +32,13 @@ import org.slf4j.LoggerFactory; - import io.pcp.parfait.MonitorableRegistry; - import io.pcp.parfait.MonitoredCounter; - import com.google.common.collect.ImmutableList; --import net.jcip.annotations.ThreadSafe; -+//import net.jcip.annotations.ThreadSafe; - - /** - * A class to provide a {@link EventMetricCollector} to each {@link Timeable} on demand, guaranteed - * to be thread-safe as long is it's only ever used by the requesting thread. - */ --@ThreadSafe -+//@ThreadSafe - public class EventTimer { - - /** -diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java ---- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/LoggerSink.java 2017-10-06 11:56:57.570404714 +1100 -@@ -21,14 +21,14 @@ import java.util.Map; - - import javax.measure.Unit; - --import net.jcip.annotations.ThreadSafe; -+//import net.jcip.annotations.ThreadSafe; - - import org.slf4j.Logger; - import org.slf4j.LoggerFactory; - - import com.google.common.collect.Maps; - --@ThreadSafe -+//@ThreadSafe - public class LoggerSink implements StepMeasurementSink { - private final Logger logger; - private final Map, Unit> normalizations = Maps.newConcurrentMap(); -diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java ---- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/timing/ThreadContext.java 2017-10-06 11:56:57.571404704 +1100 -@@ -26,7 +26,7 @@ import java.util.concurrent.ConcurrentHa - import com.google.common.cache.CacheBuilder; - import com.google.common.cache.CacheLoader; - import com.google.common.cache.LoadingCache; --import net.jcip.annotations.ThreadSafe; -+//import net.jcip.annotations.ThreadSafe; - - /** - *

-@@ -45,7 +45,7 @@ import net.jcip.annotations.ThreadSafe; - * - * @author Cowan - */ --@ThreadSafe -+//@ThreadSafe - public class ThreadContext { - private static final CacheLoader> NEW_CONTEXT_CREATOR = new CacheLoader>() { - @Override -diff -Naurp parfait-0.5.3.orig/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java parfait-0.5.3/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java ---- parfait-0.5.3.orig/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/parfait-pcp/src/main/java/io/pcp/parfait/pcp/PcpMonitorBridge.java 2017-10-06 11:59:49.367827348 +1100 -@@ -25,7 +25,7 @@ import io.pcp.parfait.dxm.PcpWriter; - import io.pcp.parfait.dxm.semantics.Semantics; - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableMap; --import net.jcip.annotations.NotThreadSafe; -+//import net.jcip.annotations.NotThreadSafe; - import org.slf4j.Logger; - import org.slf4j.LoggerFactory; - -@@ -45,7 +45,7 @@ import java.util.concurrent.ArrayBlockin - * - * @see io.pcp.parfait.QuiescentRegistryListener - */ --@NotThreadSafe -+//@NotThreadSafe - public class PcpMonitorBridge implements MonitoringView { - - private static final Logger LOG = LoggerFactory.getLogger(PcpMonitorBridge.class); -diff -Naurp parfait-0.5.3.orig/pom.xml parfait-0.5.3/pom.xml ---- parfait-0.5.3.orig/pom.xml 2017-10-06 11:45:35.000000000 +1100 -+++ parfait-0.5.3/pom.xml 2017-10-06 11:56:57.571404704 +1100 -@@ -340,11 +340,6 @@ - 2.2.9 - - -- net.jcip -- jcip-annotations -- 1.0 -- -- - commons-io - commons-io - 1.4 diff --git a/no-more-objects.patch b/no-more-objects.patch deleted file mode 100644 index f7fbe20..0000000 --- a/no-more-objects.patch +++ /dev/null @@ -1,322 +0,0 @@ -diff -Naurp parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java ---- parfait-0.5.3.orig/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java 2017-10-03 11:38:15.000000000 +1100 -+++ parfait-0.5.3/parfait-core/src/main/java/io/pcp/parfait/PollingMonitoredValue.java 2017-10-06 13:35:06.169481799 +1100 -@@ -29,7 +29,7 @@ import org.slf4j.Logger; - import org.slf4j.LoggerFactory; - - import com.google.common.annotations.VisibleForTesting; --import com.google.common.base.MoreObjects; -+//import com.google.common.base.MoreObjects; - import com.google.common.base.Preconditions; - import com.google.common.base.Supplier; - -@@ -104,10 +104,10 @@ public class PollingMonitoredValue ex - scheduler.schedule(new PollerTask(), updateInterval); - } - -- @Override -- public String toString() { -- return MoreObjects.toStringHelper(this).add("name", getName()).add("description", getDescription()).add("poller", poller).toString(); -- } -+// @Override -+// public String toString() { -+// return MoreObjects.toStringHelper(this).add("name", getName()).add("description", getDescription()).add("poller", poller).toString(); -+// } - - - private class PollerTask extends TimerTask { -diff -Naurp parfait-0.5.3.orig/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java parfait-0.5.3/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java ---- parfait-0.5.3.orig/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java 2017-10-03 11:44:14.000000000 +1100 -+++ parfait-0.5.3/parfait-jmx/src/main/java/io/pcp/parfait/jmx/JmxView.java 1970-01-01 10:00:00.000000000 +1000 -@@ -1,150 +0,0 @@ --/* -- * Copyright 2009-2017 Aconex -- * -- * Licensed under the Apache License, Version 2.0 -- * (the "License"); you may not use this file except in compliance with -- * the License. You may obtain a copy of the License at: -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -- * implied. See the License for the specific language governing -- * permissions and limitations under the License. -- */ -- --package io.pcp.parfait.jmx; -- --import io.pcp.parfait.Monitor; --import io.pcp.parfait.Monitorable; --import io.pcp.parfait.MonitoringView; --import com.google.common.base.MoreObjects; --import org.springframework.jmx.export.annotation.ManagedAttribute; --import org.springframework.jmx.export.annotation.ManagedResource; -- --import javax.management.openmbean.CompositeData; --import javax.management.openmbean.CompositeDataSupport; --import javax.management.openmbean.CompositeType; --import javax.management.openmbean.OpenDataException; --import javax.management.openmbean.OpenType; --import javax.management.openmbean.SimpleType; --import java.util.Collection; --import java.util.HashMap; --import java.util.Map; --import java.util.concurrent.atomic.AtomicInteger; --import java.util.concurrent.atomic.AtomicLong; -- --@ManagedResource --public class JmxView implements MonitoringView { -- private String[] jmxMonitoredNames; -- private Object[] jmxMonitoredValues; -- private Map jmxArrayIndexMap; -- private CompositeType monitoredType; -- -- private final Monitor monitor = new JmxUpdatingMonitor(); -- private volatile boolean started; -- -- -- @Override -- public void startMonitoring(Collection> monitorables) { -- setupJmxValues(monitorables); -- for (Monitorable monitorable : monitorables) { -- updateData(monitorable); -- monitorable.attachMonitor(monitor); -- } -- this.started = true; -- } -- -- @Override -- public void stopMonitoring(Collection> monitorables) { -- for (Monitorable monitorable : monitorables) { -- monitorable.removeMonitor(monitor); -- } -- this.started = false; -- } -- -- @Override -- public boolean isRunning() { -- return started; -- } -- -- private void setupJmxValues(Collection> monitorables) { -- if (monitorables.isEmpty()) { -- return; -- } -- try { -- jmxMonitoredNames = new String[monitorables.size()]; -- String[] descriptions = new String[monitorables.size()]; -- jmxMonitoredValues = new Object[monitorables.size()]; -- OpenType[] types = new OpenType[monitorables.size()]; -- jmxArrayIndexMap = new HashMap(monitorables.size()); -- int index = 0; -- -- for (Monitorable monitorable : monitorables) { -- jmxMonitoredNames[index] = monitorable.getName(); -- descriptions[index] = MoreObjects.firstNonNull(monitorable.getDescription(), -- "(unknown)"); -- types[index] = getJmxType(monitorable.getType()); -- jmxArrayIndexMap.put(monitorable.getName(), index); -- index++; -- } -- -- monitoredType = new CompositeType("Exposed PCP metrics", -- "Details of all exposed PCP metrics", jmxMonitoredNames, descriptions, types); -- } catch (OpenDataException e) { -- throw new UnsupportedOperationException("Unable to configure JMX types", e); -- } -- } -- -- private OpenType getJmxType(Class type) { -- if (type == Boolean.class) { -- return SimpleType.BOOLEAN; -- } else if (type == Integer.class || type == AtomicInteger.class) { -- return SimpleType.INTEGER; -- } else if (type == Long.class || type == AtomicLong.class) { -- return SimpleType.LONG; -- } else if (type == Double.class) { -- return SimpleType.DOUBLE; -- } else if (type == String.class) { -- return SimpleType.STRING; -- } else { -- throw new UnsupportedOperationException( -- "Don't know how to process Monitorable of type [" + type + "]"); -- } -- } -- -- @ManagedAttribute(description = "All exposed parfait metrics") -- public CompositeData getExposedMetrics() { -- try { -- return new CompositeDataSupport(monitoredType, jmxMonitoredNames, jmxMonitoredValues); -- } catch (OpenDataException e) { -- throw new RuntimeException(e); -- } -- } -- -- private void updateData(Monitorable monitorable) { -- Class type = monitorable.getType(); -- Object jmxValue; -- -- if (type == Boolean.class || type == Integer.class || type == Long.class -- || type == Double.class || type == String.class) { -- jmxValue = monitorable.get(); -- } else if (type == AtomicInteger.class) { -- jmxValue = ((AtomicInteger) monitorable.get()).intValue(); -- } else if (type == AtomicLong.class) { -- jmxValue = ((AtomicLong) monitorable.get()).longValue(); -- } else { -- throw new UnsupportedOperationException( -- "Don't know how to process Monitorable of type [" + type + "]"); -- } -- -- jmxMonitoredValues[jmxArrayIndexMap.get(monitorable.getName())] = jmxValue; -- } -- -- public class JmxUpdatingMonitor implements Monitor { -- public void valueChanged(Monitorable monitorable) { -- updateData(monitorable); -- } -- } --} -diff -Naurp parfait-0.5.3.orig/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java parfait-0.5.3/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java ---- parfait-0.5.3.orig/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java 2017-10-03 11:44:14.000000000 +1100 -+++ parfait-0.5.3/parfait-jmx/src/test/java/io/pcp/parfait/jmx/JmxViewTest.java 1970-01-01 10:00:00.000000000 +1000 -@@ -1,137 +0,0 @@ --/* -- * Copyright 2009-2017 Aconex -- * -- * Licensed under the Apache License, Version 2.0 -- * (the "License"); you may not use this file except in compliance with -- * the License. You may obtain a copy of the License at: -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -- * implied. See the License for the specific language governing -- * permissions and limitations under the License. -- */ -- --package io.pcp.parfait.jmx; -- --import io.pcp.parfait.MonitorableRegistry; --import io.pcp.parfait.MonitoredValue; --import junit.framework.TestCase; -- --import javax.management.openmbean.CompositeData; --import java.io.IOException; -- --public class JmxViewTest extends TestCase { -- private MonitoredValue booleanValue = null; -- -- private MonitoredValue intValue = null; -- -- private MonitoredValue longValue = null; -- private MonitoredValue doubleValue = null; -- private MonitoredValue stringValue = null; -- -- private MonitorableRegistry registry = new MonitorableRegistry(); -- -- private JmxView jmx = null; -- -- public JmxViewTest() { -- } -- -- public void setUp() { -- booleanValue = new MonitoredValue("boolean.value", "boolean.value.desc", registry, true); -- intValue = new MonitoredValue("int.value", "int.value.desc", registry, 1); -- longValue = new MonitoredValue("long.value", "long.value.desc", registry, 1l); -- doubleValue = new MonitoredValue("double.value", "double.value.desc", registry, 1d); -- stringValue = new MonitoredValue("string.value", "string.value.desc", registry, "!"); -- -- jmx = new JmxView(); -- } -- -- public void tearDown() { -- jmx.stopMonitoring(registry.getMonitorables()); -- } -- -- public void testSupportsAllTypes() throws IOException, InterruptedException { -- jmx.startMonitoring(registry.getMonitorables()); -- -- checkDataValues(); -- -- booleanValue.set(false); -- checkDataValues(); -- -- booleanValue.set(true); -- checkDataValues(); -- -- intValue.set(0); -- checkDataValues(); -- -- intValue.set(Integer.MAX_VALUE); -- checkDataValues(); -- -- intValue.set(Integer.MIN_VALUE); -- checkDataValues(); -- -- intValue.set(1234567890); -- checkDataValues(); -- -- longValue.set(0l); -- checkDataValues(); -- -- longValue.set(Long.MAX_VALUE); -- checkDataValues(); -- -- longValue.set(Long.MIN_VALUE); -- checkDataValues(); -- -- longValue.set(1234567891012345679l); -- checkDataValues(); -- -- doubleValue.set(0d); -- checkDataValues(); -- -- doubleValue.set(Double.MAX_VALUE); -- checkDataValues(); -- -- doubleValue.set(Double.MIN_VALUE); -- checkDataValues(); -- -- doubleValue.set(Double.NEGATIVE_INFINITY); -- checkDataValues(); -- -- doubleValue.set(Double.POSITIVE_INFINITY); -- checkDataValues(); -- -- doubleValue.set(Double.NaN); -- checkDataValues(); -- -- doubleValue.set(1234567891.012345679d); -- checkDataValues(); -- -- stringValue.set(""); -- checkDataValues(); -- -- stringValue.set(createString(500)); -- checkDataValues(); -- } -- -- private String createString(int length) { -- StringBuilder sb = new StringBuilder(); -- for (int i = 0; i < length; i++) { -- sb.append(Math.max(1, i & 255)); -- } -- return sb.toString(); -- } -- -- private void checkDataValues() { -- -- CompositeData data = jmx.getExposedMetrics(); -- -- assertEquals(booleanValue.get(), data.get("boolean.value")); -- assertEquals(doubleValue.get(), data.get("double.value")); -- assertEquals((int) intValue.get(), data.get("int.value")); -- assertEquals((long) longValue.get(), data.get("long.value")); -- assertEquals(stringValue.get(), data.get("string.value")); -- } --} diff --git a/parfait.spec b/parfait.spec index 31336c9..6e14fbf 100644 --- a/parfait.spec +++ b/parfait.spec @@ -1,6 +1,6 @@ Name: parfait Version: 0.5.4 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Java libraries for Performance Co-Pilot (PCP) License: ASL 2.0 URL: https://github.com/performancecopilot/parfait @@ -57,6 +57,13 @@ BuildRequires: mvn(tec.uom:uom-se) BuildArch: noarch +# parfait used to have a dependency on log4j12. Since parfait 0.5.4-3, log4j is no longer a dependency. +# This line makes sure that the log4j12 package will be removed when upgrading +# to parfait 0.5.4-4, to remove all vulnerable log4j12 versions (CVE-2021-4104). +# Also matches NVR 1.2.17-22.module+el8+... +Obsoletes: log4j12 < 1.2.17-23 +Obsoletes: log4j12-javadoc < 1.2.17-23 + %description Parfait is a Java performance monitoring library that exposes and collects metrics through a variety of outputs. It provides APIs @@ -177,6 +184,10 @@ done %config(noreplace)%{_sysconfdir}/%{name}/jvm.json %changelog +* Tue Jan 18 2022 Andreas Gerstmayr - 0.5.4-4 +- Obsolete (remove) vulnerable versions of log4j12 (NVR < 1.2.17-23) + when upgrading to parfait 0.5.4-4 (CVE-2021-4104) + * Thu Dec 16 2021 Nathan Scott - 0.5.4-3 - Drop all code explicitly using Log4J (BZ 2031674) diff --git a/sources b/sources index e0aa8f9..c9bf0a0 100644 --- a/sources +++ b/sources @@ -1 +1,3 @@ SHA512 (parfait-0.5.4.tar.gz) = f79bc26161c6f6d71bfbe47c73b7d486d50ea9243f8888cb0a6a4a078d9c145cf4b21025dbcc3933437941f49b24cfc4cc0fe0212ee0d7e4344972e77b33c914 +SHA512 (no-jcip-annotations.patch) = c53225cc398e752874f74a72ed669e813e3d4808e3ded80ce645f3d21e45e9294a4aaf3b5a91ff354f0d7e1c71368d7ae0608533dbcea410ed1a641e92d121d5 +SHA512 (no-more-objects.patch) = 8c34b57a5e9fdad4d5554996ee7534208751468bcd0638d0d607d1531c10aba8779afe386916d3c8b359975bb54e8f0e805a15b5b8339c06f8b4d4d1a691da1c