Fixes #6882:Prevent cross-request context leakage in mock expressions - #7049
BobSong-dev wants to merge 6 commits into
Conversation
…rrent-context # Conflicts: # shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ExpressionGenerator.java # shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/StandardExpressionGenerator.java
There was a problem hiding this comment.
🟡 Changes recommended
One or more issues must be addressed before approval.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds concurrent regression coverage to prevent cross-request leakage in mock expression evaluation.
Changes:
- Tests concurrent request-specific values for both expression generators.
- Reuses a two-thread executor and synchronizes evaluations with a barrier.
File summaries
| File | Description |
|---|---|
| shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ExpressionGeneratorTest.java | Updated as part of this pull request. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| for (int i = 0; i < 100; i++) { | ||
| MockRequest firstRequest = createRequest("first"); | ||
| MockRequest secondRequest = createRequest("second"); | ||
| CyclicBarrier barrier = new CyclicBarrier(2); |
|
Heads-up (PMC Aias00): your PR's CI failures are in shared infrastructure checks ( |
Thanks for your review,I will deal with it |
Aias00
left a comment
There was a problem hiding this comment.
Approved as PMC (Aias00). Reviewed the diff — small, well-scoped fix with regression tests; mergeable.
Fixes #6882
Background
Both mock expression generators stored the request variable in a shared static
EvaluationContext. During concurrent evaluations, one request could overwritereqbefore another evaluation read it, causing cross-request data leakage and incorrect mock responses.Changes
EvaluationContextfor each expression evaluation;ExpressionGeneratorandStandardExpressionGenerator;Verification
Local:
mvn.cmd -o -nsu -pl shenyu-plugin/shenyu-plugin-mock -am -Dtest=ExpressionGeneratorTest -DfailIfNoTests=false -Djacoco.skip=true test: Tests run: 15, Failures: 0, Errors: 0, Skipped: 0;BUILD SUCCESS.git diff --check: passed.