-
Notifications
You must be signed in to change notification settings - Fork 15
logrotate: fix log rotation #1175
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’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
elhimov
wants to merge
1
commit into
master
Choose a base branch
from
elhimov/gh-1174-fix-logrotate
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+42
−7
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9feeede
to
5bab0d2
Compare
5bab0d2
to
da042d0
Compare
oleg-jukovec
requested changes
Jun 19, 2025
oleg-jukovec
approved these changes
Jun 19, 2025
cli/ttlog/logger.go
Outdated
Comment on lines
117
to
119
defer logger.mu.Unlock() | ||
return logger.Logger.Writer().Write(p) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is more canonical formatting.
Suggested change
defer logger.mu.Unlock() | |
return logger.Logger.Writer().Write(p) | |
defer logger.mu.Unlock() | |
return logger.Logger.Writer().Write(p) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Corrected.
Watchdog launches tarantool in a way that produce log to stderr and thus tarantool itself does nothing to handle log rotation, it is handled entirely at watchdog side. Prior to this patch `os.File` was used in `Cmd.Stdout`, when watchdog launches tarantool binary and according to golang documentation (see `Exec.Cmd.Stdout`) in this special case output from the child process is connected directly to that file. It means that even if it is closed at watchdog side, its child process (tarantool) keeps using the original one, i.e. it proceeds with logging to the original file even after renaming it. Now `Logger` is used as `Cmd.Stdout`, and according to the mentioned documentation separate goroutine reads output from the child process over a pipe and delivers that data to the `Logger`. It allows proper handling of log rotation at watchdog side. Closes #1174 @TarantoolBot document Title: `tt logrotate` properly release descriptor of the old log file.
da042d0
to
14ed1b9
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Watchdog launches tarantool in a way that produce log to stderr and thus tarantool itself does nothing to handle log rotation, it is handled entirely at watchdog side.
Prior to this patch
os.File
was used inCmd.Stdout
, when watchdog launches tarantool binary and according to golang documentation (seeExec.Cmd.Stdout
) in this special case output from the child process is connected directly to that file. It means that even if it is closed at watchdog side, its child process (tarantool) keeps using the original one, i.e. it proceeds with logging to the original file even after renaming it.Now
Logger
is used asCmd.Stdout
, and according to the mentioned documentation separate goroutine reads output from the child process over a pipe and delivers that data to theLogger
. It allows proper handling of log rotation at watchdog side.@TarantoolBot document
Title:
tt logrotate
properly release descriptor of the old log file.I didn't forget about:
Related issues:
Closes #1174