feat(cgo): Implement graceful shutdown #230
Merged
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.
gofmt
go.sum
andgo.mod
has been synchronized bygo mod tidy
SIGTERM
andSIGINT
signal as HORNET.Graceful Shutdown
The graceful shutdown implementation requires 2 new go package to be imported.
syscall
is for the information of system call.os
and its sub packageos/signal
is for notifying the signal of systemThe concept of the implementation is to start a goroutine when importing dcurl module.
The goroutine will listen to signal of the system.
When receiving
SIGTERM
andSIGINT
, it'll log the warning and safely destroy dcurl.Logger
The logger is based on the primitive log package in go.
Originally, I use the
go.uber.org/zap
(the loggeriotaledger/hive.go/logger
based on) for the logger.Consider of the complexity of the synchronization of the loggers, I used primitive log package in go for its simplicity.
Thanks for the reviewing!