Skip to content

Commit 5a87509

Browse files
authored
Replace yajl with built-in json for simple cases (#5090)
yajl is much slower than json nowadays. See 1d5b0de and maintainer comment in brianmario/yajl-ruby#228. Signed-off-by: Orgad Shaneh <[email protected]>
1 parent f4d809c commit 5a87509

File tree

13 files changed

+32
-32
lines changed

13 files changed

+32
-32
lines changed

lib/fluent/command/cat.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
end
108108

109109
require 'socket'
110-
require 'yajl'
110+
require 'json'
111111
require 'msgpack'
112112
require 'fluent/ext_monitor_require'
113113

@@ -304,7 +304,7 @@ def try_connect
304304
end
305305

306306
def abort_message(time, record)
307-
$stdout.puts "!#{time}:#{Yajl.dump(record)}"
307+
$stdout.puts "!#{time}:#{JSON.generate(record)}"
308308
end
309309
end
310310

@@ -326,7 +326,7 @@ def abort_message(time, record)
326326
when 'json'
327327
begin
328328
while line = $stdin.gets
329-
record = Yajl.load(line)
329+
record = JSON.parse(line)
330330
w.write(record)
331331
end
332332
rescue

lib/fluent/compat/exec_util.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#
1616

1717
require 'msgpack'
18+
require 'json'
1819
require 'yajl'
1920

2021
require 'fluent/engine'
@@ -115,7 +116,7 @@ def call(record, out)
115116

116117
class JSONFormatter < Formatter
117118
def call(record, out)
118-
out << Yajl.dump(record) << "\n"
119+
out << JSON.generate(record) << "\n"
119120
end
120121
end
121122

lib/fluent/log.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ def format=(fmt)
221221
if wid = get_worker_id(type)
222222
r['worker_id'] = wid
223223
end
224-
Yajl.dump(r)
224+
JSON.generate(r)
225225
}
226226
end
227227

@@ -554,7 +554,7 @@ def dump_stacktrace_internal(type, backtrace, level)
554554
Thread.current[:last_repeated_stacktrace] = CachedLog.new(backtrace, time) if @suppress_repeated_stacktrace
555555
end
556556

557-
puts Yajl.dump(r)
557+
puts JSON.generate(r)
558558
end
559559

560560
nil

lib/fluent/plugin/in_exec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#
1616

1717
require 'fluent/plugin/input'
18-
require 'yajl'
18+
require 'json'
1919

2020
module Fluent::Plugin
2121
class ExecInput < Fluent::Plugin::Input
@@ -115,7 +115,7 @@ def on_record(time, record)
115115
time ||= extract_time_from_record(record) || Fluent::EventTime.now
116116
router.emit(tag, time, record)
117117
rescue => e
118-
log.error "exec failed to emit", tag: tag, record: Yajl.dump(record), error: e
118+
log.error "exec failed to emit", tag: tag, record: JSON.generate(record), error: e
119119
router.emit_error_event(tag, time, record, e) if tag && time && record
120120
end
121121
end

lib/fluent/plugin/in_object_space.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# limitations under the License.
1515
#
1616

17-
require 'yajl'
17+
require 'json'
1818

1919
require 'fluent/plugin/input'
2020

@@ -86,7 +86,7 @@ def on_timer
8686

8787
router.emit(@tag, now, record)
8888
rescue => e
89-
log.error "object space failed to emit", error: e, tag: @tag, record: Yajl.dump(record)
89+
log.error "object space failed to emit", error: e, tag: @tag, record: JSON.generate(record)
9090
log.error_backtrace
9191
end
9292
end

lib/fluent/plugin/in_syslog.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
require 'fluent/config/error'
1919
require 'fluent/plugin/parser'
2020

21-
require 'yajl'
21+
require 'json'
2222

2323
module Fluent::Plugin
2424
class SyslogInput < Input
@@ -274,7 +274,7 @@ def message_handler(data, sock)
274274
def emit(tag, time, record)
275275
router.emit(tag, time, record)
276276
rescue => e
277-
log.error "syslog failed to emit", error: e, tag: tag, record: Yajl.dump(record)
277+
log.error "syslog failed to emit", error: e, tag: tag, record: JSON.generate(record)
278278
end
279279
end
280280
end

lib/fluent/plugin/out_exec_filter.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
require 'fluent/env'
1818
require 'fluent/config/error'
1919

20-
require 'yajl'
20+
require 'json'
2121

2222
module Fluent::Plugin
2323
class ExecFilterOutput < Output
@@ -309,7 +309,7 @@ def on_record(time, record)
309309
router.emit(tag, time, record)
310310
rescue => e
311311
if @suppress_error_log_interval == 0 || Time.now.to_i > @next_log_time
312-
log.error "exec_filter failed to emit", record: Yajl.dump(record), error: e
312+
log.error "exec_filter failed to emit", record: JSON.generate(record), error: e
313313
log.error_backtrace e.backtrace
314314
@next_log_time = Time.now.to_i + @suppress_error_log_interval
315315
end

test/command/test_binlog_reader.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require_relative '../helper'
22

3-
require 'yajl'
3+
require 'json'
44
require 'flexmock/test_unit'
55

66
require 'fluent/command/binlog_reader'
@@ -146,7 +146,7 @@ class TestHead < TestBaseCommand
146146
create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
147147
head = BinlogReaderCommand::Head.new(argv)
148148
out = capture_stdout { head.call }
149-
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}" * 5, out
149+
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{JSON.generate(@record)}#{@default_newline}" * 5, out
150150
end
151151
end
152152

@@ -157,7 +157,7 @@ class TestHead < TestBaseCommand
157157
create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
158158
head = BinlogReaderCommand::Head.new(argv)
159159
out = capture_stdout { head.call }
160-
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}", out
160+
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{JSON.generate(@record)}#{@default_newline}", out
161161
end
162162
end
163163

@@ -177,7 +177,7 @@ class TestHead < TestBaseCommand
177177
create_message_packed_file(@file_name, [event_time(@t).to_i], [@record])
178178
head = BinlogReaderCommand::Head.new(argv)
179179
out = capture_stdout { head.call }
180-
assert_equal "#{Yajl.dump(@record)}#{@default_newline}", out
180+
assert_equal "#{JSON.generate(@record)}#{@default_newline}", out
181181
end
182182
end
183183

@@ -270,7 +270,7 @@ class TestCat < TestBaseCommand
270270
create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
271271
head = BinlogReaderCommand::Cat.new(argv)
272272
out = capture_stdout { head.call }
273-
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}" * 6, out
273+
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{JSON.generate(@record)}#{@default_newline}" * 6, out
274274
end
275275
end
276276

@@ -281,7 +281,7 @@ class TestCat < TestBaseCommand
281281
create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
282282
head = BinlogReaderCommand::Cat.new(argv)
283283
out = capture_stdout { head.call }
284-
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}", out
284+
assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{JSON.generate(@record)}#{@default_newline}", out
285285
end
286286
end
287287

@@ -292,7 +292,7 @@ class TestCat < TestBaseCommand
292292
create_message_packed_file(@file_name, [event_time(@t).to_i], [@record])
293293
head = BinlogReaderCommand::Cat.new(argv)
294294
out = capture_stdout { head.call }
295-
assert_equal "#{Yajl.dump(@record)}#{@default_newline}", out
295+
assert_equal "#{JSON.generate(@record)}#{@default_newline}", out
296296
end
297297
end
298298

test/command/test_ca_generate.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
require_relative '../helper'
22

3-
require 'yajl'
43
require 'flexmock/test_unit'
54
require 'tmpdir'
65

test/plugin/test_formatter_out_file.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def test_configured_with_utc_or_localtime(data)
5353
oldtz, ENV['TZ'] = ENV['TZ'], "UTC+07"
5454
d = create_driver(config_element('ROOT', '', {key => value}))
5555
tag = 'test'
56-
assert_equal "#{expected}\t#{tag}\t#{Yajl.dump(record)}#{@default_newline}", d.instance.format(tag, time, record)
56+
assert_equal "#{expected}\t#{tag}\t#{JSON.generate(record)}#{@default_newline}", d.instance.format(tag, time, record)
5757
ensure
5858
ENV['TZ'] = oldtz
5959
end
@@ -66,7 +66,7 @@ def test_format(data)
6666
d = create_driver({"newline" => newline_conf})
6767
formatted = d.instance.format(tag, @time, record)
6868

69-
assert_equal("#{time2str(@time)}\t#{tag}\t#{Yajl.dump(record)}#{newline}", formatted)
69+
assert_equal("#{time2str(@time)}\t#{tag}\t#{JSON.generate(record)}#{newline}", formatted)
7070
end
7171

7272
data("newline (LF)" => ["lf", "\n"],
@@ -76,7 +76,7 @@ def test_format_without_time(data)
7676
d = create_driver('output_time' => 'false', 'newline' => newline_conf)
7777
formatted = d.instance.format(tag, @time, record)
7878

79-
assert_equal("#{tag}\t#{Yajl.dump(record)}#{newline}", formatted)
79+
assert_equal("#{tag}\t#{JSON.generate(record)}#{newline}", formatted)
8080
end
8181

8282
data("newline (LF)" => ["lf", "\n"],
@@ -86,7 +86,7 @@ def test_format_without_tag(data)
8686
d = create_driver('output_tag' => 'false', 'newline' => newline_conf)
8787
formatted = d.instance.format(tag, @time, record)
8888

89-
assert_equal("#{time2str(@time)}\t#{Yajl.dump(record)}#{newline}", formatted)
89+
assert_equal("#{time2str(@time)}\t#{JSON.generate(record)}#{newline}", formatted)
9090
end
9191

9292
data("newline (LF)" => ["lf", "\n"],
@@ -96,7 +96,7 @@ def test_format_without_time_and_tag
9696
d = create_driver('output_tag' => 'false', 'output_time' => 'false', 'newline' => newline_conf)
9797
formatted = d.instance.format('tag', @time, record)
9898

99-
assert_equal("#{Yajl.dump(record)}#{newline}", formatted)
99+
assert_equal("#{JSON.generate(record)}#{newline}", formatted)
100100
end
101101

102102
data("newline (LF)" => ["lf", "\n"],
@@ -111,6 +111,6 @@ def test_format_without_time_and_tag_against_string_literal_configure(data)
111111
])
112112
formatted = d.instance.format('tag', @time, record)
113113

114-
assert_equal("#{Yajl.dump(record)}#{newline}", formatted)
114+
assert_equal("#{JSON.generate(record)}#{newline}", formatted)
115115
end
116116
end

0 commit comments

Comments
 (0)