Duansg commented on PR #6528: URL: https://github.com/apache/shenyu/pull/6528#issuecomment-5162000493
@Aias00 Thanks for the detailed review. I have updated the patch with: - false -> true recovery tests for Divide, Dubbo, gRPC, and Tars; - the missing diffStatusList detection and syncUpstreamStatus logic for WebSocket; - a WebSocket false -> true regression test. I intentionally did not include the batch DELETED change after tracing the complete shutdown flow. It is not safe to fix independently: 1. For discovery-driven plugins such as Divide, gRPC, and WebSocket, runtime availability is determined by the discovery-upstream row rather than the selector handle. Simply routing DELETED through registerURI() would write status=false into the handle, while doDiscoveryLocal() would leave an existing discovery row at status=0, or recreate it with status=0 after deletion. The gateway could therefore continue routing traffic to the closed instance. 2. The same JVM shutdown currently emits both signals: the priority-2 hook sends OFFLINE, while the priority-1 hook sends DELETED. Their existing semantics are different, so handling DELETED as a status update while OFFLINE removes data would produce competing state transitions during the same shutdown. 3. Dubbo and Tars also have different runtime consumption paths, so a complete fix needs a per-protocol review of the authoritative upstream state. Because of this, the batch DELETED behavior requires a separate follow-up that first defines the relationship between DELETED and OFFLINE, and then updates both selector and discovery state consistently. I kept this PR focused on correcting status reconciliation inside buildHandle and covering the symmetric recovery path. -- 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]
