ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: cosmo0920.oucc@gmail.com
To: ruby-core@ruby-lang.org
Subject: [ruby-core:95541] [Ruby master Bug#16236] Cannot handle logrotate on Windows when one file is written from multi process/thread
Date: Fri, 25 Oct 2019 06:52:43 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-82317.20191025065242.b59b10f5c9b8bc16@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-16236.20191004063043@ruby-lang.org

Issue #16236 has been updated by cosmo0920 (Hiroshi Hatake).


Thanks for the information.
This issue should be Fluentd logging mechanism issue not Ruby core logger library.
Fluentd side logrotate issue is fixed.
So, it can be closed.

----------------------------------------
Bug #16236: Cannot handle logrotate on Windows when one file is written from multi process/thread
https://bugs.ruby-lang.org/issues/16236#change-82317

* Author: cosmo0920 (Hiroshi Hatake)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.6p354 (2019-04-01 revision 67394) [x64-mingw32]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
### TL;DR

This issue occurred in Windows version of Fluentd.
It uses ServerEngine and its logger functionality delegates into Ruby logger library.
Fluentd's logrotate functionality is originated from Ruby logger library,
Then, I found that this library does not seems to support logrotate under multi process/thread condition on Windows.

### Issue Detail

When a log file which is written from the one process or thread, it works correctly:

```
require "logger"

logger = Logger.new('test.log', 5, 30*1024)

loop do
  logger.error "lost connection"
  logger.debug "got new connection"
end
```

But logger writing file collision circumstances, it cannot handle logrotate correctly:

```
require "logger"

logger = Logger.new('test.log', 5, 30*1024)
myOtherLogger = Logger.new('test.log', 5, 30*1024)

loop do
  logger.error "lost connection"
  logger.debug "got new connection"
end
```

```
...
log shifting failed. closed stream
log writing failed. closed stream
log shifting failed. closed stream
log writing failed. closed stream
log shifting failed. closed stream
log writing failed. closed stream
log shifting failed. closed stream
log writing failed. closed stream
log shifting failed. closed stream
log writing failed. closed stream
.... (after that many of these lines)
```

Fluentd launches spawn model (which has supervisor and several workers) on Windows.
Currently, Fluentd implementation uses one logfile from supervisor and worker(s).
So, it causes log shifting operation collision.

### Expected behavior

Logrorating operation works correctly under multi process/threading circumstances on Windows like as Linux environment.



-- 
https://bugs.ruby-lang.org/

  parent reply	other threads:[~2019-10-25  6:52 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <redmine.issue-16236.20191004063043@ruby-lang.org>
2019-10-04  6:30 ` [ruby-core:95216] [Ruby master Bug#16236] Cannot handle logrotate on Windows when one file is written from multi process/thread cosmo0920.oucc
2019-10-04 15:02 ` [ruby-core:95226] " merch-redmine
2019-10-25  6:52 ` cosmo0920.oucc [this message]
2019-10-25  6:53 ` [ruby-core:95542] " cosmo0920.oucc

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-82317.20191025065242.b59b10f5c9b8bc16@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).