summaryrefslogtreecommitdiff
diff options
authorJesse Chavez <[email protected]>2022-01-26 14:05:21 -0500
committergit <[email protected]>2022-01-27 12:33:06 +0900
commit99d02caed3fb86a8bbe3ae6daddf2517e2f3f441 (patch)
tree985717e6eac13f8235ae63a028164b93bc91a4c6
parentd3d888b9867e4fe6baa28d4f5351f72961a3bb1f (diff)
[ruby/logger] Fix log rotation inter-process lock failed.
Issue only occurs in JRuby 9.3.0.0 and Windows and the full console output is: log rotation inter-process lock failed. D:\log.txt -> D:\log.txt.0: The process cannot access the file because it is being used by another process. log writing failed. closed stream log writing failed. closed stream ... https://github.com/ruby/logger/commit/19fc734638
-rw-r--r--lib/logger.rb1
-rw-r--r--lib/logger/log_device.rb2
-rw-r--r--test/logger/test_logdevice.rb3
-rw-r--r--tool/lib/core_assertions.rb2
4 files changed, 5 insertions, 3 deletions
diff --git a/lib/logger.rb b/lib/logger.rb
index 4205380a6a..7d55f62f30 100644
--- a/lib/logger.rb
+++ b/lib/logger.rb
@@ -11,6 +11,7 @@
# A simple system for logging messages. See Logger for more documentation.
require 'monitor'
+require 'rbconfig'
require_relative 'logger/version'
require_relative 'logger/formatter'
diff --git a/lib/logger/log_device.rb b/lib/logger/log_device.rb
index 96d77b7b6a..8683328a5e 100644
--- a/lib/logger/log_device.rb
+++ b/lib/logger/log_device.rb
@@ -135,7 +135,7 @@ class Logger
end
end
- if /mswin|mingw|cygwin/ =~ RUBY_PLATFORM
+ if /mswin|mingw|cygwin/ =~ RbConfig::CONFIG['host_os']
def lock_shift_log
yield
end
diff --git a/test/logger/test_logdevice.rb b/test/logger/test_logdevice.rb
index d360fa2107..8f1c15542a 100644
--- a/test/logger/test_logdevice.rb
+++ b/test/logger/test_logdevice.rb
@@ -435,6 +435,7 @@ class TestLogDevice < Test::Unit::TestCase
logdev1.write(message)
assert_file.identical?(log, logdev1.dev)
+ # NOTE: below assertion fails in JRuby 9.3 and TruffleRuby
assert_file.identical?(log + ".0", logdev2.dev)
logdev2.write(message)
@@ -451,7 +452,7 @@ class TestLogDevice < Test::Unit::TestCase
end
ensure
logdev0.close
- end unless /mswin|mingw|cygwin/ =~ RUBY_PLATFORM
+ end unless /mswin|mingw|cygwin/ =~ RbConfig::CONFIG['host_os']
def test_shifting_midnight
Dir.mktmpdir do |tmpdir|
diff --git a/tool/lib/core_assertions.rb b/tool/lib/core_assertions.rb
index 51cb7ebf0d..e9c586f910 100644
--- a/tool/lib/core_assertions.rb
+++ b/tool/lib/core_assertions.rb
@@ -254,7 +254,7 @@ module Test
line ||= loc.lineno
end
capture_stdout = true
- unless /mswin|mingw/ =~ RUBY_PLATFORM
+ unless /mswin|mingw/ =~ RbConfig::CONFIG['host_os']
capture_stdout = false
opt[:out] = Test::Unit::Runner.output if defined?(Test::Unit::Runner)
res_p, res_c = IO.pipe