Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[Feature] Graceful Shutdown Requirements for HTTP/3 Server Side #15024

Open
4 tasks done
oxsean opened this issue Dec 26, 2024 · 1 comment
Open
4 tasks done

[Feature] Graceful Shutdown Requirements for HTTP/3 Server Side #15024

oxsean opened this issue Dec 26, 2024 · 1 comment
Labels
component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage

Comments

@oxsean
Copy link
Collaborator

oxsean commented Dec 26, 2024

Pre-check

  • I am sure that all the content I provide is in English.

Search before asking

  • I had searched in the issues and found no similar feature requirement.

Apache Dubbo Component

Java SDK (apache/dubbo)

Descriptions

Objective:
Implement a robust graceful shutdown mechanism for the HTTP/3 server connection handler using Netty's HTTP/3 incubator codec, focusing on leveraging the control stream for ping-pong and graceful shutdown (GOAWAY) logic.

Please refer to org.apache.dubbo.rpc.protocol.tri.transport.TripleServerConnectionHandler.

Key Requirements:

  1. Control Stream Utilization

    • Utilize io.netty.incubator.codec.http3.Http3.getLocalControlStream() as the primary mechanism for managing connection state and initiating graceful shutdown.
    • Implement a bidirectional ping-pong mechanism to verify connection health and readiness for shutdown.
  2. Ping-Pong Mechanism

    • Develop a lightweight ping-pong protocol on the control stream to:
      a) Validate active connections
      b) Detect connection responsiveness
      c) Prepare for graceful termination
    • Create a configurable ping interval and timeout strategy
    • Handle scenarios where ping responses are delayed or missing
  3. Graceful Shutdown (GOAWAY) Workflow

    • Design a GOAWAY process that:
      a) Stops accepting new requests
      b) Allows existing in-flight requests to complete
      c) Provides a configurable grace period for request completion
    • Implement a systematic shutdown sequence using control stream signaling
    • Ensure all active streams are properly closed or terminated
  4. Error Handling and Resilience

    • Implement comprehensive error handling for control stream operations
    • Provide logging and metrics for shutdown-related events
    • Handle potential network interruptions during the shutdown process

Related issues

No response

Are you willing to submit a pull request to fix on your own?

  • Yes I am willing to submit a pull request on my own!

Code of Conduct

@oxsean oxsean added type/need-triage Need maintainers to triage component/need-triage Need maintainers to triage labels Dec 26, 2024
@aofall
Copy link
Contributor

aofall commented Jan 10, 2025

I'm interested with it, it's anyone work in progress?

devin-ai-integration bot added a commit to LeoLiuYan/dubbo that referenced this issue Jan 21, 2025
Co-Authored-By: 929908264@qq.com <929908264@qq.com>
devin-ai-integration bot added a commit to LeoLiuYan/dubbo that referenced this issue Jan 21, 2025
Co-Authored-By: 929908264@qq.com <929908264@qq.com>
devin-ai-integration bot added a commit to LeoLiuYan/dubbo that referenced this issue Jan 21, 2025
Co-Authored-By: 929908264@qq.com <929908264@qq.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage
Projects
Status: Todo
Development

No branches or pull requests

2 participants