apache / apache/shenyu

[BUG] Response transformer only intercepts writeWith; streaming/chunked responses bypass transformation

Open
#6,757 1 comment 0 reactions 0 assignees View on GitHub
feature: plugin priority: medium type: bug
Dominant language
Java
Stars
8.8k
Forks
3.1k
Avg merge
7d 1h
Merged PRs (30d)
85

Description

- severity: Medium
- files: `shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-response-transformer/src/main/java/org/apache/shenyu/plugin/ai/transformer/response/AiResponseTransformerPlugin.java:282-380`
- description: `AiResponseTransformerDecorator` overrides only `writeWith`. `ServerHttpResponseDecorator.writeAndFlushWith` delegates to the underlying response, so any upstream that writes via `writeAndFlushWith` (chunked/SSE) flows through with no transformation. By contrast `AiTokenLimiterPlugin.AiStatisticServerHttpResponse` overrides BOTH.
- impact: Streaming AI responses are silently left un-transformed despite the plugin being configured.
- suggested_fix: Override `writeAndFlushWith` and route inner publishers through the same transform.
- confidence: Medium-High
- related_existing: none

---
_Identified during the 2026-08-02 deep re-scan; full list in [`docs/scan2-2026-08-02/06-medium-tiers.md`](docs/scan2-2026-08-02/06-medium-tiers.md)._

Contributor guide

No contributing guide indexed for this repository

Research direction

Open AiResponseTransformerPlugin.java:282-380 and inspect how AiResponseTransformerDecorator handles writeWith. Compare it with AiTokenLimiterPlugin.AiStatisticServerHttpResponse, which overrides both response-writing methods. Done means chunked or SSE writes through writeAndFlushWith receive the same transformation as writeWith.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.