This is an automated email from the ASF dual-hosted git repository.
Aias00 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new a35a1f7cef perf(ai): reuse SSE line pattern (#7076)
a35a1f7cef is described below
commit a35a1f7cefa8bef4d07451a64adf38ba8b2d515e
Author: Liming Deng <[email protected]>
AuthorDate: Thu Oct 1 06:30:30 2026 +0800
perf(ai): reuse SSE line pattern (#7076)
---
.../apache/shenyu/plugin/ai/token/limiter/AiTokenLimiterPlugin.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git
a/shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-token-limiter/src/main/java/org/apache/shenyu/plugin/ai/token/limiter/AiTokenLimiterPlugin.java
b/shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-token-limiter/src/main/java/org/apache/shenyu/plugin/ai/token/limiter/AiTokenLimiterPlugin.java
index 4b9398d1a9..dd4e595217 100644
---
a/shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-token-limiter/src/main/java/org/apache/shenyu/plugin/ai/token/limiter/AiTokenLimiterPlugin.java
+++
b/shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-token-limiter/src/main/java/org/apache/shenyu/plugin/ai/token/limiter/AiTokenLimiterPlugin.java
@@ -73,6 +73,8 @@ public class AiTokenLimiterPlugin extends
AbstractShenyuPlugin {
private static final Pattern COMPLETION_TOKENS_PATTERN =
Pattern.compile("\"completion_tokens\"\\s*:\\s*(\\d+)");
+ private static final Pattern SSE_LINE_PATTERN = Pattern.compile("\\r?\\n");
+
@Override
protected Mono<Void> doExecute(final ServerWebExchange exchange, final
ShenyuPluginChain chain,
final SelectorData selector, final RuleData
rule) {
@@ -267,7 +269,7 @@ public class AiTokenLimiterPlugin extends
AbstractShenyuPlugin {
private void processChunk(final byte[] processedBytes, final
BodyWriter writer) {
String chunk = new String(processedBytes, StandardCharsets.UTF_8);
- for (String line : chunk.split("\\r?\\n")) {
+ for (String line : SSE_LINE_PATTERN.split(chunk)) {
if (!line.startsWith("data:")) {
continue;
}