* feat: Optimize ShutdownWithContext method in app.go
- Reorder mutex lock acquisition to the start of the function
- Early return if server is not running
- Use defer for executing shutdown hooks
- Simplify nil check for hooks
- Remove TODO comment
This commit improves the readability, robustness, and execution order
of the shutdown process. It ensures consistent state throughout the
shutdown and guarantees hook execution even in error cases.
* feat: Enhance ShutdownWithContext test for improved reliability
- Add shutdown hook verification
- Implement better synchronization with channels
- Improve error handling and assertions
- Adjust timeouts for more consistent results
- Add server state check after shutdown attempt
- Include comments explaining expected behavior
This commit improves the comprehensiveness and reliability of the
ShutdownWithContext test, ensuring proper verification of shutdown
hooks, timeout behavior, and server state during long-running requests.
* 📚 Doc: update the docs to explain shutdown & hook execution order
* 🩹 Fix: Possible Data Race on shutdownHookCalled Variable
* 🩹 Fix: Remove the default Case
* 🩹 Fix: Import sync/atomic
* 🩹 Fix: golangci-lint problem
* 🎨 Style: add block in api.md
* 🩹 Fix: go mod tidy
* feat: Optimize ShutdownWithContext method in app.go
- Reorder mutex lock acquisition to the start of the function
- Early return if server is not running
- Use defer for executing shutdown hooks
- Simplify nil check for hooks
- Remove TODO comment
This commit improves the readability, robustness, and execution order
of the shutdown process. It ensures consistent state throughout the
shutdown and guarantees hook execution even in error cases.
* feat: Enhance ShutdownWithContext test for improved reliability
- Add shutdown hook verification
- Implement better synchronization with channels
- Improve error handling and assertions
- Adjust timeouts for more consistent results
- Add server state check after shutdown attempt
- Include comments explaining expected behavior
This commit improves the comprehensiveness and reliability of the
ShutdownWithContext test, ensuring proper verification of shutdown
hooks, timeout behavior, and server state during long-running requests.
* 📚 Doc: update the docs to explain shutdown & hook execution order
* 🩹 Fix: Possible Data Race on shutdownHookCalled Variable
* 🩹 Fix: Remove the default Case
* 🩹 Fix: Import sync/atomic
* 🩹 Fix: golangci-lint problem
* 🎨 Style: add block in api.md
* 🩹 Fix: go mod tidy
* ♻️ Refactor: replaced OnShutdown by OnPreShutdown and OnPostShutdown
* ♻️ Refactor: streamline post-shutdown hook execution in graceful shutdown process
* 🚨 Test: add test for gracefulShutdown
* 🔥 Feature: Using executeOnPreShutdownHooks and executeOnPostShutdownHooks Instead of OnShutdownSuccess and OnShutdownError
* 🩹 Fix: deal Listener err
* 🩹 Fix: go lint error
* 🩹 Fix: reduced memory alignment
* 🩹 Fix: reduced memory alignment
* 🩹 Fix: context should be created inside the concatenation.
* 📚 Doc: update what_new.md and hooks.md
* ♻️ Refactor: use blocking channel instead of time.Sleep
* 🩹 Fix: Improve synchronization in error propagation test.
* 🩹 Fix: Replace sleep with proper synchronization.
* 🩹 Fix: Server but not shut down properly
* 🩹 Fix: Using channels to synchronize and pass results
* 🩹 Fix: timeout with long running request
* 📚 Doc: remove OnShutdownError and OnShutdownSuccess from fiber.md
* Update hooks.md
* 🚨 Test: Add graceful shutdown timeout error test case
* 📝 Doc: Restructure hooks documentation for OnPreShutdown and OnPostShutdown
* 📝 Doc: Remove extra whitespace in hooks documentation
---------
Co-authored-by: yingjie.huang <yingjie.huang@fosunhn.net>
Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
* Make tls.Config MinVersion configurable
This commit will resolve#3239
For more info: https://github.com/gofiber/fiber/issues/3239
* Add documents about tls minimum version configurable
* Add if statement for don't allow to use TLS1.0 and TLS1.1
* Fix lint issues, add test for panic()
* Update docs
* Add test with valid TLS version
---------
Co-authored-by: Juan Calderon-Perez <jgcalderonperez@protonmail.com>
* feat: add a simple support for app.Listen
* fix: fix the nil access error
* chore: add test case for simple tls
* fix: align the struct
* chore: change the test case
can't passed and not chack the file yet
* fix: use TLS1.2 min
* Fix lint issues
* Fix call to os.MkdirTemp
* Fix test check order
* Update unit-tests for ACME
* Update docs
* Fix identation of whats_new examples
* More updates to docs
* Remove ACME tests. Add check for tlsConfig
* Add ACME section to whats_new docs
* Update docs/whats_new.md
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update fiber.md
* Update whats_new.md
---------
Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
Co-authored-by: Juan Calderon-Perez <jgcalderonperez@protonmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* 🔥 feat: Add support for graceful shutdown timeout in Listen
* 📚 doc: update the description of GracefulShutdownTimeout
* ♻️refact: use require.ErrorIs instead of require.Equal
* fix: Target error should be in err chain by using fasthttputil.ErrInmemoryListenerClosed
* ♻️refact: use require.ErrorIs instead of require.Equal
* 📚doc: update the description of GracefulShutdownTimeout
* ♻️refact: rename GracefulShutdownTimeout to ShutdownTimeout
* 🩹fix: set default ShutdownTimeout to 10s
---------
Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
* Use composites for internal structures. Fix alignment of structures across Fiber
* Update struct alignment in test files
* Enable alignment check with govet
* Fix ctx autoformat unit-test
* Revert app Config struct. Add betteralign to Makefile
* Disable comment on alert since it wont work for forks
* Update benchmark.yml
* Update benchmark.yml
* Remove warning from using positional fields
* Update router.go
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* [v3 Maintenance]: Consolidate and Document Core Changes in v3
* Fixes for some of the failing tests
* Add readiness check to serverStart()
* Use net/http client for tests listen test
* Use different key for this test
* Run Proxy Middleware tests in parallel. Add nil checks for potential issues pointed by nilaway
* Enable parallel client tests
* Do not run timing sensitive tests in parallel
* Remove TODO
* Revert Test_Proxy_DoTimeout_Timeout, and remove t.Parallel() for it
* Do not calculate favicon len on each handler call
* Revert logic change
* Increase timeout of SaveFile tests
* Do not run time sensitive tests in parallel
* The Agent can't be run in parallel
* Do not run time sensitive tests in parallel
* Fixes based on uber/nilaway
* Revert change to Client test
* Run parallel
* Update client_test.go
* Update client_test.go
* Update cache_test.go
* Update cookiejar_test.go
* Remove parallel for test using timeouts
* Remove t.Parallel() from logger middleware tests
* Do not use testify.require in a goroutine
* Fix import, and update golangci-lint
* Remove changes to template_chain.go
* Run more tests in parallel
* Add more parallel tests
* Add more parallel tests
* SetLogger can't run in parallel
* Run more tests in parallel, fix issue with goroutine in limiter middleware
* Update internal/storage/memory, add more benchmarks
* Increase sleep for csrf test by 100 milliseconds. Implement asserted and parallel benchmarks for Session middleware
* Add 100 milliseconds to sleep during test
* Revert name change
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
* fix: Inconsistent and flaky unit-tests
---------
Co-authored-by: M. Efe Çetin <efectn@protonmail.com>
Co-authored-by: René <rene@gofiber.io>
* Update listen.go (unform INFO prints at startip + cosmetics)
BEFORE:
```
_______ __
/ ____(_) /_ ___ _____
/ /_ / / __ \/ _ \/ ___/
/ __/ / / /_/ / __/ /
/_/ /_/_.___/\___/_/ v3.0.0-beta.1
--------------------------------------------------
INFO Server started on http://127.0.0.1:8003 (bound on host 0.0.0.0 and port 8003)
INFO Application name: TEST APP
INFO Total handlers count: 5
INFO Prefork: Disabled
INFO PID: 2342
INFO Total process count: 1
20:49:50 | 200 | 593.769µs | 123.123.123.123 | GET | /
```
AFTER:
```
_______ __
/ ____(_) /_ ___ _____
/ /_ / / __ \/ _ \/ ___/
/ __/ / / /_/ / __/ /
/_/ /_/_.___/\___/_/ v3.0.0-beta.1
--------------------------------------------------
INFO Server started on: http://127.0.0.1:8003 (bound on host 0.0.0.0 and port 8003)
INFO Application name: TEST APP
INFO Total handlers count: 5
INFO Prefork: Disabled
INFO PID: 2342
INFO Total process count: 1
20:49:50 | 200 | 593.769µs | 123.123.123.123 | GET | /
```
* fix spacer
* fix indentation for fiber version
* fix linting
* fix linting #2
* fix listen_test.go to match newly expected output.
* fix test again
---------
Co-authored-by: root <root@clicon.hosting-hotmann.de>
Co-authored-by: Martin <martin@hotmann.de>
* feat: add a variadic parameter on OnListenHandler
* feat: accept a variadic ListenData in startupProcess parameters
* feat: add startupProcess variadic ListenData to function
* refactor: use runOnListenHooks instead of startupProcess for run onListenHooks
* refactor: remove variadic to make codes straightforward
* fix: add listen data to runOnListenHooks
* test: add listenData parameter to OnListen tests
* docs: update OnListen docs
* fix: remove unused codes
* docs: add tabs to onListen hook example
* docs: add if statement to docs example
* docs: replace fmt with log
* docs: fix return value of example
* docs: make 0.0.0.0 string a constant
* fix: change type of TLS from string to bool
* fix: return bool instead of a string
* docs: update example with new TLS type
* fix: change name tls to isTls to prevent shadowing tls variable
* style: make syntax of onListen example shorter
* refactor: remove unused no-lint comment
* refactor: change isTls to isTLS
* fix: add nolint for isTLS bool param
* Update listen.go
---------
Co-authored-by: M. Efe Çetin <efectn@protonmail.com>
* 🐛 bug: fix onListen hooks when they are used with prefork mode
🐛 bug: fix onListen hooks when they are used with prefork mode
* 🐛 bug: fix onListen hooks when they are used with prefork mode
* internal: revert linting changes
Changes to the internal package should not have been made in 167a8b5e94.
* middleware/monitor: revert changes to exported field "ChartJSURL"
This is a breaking change introduced in 167a8b5e94.
* middleware/monitor: fix error checking
Fix the errorenous error checking introduced in 167a8b5e94.
* 🐛 Bug: Fix issues introduced in linting PR #2319
* 🐛 Bug: Fix issues introduced in linting PR #2319
* Bug: Fix issues introduced in linting PR #2319
---------
Co-authored-by: René Werner <rene@gofiber.io>
* golangci-lint: add and apply more stricter linting rules
* github: drop security workflow now that we use gosec linter inside golangci-lint
* github: use official golangci-lint CI linter
* Add editorconfig and gitattributes file
* Add figlet text for Fiber startup message
* Fiber figlet text is added to beginning of the startup message.
Signed-off-by: Gökhan Özeloğlu <gokhan.ozeloglu@deliveryhero.com>
* Refactor startup message
* Table is removed. Logs are added.
* Test cases refactored.
Signed-off-by: Gökhan Özeloğlu <gokhan.ozeloglu@deliveryhero.com>
* Add colorful log messages
* Used custom color codes to make logs colorful.
* Added a new test case.
* Fixed broken test case after changes.
* Added some color codes as a variable.
* Handled Windows case with init() function. Color codes are set empty string.
Signed-off-by: Gökhan Özeloğlu <gokhan.ozeloglu@deliveryhero.com>
* Change color text logic
* Color codes are taken from config.
* Version is added to figlet text.
* Reordered "server started on" message.
* Test cases are refactored.
Signed-off-by: Gökhan Özeloğlu <gokhan.ozeloglu@deliveryhero.com>
* Add if condition for Windows
* OS checked in tests for Windows machines.
Signed-off-by: Gökhan Özeloğlu <gokhan.ozeloglu@deliveryhero.com>
* some improvements
* Fix startup message tests
Signed-off-by: Gökhan Özeloğlu <gokhan.ozeloglu@deliveryhero.com>
* colorize PIDs
Signed-off-by: Gökhan Özeloğlu <gokhan.ozeloglu@deliveryhero.com>
Co-authored-by: Muhammed Efe Çetin <efectn@protonmail.com>
* 🐛 bug: ClientHelloInfo support for app.Listener
* 🐛 bug: ClientHelloInfo support for app.Listener
* fix
* make tlshandler public
* update
* 🐛 bug: make tlsHandler public to use it with Listener #2034
Co-authored-by: wernerr <rene@gofiber.io>
* Fix padding around app name in startup message when it contains non-ascii characters
* fix conflict, allow ending space only for odd length strings
* move startup message tests to listen_test.go
* add black color to defaultColors overriding function, fix (again) padding in startupMessage
* Fix padding around app name in startup message when it contains non-ascii characters
* fix conflict, allow ending space only for odd length strings
* move startup message tests to listen_test.go