[broker] Continue graceful shutdown even if web service closing fails #9835
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Occasionally, the web service closing times out when shutting down the broker server. The following is the error log at that time:
If this happens, the JVM process will be killed without closing the broker service, so topics owned by this broker will be moved to other brokers without their cursor information being persisted to the cursor ledgers. As a result, those cursors rewind to the old position and the duplicate messages are delivered to the consumers.
Modifications
Even if an exception is thrown when closing the web service (i.e. Jetty server), catche the exception and continue the graceful shutdown process. As far as I can see the Jetty source code, it seems that the stop process is completed even if an exception occurs while the Jetty server is stopped.
https://github.com/eclipse/jetty.project/blob/jetty-9.4.33.v20201020/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java#L427-L485