Skip to content
This repository was archived by the owner on Jul 17, 2023. It is now read-only.

Commit c01a486

Browse files
author
Al-Waleed Shihadeh
authored
Merge pull request #12 from wshihadeh/DEVOPS-2012-fix-memory-leak
Close #/DEVOPS-2012 fix memory leak
2 parents 4e0bac7 + cf1144a commit c01a486

11 files changed

Lines changed: 101 additions & 66 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ rdoc
1313
spec/reports
1414
tmp
1515
.byebug_history
16+
Gemfile.lock

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ That's it now Delayed job logs should show the *X-Request-Id* from the http requ
3737
RequestHeadersLogger.configure do |config|
3838
config[:logger_format] = 'json' # Options [text json] default: text
3939
config[:tag_format] = 'key_val' # Options: [val key_val] default: val
40-
config[:loggers] << MessageQueue.logger # List of all loggers used.
4140
end
4241
```
4342

lib/request_headers_logger.rb

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
require 'request_headers_logger/text_formatter'
77
require 'request_headers_logger/delayed_job/delayed_job'
88
require 'request_headers_logger/message_queue/message_queue'
9+
require 'request_headers_logger/railtie' if defined?(Rails)
910

1011
module RequestHeadersLogger # :nodoc:
1112
extend self
@@ -34,19 +35,13 @@ def loggers
3435
@configuration[:loggers]
3536
end
3637

37-
def prepare_loggers
38-
loggers.each do |logger|
39-
logger_formatter logger
40-
end
41-
end
42-
43-
private
44-
4538
def logger_formatter(logger)
4639
logger.formatter ||= Logger::Formatter.new
4740
logger.formatter.extend formatter_class
4841
end
4942

43+
private
44+
5045
def formatter_class
5146
RequestHeadersLogger.const_get("#{log_format.capitalize}Formatter")
5247
end

lib/request_headers_logger/configuration.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ def initialize(key)
1010

1111
CONFIG_KEYS = [
1212
:log_format, # [logger_format] default or json
13-
:loggers, # [Loggers] List of all loggers used.
1413
:tag_format, # [tag_format]
1514
].freeze
1615

@@ -20,7 +19,6 @@ def initialize(key)
2019
def initialize
2120
@configs = {
2221
log_format: LOG_FORMATS.first,
23-
loggers: [],
2422
tag_format: TAG_FORMATS.first
2523
}
2624
end

lib/request_headers_logger/delayed_job/request_header_delayed_plugin.rb

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,12 @@ class RequestHeadersDelayedPlugin < Delayed::Plugin
1313

1414
lifecycle.before(:perform) do |worker, job|
1515
RequestHeadersMiddleware.store = job.payload_object.instance_variable_get(:@store)
16-
set_dj_loggers
1716
end
1817

1918
lifecycle.after(:perform) do |worker, job|
2019
RequestHeadersMiddleware.store = {}
2120
end
2221
end
23-
24-
def self.set_dj_loggers
25-
RequestHeadersLogger.configure do |config|
26-
loggers = [Delayed::Worker.logger]
27-
loggers << ::Rails.logger
28-
29-
config[:loggers].push(loggers).flatten!.uniq!
30-
end
31-
RequestHeadersLogger.prepare_loggers
32-
end
3322
end
3423
end
3524

lib/request_headers_logger/message_queue/message_queue_plugin.rb

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,12 @@ def symbolize(obj = {})
2424
lifecycle.before(:consume) do |delivery_info, properties, payload|
2525
store = symbolize(properties.headers)&.dig(:store) || {}
2626
RequestHeadersMiddleware.store = store
27-
28-
set_mq_loggers
2927
end
3028

3129
lifecycle.after(:consume) do |delivery_info, properties, payload|
3230
RequestHeadersMiddleware.store = {}
3331
end
3432
end
35-
36-
def self.set_mq_loggers
37-
RequestHeadersLogger.configure do |config|
38-
config[:loggers] << MessageQueue.logger
39-
end
40-
RequestHeadersLogger.prepare_loggers
41-
end
4233
end
4334
end
4435

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
module RequestHeadersLogger
4+
class Railtie < ::Rails::Railtie
5+
config.after_initialize do
6+
RequestHeadersLogger.logger_formatter(MessageQueue.logger) if defined?(MessageQueue)
7+
if defined?(Delayed)
8+
RequestHeadersLogger.logger_formatter(Delayed::Worker.logger)
9+
RequestHeadersLogger.logger_formatter(Rails.logger)
10+
end
11+
end
12+
end
13+
end

lib/request_headers_logger/text_formatter.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,22 @@ module TextFormatter
77
def call(severity, time, progname, msg)
88
format(::Logger::Formatter::Format,
99
severity_name(severity)[0],
10-
format_datetime(time),
10+
format_time(time),
1111
$PID,
1212
severity_name(severity),
1313
progname,
14-
msg2str("#{tags_text}#{msg}"))
14+
"#{tags_text}#{to_string(msg)}")
15+
end
16+
17+
def format_time(time)
18+
return format_datetime(time) if respond_to? :format_datetime
19+
time.strftime(@datetime_format || '%Y-%m-%dT%H:%M:%S.%6N ')
20+
end
21+
22+
def to_string(msg)
23+
return msg2str(msg) if respond_to? :format_datetime
24+
return msg.inspect unless msg.is_a? String
25+
msg
1526
end
1627

1728
def severity_name(severity)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module RequestHeadersLogger
4-
VERSION = '0.0.4'
4+
VERSION = '1.0.0'
55
end

spec/configuration_spec.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,13 @@
4141
it 'return text as default for log_format' do
4242
expect(config[:log_format]).to eq('text')
4343
end
44-
45-
it 'return empty array as default for loggers' do
46-
expect(config[:loggers]).to eq([])
47-
end
4844
end
4945

5046
describe '[]=' do
5147
it 'assign valid config keys' do
52-
logger = Logger.new(STDOUT)
53-
5448
config[:log_format] = 'json'
55-
config[:loggers] << logger
5649

5750
expect(config[:log_format]).to eq('json')
58-
expect(config[:loggers].first).to eq(logger)
5951
end
6052

6153
it 'raise an error for invalid configs ' do

0 commit comments

Comments
 (0)