You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/10/24 12:24:46 UTC
[pulsar] branch master updated: [fix][monitor] fix metrics string encoding (#18138)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 031e37c33b1 [fix][monitor] fix metrics string encoding (#18138)
031e37c33b1 is described below
commit 031e37c33b11b7513f458404c5e2fdfc4ae61a30
Author: Tao Jiuming <95...@users.noreply.github.com>
AuthorDate: Mon Oct 24 20:24:36 2022 +0800
[fix][monitor] fix metrics string encoding (#18138)
---
.../stats/prometheus/PrometheusMetricsServlet.java | 2 +-
.../pulsar/utils/SimpleTextOutputStreamTest.java | 23 ++++++++++++++++++++++
.../pulsar/common/util/SimpleTextOutputStream.java | 8 +++-----
3 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java
index 1c3277d5ee4..73309e88c29 100644
--- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java
@@ -66,7 +66,7 @@ public class PrometheusMetricsServlet extends HttpServlet {
HttpServletResponse res = (HttpServletResponse) context.getResponse();
try {
res.setStatus(HTTP_STATUS_OK_200);
- res.setContentType("text/plain");
+ res.setContentType("text/plain;charset=utf-8");
generateMetrics(cluster, res.getOutputStream());
} catch (Exception e) {
long end = System.currentTimeMillis();
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/utils/SimpleTextOutputStreamTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/utils/SimpleTextOutputStreamTest.java
index e463c8d45ad..1722c4bbc13 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/utils/SimpleTextOutputStreamTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/utils/SimpleTextOutputStreamTest.java
@@ -118,4 +118,27 @@ public class SimpleTextOutputStreamTest {
reset();
return s;
}
+
+ @Test
+ public void testWriteString() {
+ String str = "persistence://test/test/test_¬¬¬¬¬¬¬aabbcc";
+ stream.write(str);
+ assertEquals(str, str());
+ }
+
+
+ @Test
+ public void testWriteChar() {
+ String str = "persistence://test/test/test_¬¬¬¬¬¬¬aabbcc\"\n";
+ for (char c : str.toCharArray()) {
+ stream.write(c);
+ }
+ assertEquals(str, str());
+
+ buf.clear();
+
+ stream.write('\n').write('"').write('A').write('Z').write('a').write('z').write(' ').write(',').write('{')
+ .write('}').write('[').write(']').write('¬');
+ assertEquals(str(), "\n\"AZaz ,{}[]¬");
+ }
}
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/SimpleTextOutputStream.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/SimpleTextOutputStream.java
index dd78b4cfe58..87f4252f5c0 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/SimpleTextOutputStream.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/SimpleTextOutputStream.java
@@ -19,6 +19,7 @@
package org.apache.pulsar.common.util;
import io.netty.buffer.ByteBuf;
+import io.netty.util.CharsetUtil;
/**
* Format strings and numbers into a ByteBuf without any memory allocation.
@@ -43,7 +44,7 @@ public class SimpleTextOutputStream {
}
public SimpleTextOutputStream write(char c) {
- buffer.writeByte((byte) c);
+ write(String.valueOf(c));
return this;
}
@@ -51,11 +52,8 @@ public class SimpleTextOutputStream {
if (s == null) {
return this;
}
- int len = s.length();
- for (int i = 0; i < len; i++) {
- buffer.writeByte((byte) s.charAt(i));
- }
+ buffer.writeCharSequence(s, CharsetUtil.UTF_8);
return this;
}