You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by za...@apache.org on 2022/11/17 09:50:49 UTC
[hadoop] branch trunk updated: HADOOP-18429. fix infinite loop in MutableGaugeFloat#incr(float) (#4823)
This is an automated email from the ASF dual-hosted git repository.
zanderxu pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new 7d39abd799a HADOOP-18429. fix infinite loop in MutableGaugeFloat#incr(float) (#4823)
7d39abd799a is described below
commit 7d39abd799a5f801a9fd07868a193205ab500bfa
Author: Hu Xinqiu <xi...@gmail.com>
AuthorDate: Thu Nov 17 17:50:39 2022 +0800
HADOOP-18429. fix infinite loop in MutableGaugeFloat#incr(float) (#4823)
---
.../org/apache/hadoop/metrics2/lib/MutableGaugeFloat.java | 2 +-
.../org/apache/hadoop/metrics2/lib/TestMutableMetrics.java | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableGaugeFloat.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableGaugeFloat.java
index 6a52bf382df..126601fcbb6 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableGaugeFloat.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/MutableGaugeFloat.java
@@ -69,7 +69,7 @@ public class MutableGaugeFloat extends MutableGauge {
private void incr(float delta) {
while (true) {
- float current = value.get();
+ float current = Float.intBitsToFloat(value.get());
float next = current + delta;
if (compareAndSet(current, next)) {
setChanged();
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java
index 0938aa92a90..9984c9b95fb 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.metrics2.lib;
+import static org.apache.hadoop.metrics2.impl.MsInfo.Context;
import static org.apache.hadoop.metrics2.lib.Interns.info;
import static org.apache.hadoop.test.MetricsAsserts.*;
import static org.mockito.AdditionalMatchers.eq;
@@ -500,4 +501,15 @@ public class TestMutableMetrics {
verify(mb, times(2)).addGauge(
info("FooNumOps", "Number of ops for stat with 5s interval"), (long) 0);
}
+
+ /**
+ * Test {@link MutableGaugeFloat#incr()}.
+ */
+ @Test(timeout = 30000)
+ public void testMutableGaugeFloat() {
+ MutableGaugeFloat mgf = new MutableGaugeFloat(Context, 3.2f);
+ assertEquals(3.2f, mgf.value(), 0.0);
+ mgf.incr();
+ assertEquals(4.2f, mgf.value(), 0.0);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org