Aias00 opened a new issue, #8011: URL: https://github.com/apache/shenyu/issues/8011
## Description Follow-up to the plugin orchestration review against master `34f2ed036` and design PR #8007 (`f2839049c`). Parent proposal: #7993. Owning implementation/design task: #7994. Related tasks: #7995, #7996, #8001. This issue refines the existing work breakdown; it does not assert that GRAPH execution is already implemented or that the proposed design has been accepted. HTTP/RPC API aggregation and parallel plugin execution remain out of scope. ## Problem A CHOICE edge to grpc or dubbo does not change ShenyuContext.rpcType, resolve RPC metadata or transform arguments. GlobalPlugin establishes context before downstream skip checks. PR #8007's valid CHOICE example compares req_method with grpc, but RequestMethodParameterData returns the incoming HTTP method (for example GET/POST), not the gateway RPC type. The example therefore cannot establish a valid HTTP-to-gRPC branch. ## Code and design evidence - [contract](https://github.com/apache/shenyu/blob/f2839049ca3873cde0b0c8fe6ff519c040dc905a/docs/plugin-graph-orchestration.md) ยง16.2 - [metadata/protocol resolution](https://github.com/apache/shenyu/blob/34f2ed036/shenyu-plugin/shenyu-plugin-global/src/main/java/org/apache/shenyu/plugin/global/DefaultShenyuContextBuilder.java) - [request-method condition extractor](https://github.com/apache/shenyu/blob/34f2ed036/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/condition/data/RequestMethodParameterData.java) - [gRPC skip and metadata requirements](https://github.com/apache/shenyu/blob/34f2ed036/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-grpc/src/main/java/org/apache/shenyu/plugin/grpc/GrpcPlugin.java) - [RPC parameter preparation](https://github.com/apache/shenyu/blob/34f2ed036/shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-transform/src/main/java/org/apache/shenyu/plugin/transform/RpcParamTransformPlugin.java) ## Task List - State that graph branching selects middleware paths and does not implicitly perform protocol conversion or API composition. - Replace the invalid example with executable same-protocol branches, or define a supported rpcType condition extractor and demonstrate all required metadata/parameter dependencies. - Compile/reject unknown condition names, operators and match strategies using actual installed SPI support. - Define request-time behavior when a protocol-specific plugin is skipped; do not count a structurally present but skipped node as a completed call. ## Acceptance criteria - POST is never interpreted as grpc merely because a branch targets a grpc node. - Documentation conditions resolve to real SPI extractors and strategies. - Tests cover HTTP and RPC contexts, skipped protocol nodes, missing metadata and valid branch selection without implicit conversion. ## Dependencies and sequencing Resolve the contract portion in #7994 / PR #8007 before depending implementation hardens this assumption. Deliver code and integration coverage under #7994 and the related tasks above. Existing issue dependencies remain in effect; this issue adds a focused review requirement rather than a duplicate full implementation task. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
