Skip to content
New issue

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

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

馃摑 [Proposal]: shutdown procedure #2976

Open
3 tasks done
the-hotmann opened this issue Apr 17, 2024 · 0 comments
Open
3 tasks done

馃摑 [Proposal]: shutdown procedure #2976

the-hotmann opened this issue Apr 17, 2024 · 0 comments

Comments

@the-hotmann
Copy link
Contributor

the-hotmann commented Apr 17, 2024

Feature Proposal Description

As discussed with @ReneWerner87 on discord I would like to propose this feature request to improve the shutdown-procedure of fiber.

I noticed that when I stop my container, open connections are cut off. I have also seen quite a few workarounds, but since there is a general need for proper shutdown handling, I guess it should be implemented by default.

there are two general signals, which at least shall be handeled:

SIGKILL

  1. Log "Fiber forces shutdown"
  2. Fiber kills itself immediately, after logging the last message

SIGTERM

  1. Log "Shutdown received - shutting gracefully down"
  2. Fiber shall not accept any new connections (probably requires all routes to be removed/disabled). Maybe even returning custom error like "shutting down" when disabled route beeing called in combination with an "503"-Error and the additional "retry after" so the incomming connections are handeled as smooth as possible
  3. Fiber checks for open connections.
    3.1. Fiber waits "9s" (default gracefully shutdown timeout) long for existing connections to finish themself.
    3.1.1. if "9s" pass, it cuts all existing connections and shuts down server.
  4. Check if connections has been cut, or not
    4.1. if no connection was cut, Log "Server shutdown complete (Gracefull)"
    4.2. if one or more connections has been cut, Log "Server shutdown complete (Graceperiod Exeeded)"

The gracefull shutdowntime (default: 9s) shall be configurable via fiber.Config like this:

	fiberConfig := fiber.Config{
		ShutdownGraceperiod:  15 * time.Second,
	}

Alignment with Express API

This does not affect anything related to the Express API

HTTP RFC Standards Compliance

This will be complient with RFC7231, specifically the Retry-After Part (Section 7.1.3)

API Stability

This would not affect the stability of the API as it solely affects the shutdown.

Feature Examples

I do not have any code snippet etc for this.

Checklist:

  • I agree to follow Fiber's Code of Conduct.
  • I have searched for existing issues that describe my proposal before opening this one.
  • I understand that a proposal that does not meet these guidelines may be closed without explanation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

2 participants