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/27 01:11:46 UTC
[pulsar] branch branch-2.10 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 branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.10 by this push:
new b7def563f3d [fix][monitor] fix metrics string encoding (#18138)
b7def563f3d is described below
commit b7def563f3dd0cfaeb8f0693fd24d875f21c4fde
Author: Tao Jiuming <95...@users.noreply.github.com>
AuthorDate: Mon Oct 24 20:24:36 2022 +0800
[fix][monitor] fix metrics string encoding (#18138)
(cherry picked from commit 031e37c33b11b7513f458404c5e2fdfc4ae61a30)
---
.../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 9fc4b347c85..8fb3c3f9046 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.
@@ -44,7 +45,7 @@ public class SimpleTextOutputStream {
}
public SimpleTextOutputStream write(char c) {
- buffer.writeByte((byte) c);
+ write(String.valueOf(c));
return this;
}
@@ -52,11 +53,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;
}