summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-05-28 04:35:44 +0800
committerGitHub <noreply@github.com>2023-05-27 22:35:44 +0200
commit0d54395fb544d52585046bf0424659cec0626e31 (patch)
tree64eeecb8be5a48c0486681f5195a6a302ec44518 /modules
parent7314726babecb04da7f5e38db79c2115f8eedafe (diff)
downloadgitea-0d54395fb544d52585046bf0424659cec0626e31.tar.gz
gitea-0d54395fb544d52585046bf0424659cec0626e31.zip
Improve logger Pause handling (#24946)
The old EventWriter's Run does: ```go for { handlePause() select { case event <- Queue: write the log event ... } } ``` So, if an event writer is started before the logger is paused, there is a chance that the logger isn't paused for the first message. The new logic is: ```go for { select { case event <- Queue: handlePause() write the log event ... } } ``` Then the event writer can be correctly paused
Diffstat (limited to 'modules')
-rw-r--r--modules/log/event_writer_base.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/modules/log/event_writer_base.go b/modules/log/event_writer_base.go
index c9df9fdb24..b8b13e4bc4 100644
--- a/modules/log/event_writer_base.go
+++ b/modules/log/event_writer_base.go
@@ -68,18 +68,16 @@ func (b *EventWriterBaseImpl) Run(ctx context.Context) {
}
}
- for {
- if b.GetPauseChan != nil {
- pause := b.GetPauseChan()
- if pause != nil {
- select {
- case <-pause:
- case <-ctx.Done():
- return
- }
+ handlePaused := func() {
+ if pause := b.GetPauseChan(); pause != nil {
+ select {
+ case <-pause:
+ case <-ctx.Done():
}
}
+ }
+ for {
select {
case <-ctx.Done():
return
@@ -88,6 +86,8 @@ func (b *EventWriterBaseImpl) Run(ctx context.Context) {
return
}
+ handlePaused()
+
if exprRegexp != nil {
fileLineCaller := fmt.Sprintf("%s:%d:%s", event.Origin.Filename, event.Origin.Line, event.Origin.Caller)
matched := exprRegexp.Match([]byte(fileLineCaller)) || exprRegexp.Match([]byte(event.Origin.MsgSimpleText))