groonga-query-log 1.3.8 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +5 -5
  2. data/doc/text/news.md +34 -0
  3. data/groonga-query-log.gemspec +0 -1
  4. data/lib/groonga-query-log/command/check-crash.rb +58 -4
  5. data/lib/groonga-query-log/command/format-regression-test-logs.rb +17 -1
  6. data/lib/groonga-query-log/command/run-regression-test.rb +34 -5
  7. data/lib/groonga-query-log/command/verify-server.rb +19 -2
  8. data/lib/groonga-query-log/filter-rewriter.rb +24 -2
  9. data/lib/groonga-query-log/memory-leak-detector.rb +1 -1
  10. data/lib/groonga-query-log/replayer.rb +2 -2
  11. data/lib/groonga-query-log/server-verifier.rb +66 -18
  12. data/lib/groonga-query-log/version.rb +1 -1
  13. data/test/command/test-format-regression-test-logs.rb +31 -8
  14. data/test/fixtures/regression-test-logs/error.log +5 -0
  15. data/test/run-test.rb +1 -2
  16. data/test/test-filter-rewriter.rb +40 -2
  17. metadata +34 -88
  18. data/test/fixtures/run-regression-test/db.new/db +0 -0
  19. data/test/fixtures/run-regression-test/db.new/db.0000000 +0 -0
  20. data/test/fixtures/run-regression-test/db.new/db.0000100 +0 -0
  21. data/test/fixtures/run-regression-test/db.new/db.0000101 +0 -0
  22. data/test/fixtures/run-regression-test/db.new/db.0000102 +0 -0
  23. data/test/fixtures/run-regression-test/db.new/db.0000103 +0 -0
  24. data/test/fixtures/run-regression-test/db.new/db.0000103.c +0 -0
  25. data/test/fixtures/run-regression-test/db.new/db.001 +0 -0
  26. data/test/fixtures/run-regression-test/db.new/db.conf +0 -0
  27. data/test/fixtures/run-regression-test/db.new/groonga.log +0 -165
  28. data/test/fixtures/run-regression-test/db.old/db +0 -0
  29. data/test/fixtures/run-regression-test/db.old/db.0000000 +0 -0
  30. data/test/fixtures/run-regression-test/db.old/db.0000100 +0 -0
  31. data/test/fixtures/run-regression-test/db.old/db.0000101 +0 -0
  32. data/test/fixtures/run-regression-test/db.old/db.0000102 +0 -0
  33. data/test/fixtures/run-regression-test/db.old/db.0000103 +0 -0
  34. data/test/fixtures/run-regression-test/db.old/db.0000103.c +0 -0
  35. data/test/fixtures/run-regression-test/db.old/db.001 +0 -0
  36. data/test/fixtures/run-regression-test/db.old/db.conf +0 -0
  37. data/test/fixtures/run-regression-test/db.old/groonga.log +0 -79
  38. data/test/fixtures/run-regression-test/results/query.log +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 661030b254c034e486074270e46e90f9ea593ceea13f1e648f9e7b76fe75bb3c
4
- data.tar.gz: c8cae31736b8265e9b160019dbf0c72e0944e4e6113b94ad67a3a897e3bb240a
2
+ SHA1:
3
+ metadata.gz: 747d884c77f1a62e7266740a0a5cfe796dc9afc5
4
+ data.tar.gz: 17a9c5e1f2463a1d5b4deee9d187619ceec6f690
5
5
  SHA512:
6
- metadata.gz: 821547ca78bda0bc51ea23f12c0f1d72d3bbec079e96ed24884791b355279d9904f5a2a2e03b3f064bc3ca13d519df3be30153effaa530686659bfaf0235780c
7
- data.tar.gz: fb253f2e4d5d50c6a4f0cc056b7b270647733d6c4b1f99e85316ac30f41f41944bcdfca74060d166f3f6da2094bf8727db6fafe91214aa4ee59abf33c22708c9
6
+ metadata.gz: f9ed114c27916395db0d9cf82d02b3c938b7aa338863da6972b156726646ee18cd7cff536c1483ae95af065c697a945d0fb618b2bf34e5c92de15af01e87ced7
7
+ data.tar.gz: 5cfe3856cca14f355c1f2d6f19c36b4da3ec61918938e6e3ecdc97ccae8c183726b6ebf30309f8cd6c234f405a910f6c4d1f419caa5a401cf5a233585940fcd7
@@ -1,5 +1,39 @@
1
1
  # News
2
2
 
3
+ ## 1.3.9: 2018-11-20
4
+
5
+ ### Improvements
6
+
7
+ * Improve the accuracy of time so as to become the same accuracy as Groonga.
8
+
9
+ * `groonga-query-log-check-crash`:
10
+
11
+ * Added support for truncate leak detection.
12
+
13
+ * `groonga-query-log-run-regression-test`:
14
+
15
+ * Added support for rewriting `vector.column != \"\"` with `vector_size(vector) > 0`.
16
+
17
+ * Improve "stop-on-failure" option so as to stop execute of tests even when cause HTTP errors.
18
+
19
+ * Added `--rewrite_nullable_reference_number` option.
20
+
21
+ * `groonga-query-log-server-verifier`:
22
+
23
+ * support reporting unexpected error.
24
+
25
+ * `groonga-query-log-format-regression-test-logs`
26
+
27
+ * Added support error log.
28
+
29
+ * Added label for command.
30
+
31
+ ### Fixes
32
+
33
+ * `groonga-query-log-run-regression-test`:
34
+
35
+ * Fixed a bug that fails read a file that except ".rb" under the schema directory.
36
+
3
37
  ## 1.3.8: 2018-10-18
4
38
 
5
39
  ### Improvements
@@ -57,7 +57,6 @@ Gem::Specification.new do |spec|
57
57
  spec.add_runtime_dependency("groonga-log", ">= 0.1.2")
58
58
 
59
59
  spec.add_development_dependency("test-unit")
60
- spec.add_development_dependency("test-unit-notify")
61
60
  spec.add_development_dependency("test-unit-rr")
62
61
  spec.add_development_dependency("rake")
63
62
  spec.add_development_dependency("bundler")
@@ -163,7 +163,7 @@ module GroongaQueryLog
163
163
 
164
164
  start = process.start_time
165
165
  last = process.last_time
166
- @flushed = nil
166
+ @flushed = true
167
167
  @unflushed_statistics = []
168
168
  query_log_parser = Parser.new
169
169
  query_log_parser.parse_paths(@query_log_paths) do |statistic|
@@ -216,10 +216,11 @@ module GroongaQueryLog
216
216
  when "delete"
217
217
  @flushed = false
218
218
  @unflushed_statistics << statistic
219
+ when "truncate"
220
+ @flushed = false
221
+ @unflushed_statistics << statistic
219
222
  when "io_flush"
220
- # TODO: Improve flushed target detection.
221
- @flushed = true
222
- @unflushed_statistics.clear
223
+ check_io_flush(statistic.command)
223
224
  when "database_unmap"
224
225
  @unflushed_statistics.reject! do |statistic|
225
226
  statistic.command.name == "load"
@@ -232,7 +233,60 @@ module GroongaQueryLog
232
233
  when /\Acolumn_/
233
234
  @flushed = false
234
235
  @unflushed_statistics << statistic
236
+ when "plugin_register", "plugin_unregister"
237
+ @flushed = false
238
+ @unflushed_statistics << statistic
239
+ end
240
+ end
241
+
242
+ def check_io_flush(io_flush)
243
+ # TODO: Improve flushed target detection.
244
+ if io_flush.target_name
245
+ if io_flush.recursive?
246
+ @unflushed_statistics.reject! do |statistic|
247
+ case statistic.command.command_name
248
+ when "load"
249
+ # TODO: Not enough
250
+ statistic.command.table == io_flush.target_name
251
+ when "delete"
252
+ # TODO: Not enough
253
+ statistic.command.table == io_flush.target_name
254
+ when "truncate"
255
+ # TODO: Not enough
256
+ statistic.command.target_name == io_flush.target_name
257
+ else
258
+ false
259
+ end
260
+ end
261
+ else
262
+ @unflushed_statistics.reject! do |statistic|
263
+ case statistic.command.command_name
264
+ when /_create/
265
+ true # TODO: Need io_flush for database
266
+ else
267
+ false
268
+ end
269
+ end
270
+ end
271
+ else
272
+ if io_flush.recursive?
273
+ @unflushed_statistics.clear
274
+ else
275
+ @unflushed_statistics.reject! do |statistic|
276
+ case statistic.command.command_name
277
+ when /_create\z/
278
+ true # TODO: Need io_flush for the target
279
+ when /_remove\z/, /_rename\z/
280
+ true
281
+ when "plugin_register", "plugin_unregister"
282
+ true
283
+ else
284
+ false
285
+ end
286
+ end
287
+ end
235
288
  end
289
+ @flushed = @unflushed_statistics.empty?
236
290
  end
237
291
  end
238
292
 
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2014-2017 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2014-2018 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -63,6 +63,8 @@ module GroongaQueryLog
63
63
  command = nil
64
64
  response_old = nil
65
65
  response_new = nil
66
+ backtrace = []
67
+ error_message = nil
66
68
 
67
69
  input.each_line do |line|
68
70
  unless line.valid_encoding?
@@ -79,6 +81,12 @@ module GroongaQueryLog
79
81
  response_new = $POSTMATCH.chomp
80
82
  next unless valid_entry?(command, response_old, response_new)
81
83
  report_diff(command, response_old, response_new)
84
+ when /\Aerror: /
85
+ error_message = $POSTMATCH.chomp
86
+ report_error(command, error_message, backtrace)
87
+ backtrace.clear
88
+ when /\Abacktrace: /
89
+ backtrace.unshift($POSTMATCH.chomp)
82
90
  end
83
91
  end
84
92
  end
@@ -126,7 +134,15 @@ module GroongaQueryLog
126
134
  end
127
135
  end
128
136
 
137
+ def report_error(command, message, backtrace)
138
+ report_command(command)
139
+ puts("Error: #{message}")
140
+ puts("Backtrace:")
141
+ puts(backtrace)
142
+ end
143
+
129
144
  def report_command(command)
145
+ puts("Command:")
130
146
  puts(command)
131
147
  parsed_command = Groonga::Command::Parser.parse(command)
132
148
  puts("Name: #{parsed_command.name}")
@@ -48,6 +48,8 @@ module GroongaQueryLog
48
48
  @rewrite_vector_equal = false
49
49
  @rewrite_vector_not_equal_empty_string = false
50
50
  @vector_accessors = []
51
+ @rewrite_nullable_reference_number = false
52
+ @nullable_reference_number_accessors = []
51
53
 
52
54
  @care_order = true
53
55
  @ignored_drilldown_keys = []
@@ -160,7 +162,9 @@ module GroongaQueryLog
160
162
  @rewrite_vector_equal = boolean
161
163
  end
162
164
  parser.on("--[no-]rewrite-vector-not-equal-empty-string",
163
- "Rewrite 'vector != \"\"' with 'false'",
165
+ "Rewrite 'vector != \"\"' and " +
166
+ "'vector.column != \"\"' " +
167
+ "with 'vector_size(vector) > 0'",
164
168
  "(#{@rewrite_vector_not_equal_empty_string})") do |boolean|
165
169
  @rewrite_vector_not_equal_empty_string = boolean
166
170
  end
@@ -170,6 +174,19 @@ module GroongaQueryLog
170
174
  "specifying this option multiple times") do |accessor|
171
175
  @vector_accessors << accessor
172
176
  end
177
+ parser.on("--[no-]rewrite-nullable-reference-number",
178
+ "Rewrite 'nullable_reference.number' with " +
179
+ "with '(nullable_reference._key == null ? 0 : " +
180
+ "nullable_reference.number)'",
181
+ "(#{@rewrite_nullable_reference_number})") do |boolean|
182
+ @rewrite_nullable_reference_number = boolean
183
+ end
184
+ parser.on("--nullable-reference-number-accessor=ACCESSOR",
185
+ "Mark ACCESSOR as rewrite nullable reference number targets",
186
+ "You can specify multiple accessors by",
187
+ "specifying this option multiple times") do |accessor|
188
+ @nullable_reference_number_accessors << accessor
189
+ end
173
190
 
174
191
  parser.separator("")
175
192
  parser.separator("Comparisons:")
@@ -231,6 +248,10 @@ module GroongaQueryLog
231
248
  :rewrite_vector_not_equal_empty_string =>
232
249
  @rewrite_vector_not_equal_empty_string,
233
250
  :vector_accessors => @vector_accessors,
251
+ :rewrite_nullable_reference_number =>
252
+ @rewrite_nullable_reference_number,
253
+ :nullable_reference_number_accessors =>
254
+ @nullable_reference_number_accessors,
234
255
  :target_command_names => @target_command_names,
235
256
  :read_timeout => @read_timeout,
236
257
  }
@@ -324,7 +345,7 @@ module GroongaQueryLog
324
345
  command = [
325
346
  @groonga,
326
347
  "--log-path", log_path.to_s,
327
- "--file", grn_file.to_s,
348
+ "--file", load_file.to_s,
328
349
  @database_path.to_s,
329
350
  ]
330
351
  end
@@ -513,10 +534,18 @@ module GroongaQueryLog
513
534
  if @options[:rewrite_vector_not_equal_empty_string]
514
535
  command_line << "--rewrite-vector-not-equal-empty-string"
515
536
  end
516
- vector_accessors = @options[:vector_accessors] || []
517
- vector_accessors.each do |vector_accessor|
537
+ accessors = @options[:vector_accessors] || []
538
+ accessors.each do |accessor|
518
539
  command_line << "--vector-accessor"
519
- command_line << vector_accessor
540
+ command_line << accessor
541
+ end
542
+ if @options[:rewrite_nullable_reference_number]
543
+ command_line << "--rewrite-nullable-reference-number"
544
+ end
545
+ accessors = @options[:nullable_reference_number_accessors] || []
546
+ accessors.each do |accessor|
547
+ command_line << "--nullable-reference-number-accessor"
548
+ command_line << accessor
520
549
  end
521
550
  if @options[:target_command_names]
522
551
  command_line << "--target-command-names"
@@ -208,18 +208,35 @@ module GroongaQueryLog
208
208
  end
209
209
 
210
210
  parser.on("--[no-]rewrite-vector-not-equal-empty-string",
211
- "Rewrite 'vector != \"\"' with 'false'",
211
+ "Rewrite 'vector != \"\"' and " +
212
+ "'vector.column != \"\"' " +
213
+ "with 'vector_size(vector) > 0'",
212
214
  "(#{@options.rewrite_vector_not_equal_empty_string?})") do |boolean|
213
215
  @options.rewrite_vector_not_equal_empty_string = boolean
214
216
  end
215
217
 
216
218
  parser.on("--vector-accessor=ACCESSOR",
217
219
  "Mark ACCESSOR as rewrite vector targets",
218
- "You can specify multiple vector accessors by",
220
+ "You can specify multiple accessors by",
219
221
  "specifying this option multiple times") do |accessor|
220
222
  @options.vector_accessors << accessor
221
223
  end
222
224
 
225
+ parser.on("--[no-]rewrite-nullable-reference-number",
226
+ "Rewrite 'nullable_reference.number' with " +
227
+ "with '(nullable_reference._key == null ? 0 : " +
228
+ "nullable_reference.number)'",
229
+ "(#{@options.rewrite_nullable_reference_number?})") do |boolean|
230
+ @options.rewrite_nullable_reference_number = boolean
231
+ end
232
+
233
+ parser.on("--nullable-reference-number-accessor=ACCESSOR",
234
+ "Mark ACCESSOR as rewrite nullable reference number targets",
235
+ "You can specify multiple accessors by",
236
+ "specifying this option multiple times") do |accessor|
237
+ @options.nullable_reference_number_accessors << accessor
238
+ end
239
+
223
240
  parser.separator("Debug options:")
224
241
  parser.separator("")
225
242
 
@@ -20,6 +20,8 @@ module GroongaQueryLog
20
20
  @filter = filter
21
21
  @options = options
22
22
  @vector_accessors = @options[:vector_accessors] || []
23
+ @nullable_reference_number_accessors =
24
+ @options[:nullable_reference_number_accessors] || []
23
25
  end
24
26
 
25
27
  def rewrite
@@ -30,6 +32,9 @@ module GroongaQueryLog
30
32
  if @options[:rewrite_vector_not_equal_empty_string]
31
33
  rewritten = rewrite_vector_not_equal_empty_string(rewritten)
32
34
  end
35
+ if @options[:rewrite_nullable_reference_number]
36
+ rewritten = rewrite_nullable_reference_number(rewritten)
37
+ end
33
38
  rewritten
34
39
  end
35
40
 
@@ -48,8 +53,25 @@ module GroongaQueryLog
48
53
  def rewrite_vector_not_equal_empty_string(filter)
49
54
  filter.gsub(/([a-zA-Z0-9_.]+) *!= *(?:''|"")/) do |matched|
50
55
  variable = $1
51
- if @vector_accessors.include?(variable)
52
- "false"
56
+ path = variable.split(".")
57
+ replaced = matched
58
+ path.size.downto(1) do |i|
59
+ sub_path = path[0, i].join(".")
60
+ if @vector_accessors.include?(sub_path)
61
+ replaced = "vector_size(#{sub_path}) > 0"
62
+ break
63
+ end
64
+ end
65
+ replaced
66
+ end
67
+ end
68
+
69
+ def rewrite_nullable_reference_number(filter)
70
+ filter.gsub(/([a-zA-Z0-9_.]+)/) do |matched|
71
+ accessor = $1
72
+ if @nullable_reference_number_accessors.include?(accessor)
73
+ sub_accessor = accessor.split(".")[0..-2].join(".")
74
+ "(#{sub_accessor}._key == null ? 0 : #{accessor})"
53
75
  else
54
76
  matched
55
77
  end
@@ -33,7 +33,7 @@ module GroongaQueryLog
33
33
  check_command(client, command)
34
34
  rescue Groonga::Client::Connection::Error
35
35
  # TODO: add error log mechanism
36
- $stderr.puts(Time.now.iso8601)
36
+ $stderr.puts(Time.now.iso8601(6))
37
37
  $stderr.puts(command.original_source)
38
38
  $stderr.puts($!.raw_error.message)
39
39
  $stderr.puts($!.raw_error.backtrace)
@@ -81,14 +81,14 @@ module GroongaQueryLog
81
81
  replay_command(client, id, statistic.command)
82
82
  rescue Groonga::Client::Error
83
83
  # TODO: add error log mechanism
84
- $stderr.puts(Time.now.iso8601)
84
+ $stderr.puts(Time.now.iso8601(6))
85
85
  $stderr.puts(statistic.command.original_source)
86
86
  $stderr.puts($!.raw_error.message)
87
87
  $stderr.puts($!.raw_error.backtrace)
88
88
  return false
89
89
  rescue
90
90
  # TODO: add error log mechanism
91
- $stderr.puts(Time.now.iso8601)
91
+ $stderr.puts(Time.now.iso8601(6))
92
92
  $stderr.puts(statistic.command.original_source)
93
93
  $stderr.puts($!.message)
94
94
  $stderr.puts($!.backtrace)
@@ -28,17 +28,18 @@ module GroongaQueryLog
28
28
  def initialize(options)
29
29
  @options = options
30
30
  @queue = SizedQueue.new(@options.request_queue_size)
31
- @different_results = Queue.new
31
+ @events = Queue.new
32
32
  end
33
33
 
34
34
  def verify(input, &callback)
35
35
  @same = true
36
+ @client_error_is_occurred = false
36
37
  producer = run_producer(input, &callback)
37
38
  reporter = run_reporter
38
39
  producer.join
39
- @different_results.push(nil)
40
+ @events.push(nil)
40
41
  reporter.join
41
- @same
42
+ success?
42
43
  end
43
44
 
44
45
  private
@@ -50,7 +51,7 @@ module GroongaQueryLog
50
51
  n_commands = 0
51
52
  callback_per_n_commands = 100
52
53
  parser.parse(input) do |statistic|
53
- break if !@same and @options.stop_on_failure?
54
+ break if stop?
54
55
 
55
56
  command = statistic.command
56
57
  next if command.nil?
@@ -90,25 +91,31 @@ module GroongaQueryLog
90
91
  loop do
91
92
  statistic = @queue.pop
92
93
  return true if statistic.nil?
94
+ next if stop?
93
95
 
94
96
  original_source = statistic.command.original_source
95
97
  begin
96
98
  verify_command(groonga1_client, groonga2_client,
97
99
  statistic.command)
98
- rescue
99
- log_client_error($!) do
100
+ rescue => error
101
+ log_client_error(error) do
100
102
  $stderr.puts(original_source)
101
103
  end
104
+ @client_error_is_occurred = true
105
+ @events.push([:error, statistic.command, error])
102
106
  return false
103
107
  end
104
108
  if @options.verify_cache?
109
+ command = Groonga::Command::Status.new
105
110
  begin
106
111
  verify_command(groonga1_client, groonga2_client,
107
- Groonga::Command::Status.new)
108
- rescue
109
- log_client_error($!) do
112
+ command)
113
+ rescue => error
114
+ log_client_error(error) do
110
115
  $stderr.puts("status after #{original_source}")
111
116
  end
117
+ @client_error_is_occurred = true
118
+ @events.push([:error, command, error])
112
119
  return false
113
120
  end
114
121
  end
@@ -121,9 +128,14 @@ module GroongaQueryLog
121
128
  Thread.new do
122
129
  @options.open_output do |output|
123
130
  loop do
124
- result = @different_results.pop
125
- break if result.nil?
126
- report_result(output, result)
131
+ event = @events.pop
132
+ break if event.nil?
133
+ case event[0]
134
+ when :different
135
+ report_different(output, *event[1..-1])
136
+ when :error
137
+ report_error(output, *event[1..-1])
138
+ end
127
139
  end
128
140
  end
129
141
  end
@@ -133,6 +145,20 @@ module GroongaQueryLog
133
145
  @options.target_command_name?(command.command_name)
134
146
  end
135
147
 
148
+ def success?
149
+ return false unless @same
150
+ return false if @client_error_is_occurred
151
+ true
152
+ end
153
+
154
+ def failed?
155
+ not success?
156
+ end
157
+
158
+ def stop?
159
+ @options.stop_on_failure? and failed?
160
+ end
161
+
136
162
  def verify_command(groonga1_client, groonga2_client, command)
137
163
  command["cache"] = "no" if @options.disable_cache?
138
164
  command["output_type"] = "json"
@@ -147,7 +173,8 @@ module GroongaQueryLog
147
173
  comparer = ResponseComparer.new(command, response1, response2,
148
174
  compare_options)
149
175
  unless comparer.same?
150
- @different_results.push([command, response1, response2])
176
+ @same = false
177
+ @events.push([:different, command, response1, response2])
151
178
  end
152
179
  end
153
180
 
@@ -166,9 +193,7 @@ module GroongaQueryLog
166
193
  command[name] = rewritten_target
167
194
  end
168
195
 
169
- def report_result(output, result)
170
- @same = false
171
- command, response1, response2 = result
196
+ def report_different(output, command, response1, response2)
172
197
  command_source = command.original_source || command.to_uri_format
173
198
  output.puts("command: #{command_source}")
174
199
  output.puts("response1: #{response1.body.to_json}")
@@ -176,8 +201,18 @@ module GroongaQueryLog
176
201
  output.flush
177
202
  end
178
203
 
204
+ def report_error(output, command, error)
205
+ command_source = command.original_source || command.to_uri_format
206
+ output.puts("command: #{command_source}")
207
+ error.backtrace.reverse_each do |trace|
208
+ output.puts("backtrace: #{trace}")
209
+ end
210
+ output.puts("error: #{error.class}: #{error.message}")
211
+ output.flush
212
+ end
213
+
179
214
  def log_client_error(error)
180
- $stderr.puts(Time.now.iso8601)
215
+ $stderr.puts(Time.now.iso8601(6))
181
216
  yield if block_given?
182
217
  if error.respond_to?(:raw_error)
183
218
  target_error = error.raw_error
@@ -203,6 +238,8 @@ module GroongaQueryLog
203
238
  attr_writer :rewrite_vector_equal
204
239
  attr_writer :rewrite_vector_not_equal_empty_string
205
240
  attr_accessor :vector_accessors
241
+ attr_writer :rewrite_nullable_reference_number
242
+ attr_accessor :nullable_reference_number_accessors
206
243
  def initialize
207
244
  @groonga1 = GroongaOptions.new
208
245
  @groonga2 = GroongaOptions.new
@@ -229,6 +266,8 @@ module GroongaQueryLog
229
266
  @rewrite_vector_equal = false
230
267
  @rewrite_vector_not_equal_empty_string = false
231
268
  @vector_accessors = []
269
+ @rewrite_nullable_reference_number = false
270
+ @nullable_reference_number_accessors = []
232
271
  end
233
272
 
234
273
  def request_queue_size
@@ -255,6 +294,10 @@ module GroongaQueryLog
255
294
  @rewrite_vector_not_equal_empty_string
256
295
  end
257
296
 
297
+ def rewrite_nullable_reference_number?
298
+ @rewrite_nullable_reference_number
299
+ end
300
+
258
301
  def target_command_name?(name)
259
302
  return false if name.nil?
260
303
 
@@ -282,7 +325,8 @@ module GroongaQueryLog
282
325
 
283
326
  def need_filter_rewrite?
284
327
  rewrite_vector_equal? or
285
- rewrite_vector_not_equal_empty_string?
328
+ rewrite_vector_not_equal_empty_string? or
329
+ rewrite_nullable_reference_number?
286
330
  end
287
331
 
288
332
  def to_filter_rewriter_options
@@ -291,6 +335,10 @@ module GroongaQueryLog
291
335
  :rewrite_vector_not_equal_empty_string =>
292
336
  rewrite_vector_not_equal_empty_string?,
293
337
  :vector_accessors => vector_accessors,
338
+ :rewrite_nullable_reference_number =>
339
+ rewrite_nullable_reference_number?,
340
+ :nullable_reference_number_accessors =>
341
+ nullable_reference_number_accessors,
294
342
  }
295
343
  end
296
344
  end
@@ -15,5 +15,5 @@
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
  module GroongaQueryLog
18
- VERSION = "1.3.8"
18
+ VERSION = "1.3.9"
19
19
  end
@@ -1,6 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2014-2018 Kouhei Sutou <kou@clear-code.com>
4
2
  #
5
3
  # This library is free software; you can redistribute it and/or
6
4
  # modify it under the terms of the GNU Lesser General Public
@@ -28,12 +26,16 @@ class FormatRegressionTestLogsCommandTest < Test::Unit::TestCase
28
26
  def run_command(command_line)
29
27
  stdout = $stdout.dup
30
28
  output = Tempfile.open("output")
31
- $stdout.reopen(output)
32
- succees = @command.run(command_line)
33
- output.rewind
29
+ success = false
30
+ begin
31
+ $stdout.reopen(output)
32
+ succees = @command.run(command_line)
33
+ ensure
34
+ $stdout.reopen(stdout)
35
+ end
36
+ output.close
37
+ output.open
34
38
  [succees, output.read]
35
- ensure
36
- $stdout.reopen(stdout)
37
39
  end
38
40
 
39
41
  def fixture_path(*components)
@@ -48,6 +50,7 @@ class FormatRegressionTestLogsCommandTest < Test::Unit::TestCase
48
50
 
49
51
  def test_command_format
50
52
  output = <<-OUTPUT
53
+ Command:
51
54
  select Logs
52
55
  Name: select
53
56
  Arguments:
@@ -67,6 +70,7 @@ Arguments:
67
70
 
68
71
  def test_url_format
69
72
  output = <<-OUTPUT
73
+ Command:
70
74
  /d/select?table=Logs&match_columns=message&query=%E7%84%BC%E8%82%89
71
75
  Name: select
72
76
  Arguments:
@@ -85,4 +89,23 @@ Arguments:
85
89
  assert_equal([true, output],
86
90
  run_command([fixture_path("url-format.log")]))
87
91
  end
92
+
93
+ def test_error
94
+ output = <<-OUTPUT
95
+ Command:
96
+ /d/select?table=Logs&match_columns=message&query=%E7%84%BC%E8%82%89
97
+ Name: select
98
+ Arguments:
99
+ match_columns: message
100
+ query: 焼肉
101
+ table: Logs
102
+ Error: Message
103
+ Backtrace:
104
+ 1
105
+ 2
106
+ 3
107
+ OUTPUT
108
+ assert_equal([true, output],
109
+ run_command([fixture_path("error.log")]))
110
+ end
88
111
  end
@@ -0,0 +1,5 @@
1
+ command: /d/select?table=Logs&match_columns=message&query=%E7%84%BC%E8%82%89
2
+ backtrace: 3
3
+ backtrace: 2
4
+ backtrace: 1
5
+ error: Message
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
- # Copyright (C) 2012-2013 Kouhei Sutou <kou@clear-code.com>
3
+ # Copyright (C) 2012-2018 Kouhei Sutou <kou@clear-code.com>
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -41,7 +41,6 @@ lib_dir = base_dir + "lib"
41
41
  test_dir = base_dir + "test"
42
42
 
43
43
  require "test-unit"
44
- require "test/unit/notify"
45
44
  require "test/unit/rr"
46
45
 
47
46
  Test::Unit::Priority.enable
@@ -61,15 +61,53 @@ class FilterRewriterTest < Test::Unit::TestCase
61
61
  end
62
62
 
63
63
  def test_parenthesis
64
- assert_equal("((false))",
64
+ assert_equal("((vector_size(vector) > 0))",
65
65
  rewrite("((vector != \"\"))",
66
66
  ["vector"]))
67
67
  end
68
68
 
69
69
  def test_under_score
70
- assert_equal("false",
70
+ assert_equal("vector_size(vector_column) > 0",
71
71
  rewrite("vector_column != \"\"",
72
72
  ["vector_column"]))
73
73
  end
74
+
75
+ def test_vector_sub_path
76
+ assert_equal("vector_size(vector) > 0",
77
+ rewrite("vector.column != \"\"",
78
+ ["vector"]))
79
+ end
80
+
81
+ def test_reference_vector
82
+ assert_equal("vector_size(reference.vector) > 0",
83
+ rewrite("reference.vector != \"\"",
84
+ ["reference.vector"]))
85
+ end
86
+ end
87
+
88
+ class NullableReferenceNumberTest < self
89
+ def rewrite(filter, accessors)
90
+ super(filter,
91
+ :rewrite_nullable_reference_number => true,
92
+ :nullable_reference_number_accessors => accessors)
93
+ end
94
+
95
+ def test_not_target_accessor
96
+ assert_equal("reference.number < 1000",
97
+ rewrite("reference.number < 1000",
98
+ ["nonexistent"]))
99
+ end
100
+
101
+ def test_parenthesis
102
+ assert_equal("(((reference._key == null ? 0 : reference.number)) < 1000)",
103
+ rewrite("((reference.number) < 1000)",
104
+ ["reference.number"]))
105
+ end
106
+
107
+ def test_under_score
108
+ assert_equal("(ref_column._key == null ? 0 : ref_column.number) < 1000",
109
+ rewrite("ref_column.number < 1000",
110
+ ["ref_column.number"]))
111
+ end
74
112
  end
75
113
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groonga-query-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.8
4
+ version: 1.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-18 00:00:00.000000000 Z
11
+ date: 2018-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: groonga-command-parser
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: test-unit-notify
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: test-unit-rr
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -168,17 +154,17 @@ description: ''
168
154
  email:
169
155
  - kou@clear-code.com
170
156
  executables:
171
- - groonga-query-log-replay
172
- - groonga-query-log-format-regression-test-logs
173
- - groonga-query-log-show-running-queries
174
- - groonga-query-log-detect-memory-leak
175
- - groonga-query-log-verify-server
157
+ - groonga-query-log-extract
176
158
  - groonga-query-log-run-regression-test
159
+ - groonga-query-log-analyze-load
177
160
  - groonga-query-log-check-crash
178
- - groonga-query-log-check-command-version-compatibility
179
161
  - groonga-query-log-analyze
180
- - groonga-query-log-analyze-load
181
- - groonga-query-log-extract
162
+ - groonga-query-log-verify-server
163
+ - groonga-query-log-check-command-version-compatibility
164
+ - groonga-query-log-detect-memory-leak
165
+ - groonga-query-log-format-regression-test-logs
166
+ - groonga-query-log-show-running-queries
167
+ - groonga-query-log-replay
182
168
  extensions: []
183
169
  extra_rdoc_files: []
184
170
  files:
@@ -256,35 +242,15 @@ files:
256
242
  - test/fixtures/other-query.log
257
243
  - test/fixtures/query.log
258
244
  - test/fixtures/regression-test-logs/command-format.log
245
+ - test/fixtures/regression-test-logs/error.log
259
246
  - test/fixtures/regression-test-logs/url-format.log
260
247
  - test/fixtures/reporter/console.expected
261
248
  - test/fixtures/reporter/html.expected
262
249
  - test/fixtures/reporter/json-stream.expected
263
250
  - test/fixtures/reporter/json.expected
264
251
  - test/fixtures/run-regression-test/data/data.grn
265
- - test/fixtures/run-regression-test/db.new/db
266
- - test/fixtures/run-regression-test/db.new/db.0000000
267
- - test/fixtures/run-regression-test/db.new/db.0000100
268
- - test/fixtures/run-regression-test/db.new/db.0000101
269
- - test/fixtures/run-regression-test/db.new/db.0000102
270
- - test/fixtures/run-regression-test/db.new/db.0000103
271
- - test/fixtures/run-regression-test/db.new/db.0000103.c
272
- - test/fixtures/run-regression-test/db.new/db.001
273
- - test/fixtures/run-regression-test/db.new/db.conf
274
- - test/fixtures/run-regression-test/db.new/groonga.log
275
- - test/fixtures/run-regression-test/db.old/db
276
- - test/fixtures/run-regression-test/db.old/db.0000000
277
- - test/fixtures/run-regression-test/db.old/db.0000100
278
- - test/fixtures/run-regression-test/db.old/db.0000101
279
- - test/fixtures/run-regression-test/db.old/db.0000102
280
- - test/fixtures/run-regression-test/db.old/db.0000103
281
- - test/fixtures/run-regression-test/db.old/db.0000103.c
282
- - test/fixtures/run-regression-test/db.old/db.001
283
- - test/fixtures/run-regression-test/db.old/db.conf
284
- - test/fixtures/run-regression-test/db.old/groonga.log
285
252
  - test/fixtures/run-regression-test/indexes/indexes.grn
286
253
  - test/fixtures/run-regression-test/query-logs/query.log
287
- - test/fixtures/run-regression-test/results/query.log
288
254
  - test/fixtures/run-regression-test/schema/schema.grn
289
255
  - test/fixtures/target-commands.expected
290
256
  - test/fixtures/target-tables.expected
@@ -315,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
315
281
  version: '0'
316
282
  requirements: []
317
283
  rubyforge_project:
318
- rubygems_version: 3.0.0.beta1
284
+ rubygems_version: 2.5.2.1
319
285
  signing_key:
320
286
  specification_version: 4
321
287
  summary: Groonga-query-log is a collection of library and tools to process [Groonga](http://groonga.org/)'s
@@ -323,55 +289,35 @@ summary: Groonga-query-log is a collection of library and tools to process [Groo
323
289
  as a library. You can analyze your Groonga's queries and test with your Groonga's
324
290
  query log by using groonga-query-log as a tool.
325
291
  test_files:
326
- - test/test-filter-rewriter.rb
327
- - test/fixtures/multi.expected
328
- - test/fixtures/target-tables.expected
329
- - test/fixtures/target-commands.expected
330
- - test/fixtures/n_entries.expected
292
+ - test/test-response-comparer.rb
293
+ - test/run-test.rb
294
+ - test/test-replayer.rb
295
+ - test/test-parser.rb
296
+ - test/helper.rb
331
297
  - test/fixtures/query.log
298
+ - test/fixtures/n_entries.expected
332
299
  - test/fixtures/other-query.log
333
- - test/fixtures/order/-start-time.expected
334
- - test/fixtures/order/elapsed.expected
335
- - test/fixtures/order/-elapsed.expected
336
- - test/fixtures/order/start-time.expected
337
- - test/fixtures/regression-test-logs/url-format.log
338
- - test/fixtures/regression-test-logs/command-format.log
300
+ - test/fixtures/no-report-summary.expected
301
+ - test/fixtures/reporter/json-stream.expected
339
302
  - test/fixtures/reporter/json.expected
340
- - test/fixtures/reporter/console.expected
341
303
  - test/fixtures/reporter/html.expected
342
- - test/fixtures/reporter/json-stream.expected
343
- - test/fixtures/run-regression-test/db.old/db.0000100
344
- - test/fixtures/run-regression-test/db.old/db.0000103
345
- - test/fixtures/run-regression-test/db.old/db.0000103.c
346
- - test/fixtures/run-regression-test/db.old/db.0000101
347
- - test/fixtures/run-regression-test/db.old/db
348
- - test/fixtures/run-regression-test/db.old/db.0000000
349
- - test/fixtures/run-regression-test/db.old/db.001
350
- - test/fixtures/run-regression-test/db.old/db.conf
351
- - test/fixtures/run-regression-test/db.old/db.0000102
352
- - test/fixtures/run-regression-test/db.old/groonga.log
304
+ - test/fixtures/reporter/console.expected
305
+ - test/fixtures/regression-test-logs/command-format.log
306
+ - test/fixtures/regression-test-logs/url-format.log
307
+ - test/fixtures/regression-test-logs/error.log
308
+ - test/fixtures/target-commands.expected
309
+ - test/fixtures/multi.expected
353
310
  - test/fixtures/run-regression-test/query-logs/query.log
354
311
  - test/fixtures/run-regression-test/schema/schema.grn
355
- - test/fixtures/run-regression-test/data/data.grn
356
312
  - test/fixtures/run-regression-test/indexes/indexes.grn
357
- - test/fixtures/run-regression-test/db.new/db.0000100
358
- - test/fixtures/run-regression-test/db.new/db.0000103
359
- - test/fixtures/run-regression-test/db.new/db.0000103.c
360
- - test/fixtures/run-regression-test/db.new/db.0000101
361
- - test/fixtures/run-regression-test/db.new/db
362
- - test/fixtures/run-regression-test/db.new/db.0000000
363
- - test/fixtures/run-regression-test/db.new/db.001
364
- - test/fixtures/run-regression-test/db.new/db.conf
365
- - test/fixtures/run-regression-test/db.new/db.0000102
366
- - test/fixtures/run-regression-test/db.new/groonga.log
367
- - test/fixtures/run-regression-test/results/query.log
368
- - test/fixtures/no-report-summary.expected
369
- - test/helper.rb
370
- - test/command/test-analyzer.rb
313
+ - test/fixtures/run-regression-test/data/data.grn
314
+ - test/fixtures/order/-elapsed.expected
315
+ - test/fixtures/order/start-time.expected
316
+ - test/fixtures/order/-start-time.expected
317
+ - test/fixtures/order/elapsed.expected
318
+ - test/fixtures/target-tables.expected
319
+ - test/test-filter-rewriter.rb
371
320
  - test/command/test-format-regression-test-logs.rb
372
321
  - test/command/test-extract.rb
373
- - test/test-replayer.rb
322
+ - test/command/test-analyzer.rb
374
323
  - test/test-incompatibility-detector.rb
375
- - test/run-test.rb
376
- - test/test-parser.rb
377
- - test/test-response-comparer.rb
@@ -1,165 +0,0 @@
1
- 2017-04-24 11:06:45.783903|n| grn_init: <7.0.1-105-gf940037>
2
- 2017-04-24 11:06:45.783995|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
3
- 2017-04-24 11:06:45.785696|n| DDL:256:table_create Entries
4
- 2017-04-24 11:06:45.832240|n| spec:256:update:Entries:48(table:hash_key):0
5
- 2017-04-24 11:06:45.832566|n| DDL:257:column_create Entries description
6
- 2017-04-24 11:06:45.882379|n| spec:257:update:Entries.description:65(column:var_size):15(Text)
7
- 2017-04-24 11:06:45.902188|n| grn_fin (0)
8
- 2017-04-24 11:06:45.911851|n| grn_init: <7.0.1-105-gf940037>
9
- 2017-04-24 11:06:45.911981|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
10
- 2017-04-24 11:06:45.927281|n| grn_fin (0)
11
- 2017-04-24 11:06:45.938921|n| grn_init: <7.0.1-105-gf940037>
12
- 2017-04-24 11:06:45.939085|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
13
- 2017-04-24 11:06:45.943080|n| DDL:258:table_create Bigram
14
- 2017-04-24 11:06:45.990956|n| spec:258:update:Bigram:49(table:pat_key):0
15
- 2017-04-24 11:06:45.991456|n| DDL:259:column_create Bigram Entries_description
16
- 2017-04-24 11:06:46.084367|n| spec:259:update:Bigram.Entries_description:72(column:index):256(Entries)
17
- 2017-04-24 11:06:46.099864|n| DDL:259:set_source Bigram.Entries_description Entries.description
18
- 2017-04-24 11:06:46.099925|n| spec:257:update:Entries.description:65(column:var_size):15(Text)
19
- 2017-04-24 11:06:46.104701|n| spec:259:update:Bigram.Entries_description:72(column:index):256(Entries)
20
- 2017-04-24 11:06:46.113406|n| grn_fin (0)
21
- 2017-04-24 11:06:46.117714|n| grn_init: <7.0.1-105-gf940037>
22
- 2017-04-24 11:06:46.117765|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
23
- 2017-04-24 11:06:46.117899|n| RLIMIT_NOFILE(4096,4096)
24
- 2017-04-24 11:06:47.117263|n| thread start (0/1)
25
- 2017-04-24 11:06:47.495184|n| thread end (0/0)
26
- 2017-04-24 11:06:47.498054|n| grn_fin (0)
27
- 2017-04-24 11:07:45.262160|n| grn_init: <7.0.1-105-gf940037>
28
- 2017-04-24 11:07:45.262192|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
29
- 2017-04-24 11:07:45.262282|n| RLIMIT_NOFILE(4096,4096)
30
- 2017-04-24 11:07:46.261844|n| thread start (0/1)
31
- 2017-04-24 11:07:46.580606|n| thread end (0/0)
32
- 2017-04-24 11:07:46.583733|n| grn_fin (0)
33
- 2017-04-24 11:07:46.586691|n| grn_init: <7.0.1-105-gf940037>
34
- 2017-04-24 11:07:46.586724|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
35
- 2017-04-24 11:07:46.586809|n| RLIMIT_NOFILE(4096,4096)
36
- 2017-04-24 11:07:47.585962|n| thread start (0/1)
37
- 2017-04-24 11:07:48.028639|n| thread end (0/0)
38
- 2017-04-24 11:07:48.030048|n| grn_fin (0)
39
- 2017-04-24 11:07:48.034362|n| grn_init: <7.0.1-105-gf940037>
40
- 2017-04-24 11:07:48.034410|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
41
- 2017-04-24 11:07:48.034549|n| RLIMIT_NOFILE(4096,4096)
42
- 2017-04-24 11:07:49.032453|n| thread start (0/1)
43
- 2017-04-24 11:07:49.195891|n| thread end (0/0)
44
- 2017-04-24 11:07:49.196755|n| grn_fin (0)
45
- 2017-04-24 11:10:47.018307|n| grn_init: <7.0.1-105-gf940037>
46
- 2017-04-24 11:10:47.018349|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
47
- 2017-04-24 11:10:47.018437|n| RLIMIT_NOFILE(4096,4096)
48
- 2017-04-24 11:10:48.017869|n| thread start (0/1)
49
- 2017-04-24 11:10:48.313167|n| thread end (0/0)
50
- 2017-04-24 11:10:48.314042|n| grn_fin (0)
51
- 2017-04-24 11:10:48.316882|n| grn_init: <7.0.1-105-gf940037>
52
- 2017-04-24 11:10:48.316926|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
53
- 2017-04-24 11:10:48.317007|n| RLIMIT_NOFILE(4096,4096)
54
- 2017-04-24 11:10:49.315935|n| thread start (0/1)
55
- 2017-04-24 11:10:49.698905|n| thread end (0/0)
56
- 2017-04-24 11:10:49.700064|n| grn_fin (0)
57
- 2017-04-24 11:10:49.705284|n| grn_init: <7.0.1-105-gf940037>
58
- 2017-04-24 11:10:49.705412|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
59
- 2017-04-24 11:10:49.705578|n| RLIMIT_NOFILE(4096,4096)
60
- 2017-04-24 11:10:50.702205|n| thread start (0/1)
61
- 2017-04-24 11:10:50.858002|n| thread end (0/0)
62
- 2017-04-24 11:10:50.858862|n| grn_fin (0)
63
- 2017-04-24 11:11:12.606175|n| grn_init: <7.0.1-105-gf940037>
64
- 2017-04-24 11:11:12.606214|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
65
- 2017-04-24 11:11:12.606307|n| RLIMIT_NOFILE(4096,4096)
66
- 2017-04-24 11:11:13.605834|n| thread start (0/1)
67
- 2017-04-24 11:11:13.842406|n| thread end (0/0)
68
- 2017-04-24 11:11:13.843288|n| grn_fin (0)
69
- 2017-04-24 11:11:13.846133|n| grn_init: <7.0.1-105-gf940037>
70
- 2017-04-24 11:11:13.846164|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
71
- 2017-04-24 11:11:13.846254|n| RLIMIT_NOFILE(4096,4096)
72
- 2017-04-24 11:11:14.845410|n| thread start (0/1)
73
- 2017-04-24 11:11:15.127688|n| thread end (0/0)
74
- 2017-04-24 11:11:15.128568|n| grn_fin (0)
75
- 2017-04-24 11:11:15.131325|n| grn_init: <7.0.1-105-gf940037>
76
- 2017-04-24 11:11:15.131357|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
77
- 2017-04-24 11:11:15.131440|n| RLIMIT_NOFILE(4096,4096)
78
- 2017-04-24 11:11:16.130617|n| thread start (0/1)
79
- 2017-04-24 11:11:42.306188|n| grn_init: <7.0.1-105-gf940037>
80
- 2017-04-24 11:11:42.306219|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
81
- 2017-04-24 11:11:42.306306|n| RLIMIT_NOFILE(4096,4096)
82
- 2017-04-24 11:11:43.308553|n| thread start (0/1)
83
- 2017-04-24 11:11:43.580788|n| thread end (0/0)
84
- 2017-04-24 11:11:43.581685|n| grn_fin (0)
85
- 2017-04-24 11:11:43.584541|n| grn_init: <7.0.1-105-gf940037>
86
- 2017-04-24 11:11:43.584576|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
87
- 2017-04-24 11:11:43.584662|n| RLIMIT_NOFILE(4096,4096)
88
- 2017-04-24 11:11:44.583985|n| thread start (0/1)
89
- 2017-04-24 11:11:44.874262|n| thread end (0/0)
90
- 2017-04-24 11:11:44.875167|n| grn_fin (0)
91
- 2017-04-24 11:11:44.877971|n| grn_init: <7.0.1-105-gf940037>
92
- 2017-04-24 11:11:44.878014|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
93
- 2017-04-24 11:11:44.878098|n| RLIMIT_NOFILE(4096,4096)
94
- 2017-04-24 11:11:45.877207|n| thread start (0/1)
95
- 2017-04-24 11:11:46.066477|n| thread end (0/0)
96
- 2017-04-24 11:11:46.067611|n| grn_fin (0)
97
- 2017-04-24 11:12:06.890149|n| grn_init: <7.0.1-105-gf940037>
98
- 2017-04-24 11:12:06.890181|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
99
- 2017-04-24 11:12:06.890263|n| RLIMIT_NOFILE(4096,4096)
100
- 2017-04-24 11:12:07.889979|n| thread start (0/1)
101
- 2017-04-24 11:12:08.166979|n| thread end (0/0)
102
- 2017-04-24 11:12:08.167884|n| grn_fin (0)
103
- 2017-04-24 11:12:08.170752|n| grn_init: <7.0.1-105-gf940037>
104
- 2017-04-24 11:12:08.170794|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
105
- 2017-04-24 11:12:08.170877|n| RLIMIT_NOFILE(4096,4096)
106
- 2017-04-24 11:12:09.170034|n| thread start (0/1)
107
- 2017-04-24 11:12:09.466889|n| thread end (0/0)
108
- 2017-04-24 11:12:09.467813|n| grn_fin (0)
109
- 2017-04-24 11:12:09.470729|n| grn_init: <7.0.1-105-gf940037>
110
- 2017-04-24 11:12:09.470761|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
111
- 2017-04-24 11:12:09.470845|n| RLIMIT_NOFILE(4096,4096)
112
- 2017-04-24 11:12:10.469841|n| thread start (0/1)
113
- 2017-04-24 11:12:10.568799|n| thread end (0/0)
114
- 2017-04-24 11:12:10.569881|n| grn_fin (0)
115
- 2017-04-24 11:12:21.466214|n| grn_init: <7.0.1-105-gf940037>
116
- 2017-04-24 11:12:21.466249|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
117
- 2017-04-24 11:12:21.466332|n| RLIMIT_NOFILE(4096,4096)
118
- 2017-04-24 11:12:22.466174|n| thread start (0/1)
119
- 2017-04-24 11:12:22.724694|n| thread end (0/0)
120
- 2017-04-24 11:12:22.725556|n| grn_fin (0)
121
- 2017-04-24 11:12:22.728489|n| grn_init: <7.0.1-105-gf940037>
122
- 2017-04-24 11:12:22.728520|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
123
- 2017-04-24 11:12:22.728608|n| RLIMIT_NOFILE(4096,4096)
124
- 2017-04-24 11:12:23.727545|n| thread start (0/1)
125
- 2017-04-24 11:12:23.997429|n| thread end (0/0)
126
- 2017-04-24 11:12:23.998293|n| grn_fin (0)
127
- 2017-04-24 11:12:24.001106|n| grn_init: <7.0.1-105-gf940037>
128
- 2017-04-24 11:12:24.001138|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
129
- 2017-04-24 11:12:24.001219|n| RLIMIT_NOFILE(4096,4096)
130
- 2017-04-24 11:12:25.000343|n| thread start (0/1)
131
- 2017-04-24 11:12:25.201017|n| thread end (0/0)
132
- 2017-04-24 11:12:25.202162|n| grn_fin (0)
133
- 2017-04-24 11:19:59.316027|n| grn_init: <7.0.1-105-gf940037>
134
- 2017-04-24 11:19:59.316064|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
135
- 2017-04-24 11:19:59.316148|n| RLIMIT_NOFILE(4096,4096)
136
- 2017-04-24 11:20:00.315342|n| thread start (0/1)
137
- 2017-04-24 11:20:00.543339|n| thread end (0/0)
138
- 2017-04-24 11:20:00.544322|n| grn_fin (0)
139
- 2017-04-24 11:20:00.547319|n| grn_init: <7.0.1-105-gf940037>
140
- 2017-04-24 11:20:00.547355|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
141
- 2017-04-24 11:20:00.547440|n| RLIMIT_NOFILE(4096,4096)
142
- 2017-04-24 11:20:01.545653|n| thread start (0/1)
143
- 2017-04-24 11:20:01.731747|n| thread end (0/0)
144
- 2017-04-24 11:20:01.732644|n| grn_fin (0)
145
- 2017-04-24 11:20:01.735519|n| grn_init: <7.0.1-105-gf940037>
146
- 2017-04-24 11:20:01.735558|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
147
- 2017-04-24 11:20:01.735643|n| RLIMIT_NOFILE(4096,4096)
148
- 2017-04-24 11:20:02.734551|n| thread start (0/1)
149
- 2017-04-24 11:20:02.951152|n| thread end (0/0)
150
- 2017-04-24 11:20:02.952691|n| grn_fin (0)
151
- 2017-04-24 11:20:09.446073|n| grn_init: <7.0.1-105-gf940037>
152
- 2017-04-24 11:20:09.446115|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
153
- 2017-04-24 11:20:09.446201|n| RLIMIT_NOFILE(4096,4096)
154
- 2017-04-24 11:20:10.448377|n| thread start (0/1)
155
- 2017-04-24 11:20:10.789136|n| thread end (0/0)
156
- 2017-04-24 11:20:10.792153|n| grn_fin (0)
157
- 2017-04-24 13:01:10.344434|e| system call error: Interrupted system call: epoll_wait
158
- 2017-04-24 13:01:10.344720|e| /tmp/local/lib/libgroonga.so.0(grn_com_event_poll+0x600) [0x7fe1890695cf]
159
- 2017-04-24 13:01:10.344749|e| /tmp/local/bin/groonga(+0x8db6) [0x564c572ecdb6]
160
- 2017-04-24 13:01:10.344763|e| /tmp/local/bin/groonga(+0x9e7c) [0x564c572ede7c]
161
- 2017-04-24 13:01:10.344776|e| /tmp/local/bin/groonga(+0xa035) [0x564c572ee035]
162
- 2017-04-24 13:01:10.344788|e| /tmp/local/bin/groonga(+0x132b7) [0x564c572f72b7]
163
- 2017-04-24 13:01:10.344800|e| /tmp/local/bin/groonga(+0x18088) [0x564c572fc088]
164
- 2017-04-24 13:01:10.344813|e| /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1) [0x7fe1872bf2b1]
165
- 2017-04-24 13:01:10.344825|e| /tmp/local/bin/groonga(+0x4e2a) [0x564c572e8e2a]
@@ -1,79 +0,0 @@
1
- 2017-04-24 11:06:44.872561|n| grn_init: <7.0.1-105-gf940037>
2
- 2017-04-24 11:06:44.872642|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
3
- 2017-04-24 11:06:44.873832|n| DDL:256:table_create Entries
4
- 2017-04-24 11:06:44.929837|n| spec:256:update:Entries:48(table:hash_key):0
5
- 2017-04-24 11:06:44.930157|n| DDL:257:column_create Entries description
6
- 2017-04-24 11:06:44.979980|n| spec:257:update:Entries.description:65(column:var_size):15(Text)
7
- 2017-04-24 11:06:45.005342|n| grn_fin (0)
8
- 2017-04-24 11:06:45.013826|n| grn_init: <7.0.1-105-gf940037>
9
- 2017-04-24 11:06:45.013966|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
10
- 2017-04-24 11:06:45.030106|n| grn_fin (0)
11
- 2017-04-24 11:06:45.038715|n| grn_init: <7.0.1-105-gf940037>
12
- 2017-04-24 11:06:45.038857|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
13
- 2017-04-24 11:06:45.042555|n| DDL:258:table_create Bigram
14
- 2017-04-24 11:06:45.088700|n| spec:258:update:Bigram:49(table:pat_key):0
15
- 2017-04-24 11:06:45.089198|n| DDL:259:column_create Bigram Entries_description
16
- 2017-04-24 11:06:45.189880|n| spec:259:update:Bigram.Entries_description:72(column:index):256(Entries)
17
- 2017-04-24 11:06:45.210684|n| DDL:259:set_source Bigram.Entries_description Entries.description
18
- 2017-04-24 11:06:45.210758|n| spec:257:update:Entries.description:65(column:var_size):15(Text)
19
- 2017-04-24 11:06:45.215438|n| spec:259:update:Bigram.Entries_description:72(column:index):256(Entries)
20
- 2017-04-24 11:06:45.223494|n| grn_fin (0)
21
- 2017-04-24 11:06:46.117605|n| grn_init: <7.0.1-105-gf940037>
22
- 2017-04-24 11:06:46.117680|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
23
- 2017-04-24 11:06:46.117807|n| RLIMIT_NOFILE(4096,4096)
24
- 2017-04-24 11:06:47.117914|n| thread start (0/1)
25
- 2017-04-24 11:06:47.495106|n| thread end (0/0)
26
- 2017-04-24 11:06:47.498049|n| grn_fin (0)
27
- 2017-04-24 11:07:45.260497|n| grn_init: <7.0.1-105-gf940037>
28
- 2017-04-24 11:07:45.260555|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
29
- 2017-04-24 11:07:45.260635|n| RLIMIT_NOFILE(4096,4096)
30
- 2017-04-24 11:07:46.262231|n| thread start (0/1)
31
- 2017-04-24 11:07:49.196124|n| thread end (0/0)
32
- 2017-04-24 11:07:49.199045|n| grn_fin (0)
33
- 2017-04-24 11:10:47.015640|n| grn_init: <7.0.1-105-gf940037>
34
- 2017-04-24 11:10:47.015723|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
35
- 2017-04-24 11:10:47.015811|n| RLIMIT_NOFILE(4096,4096)
36
- 2017-04-24 11:10:48.018144|n| thread start (0/1)
37
- 2017-04-24 11:10:50.858117|n| thread end (0/0)
38
- 2017-04-24 11:10:50.861057|n| grn_fin (0)
39
- 2017-04-24 11:11:12.604406|n| grn_init: <7.0.1-105-gf940037>
40
- 2017-04-24 11:11:12.604464|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
41
- 2017-04-24 11:11:12.604542|n| RLIMIT_NOFILE(4096,4096)
42
- 2017-04-24 11:11:13.606243|n| thread start (0/1)
43
- 2017-04-24 11:11:42.304545|n| grn_init: <7.0.1-105-gf940037>
44
- 2017-04-24 11:11:42.304594|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
45
- 2017-04-24 11:11:42.304674|n| RLIMIT_NOFILE(4096,4096)
46
- 2017-04-24 11:11:43.305717|n| thread start (0/1)
47
- 2017-04-24 11:11:46.066584|n| thread end (0/0)
48
- 2017-04-24 11:11:46.070501|n| grn_fin (0)
49
- 2017-04-24 11:12:06.886810|n| grn_init: <7.0.1-105-gf940037>
50
- 2017-04-24 11:12:06.886857|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
51
- 2017-04-24 11:12:06.886933|n| RLIMIT_NOFILE(4096,4096)
52
- 2017-04-24 11:12:06.888501|n| thread start (0/1)
53
- 2017-04-24 11:12:10.568618|n| thread end (0/0)
54
- 2017-04-24 11:12:10.571785|n| grn_fin (0)
55
- 2017-04-24 11:12:21.462928|n| grn_init: <7.0.1-105-gf940037>
56
- 2017-04-24 11:12:21.462974|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
57
- 2017-04-24 11:12:21.463054|n| RLIMIT_NOFILE(4096,4096)
58
- 2017-04-24 11:12:21.467367|n| thread start (0/1)
59
- 2017-04-24 11:12:25.201154|n| thread end (0/0)
60
- 2017-04-24 11:12:25.205066|n| grn_fin (0)
61
- 2017-04-24 11:19:59.312302|n| grn_init: <7.0.1-105-gf940037>
62
- 2017-04-24 11:19:59.312348|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
63
- 2017-04-24 11:19:59.312424|n| RLIMIT_NOFILE(4096,4096)
64
- 2017-04-24 11:19:59.314172|n| thread start (0/1)
65
- 2017-04-24 11:20:02.950972|n| thread end (0/0)
66
- 2017-04-24 11:20:02.956336|n| grn_fin (0)
67
- 2017-04-24 11:20:09.443167|n| grn_init: <7.0.1-105-gf940037>
68
- 2017-04-24 11:20:09.443214|n| vm.overcommit_memory kernel parameter should be 1: <0>: See INFO level log to resolve this
69
- 2017-04-24 11:20:09.443297|n| RLIMIT_NOFILE(4096,4096)
70
- 2017-04-24 11:20:10.445853|n| thread start (0/1)
71
- 2017-04-24 11:20:10.789276|n| thread end (0/0)
72
- 2017-04-24 11:20:10.792230|n| grn_fin (0)
73
- 2017-04-24 13:01:10.343392|e| system call error: Interrupted system call: epoll_wait
74
- 2017-04-24 13:01:10.343699|e| /tmp/local/lib/libgroonga.so.0(grn_com_event_poll+0x600) [0x7f8575c9c5cf]
75
- 2017-04-24 13:01:10.343722|e| groonga(+0xc58b) [0x56012441658b]
76
- 2017-04-24 13:01:10.343737|e| groonga(+0xde2e) [0x560124417e2e]
77
- 2017-04-24 13:01:10.343748|e| groonga(+0x54e0) [0x56012440f4e0]
78
- 2017-04-24 13:01:10.343759|e| /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1) [0x7f857478d2b1]
79
- 2017-04-24 13:01:10.343771|e| groonga(+0x5e6a) [0x56012440fe6a]