groonga-query-log 1.6.7 → 1.7.2
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9d218a019817b6222c63db7cb6dcde54452d56dba3ad1026e678e0d64a8ca1c
|
4
|
+
data.tar.gz: 4755e11de2ab221a1db0a1d6c2fa86c3bf05e18c3cd30e451096160bf870e169
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1380025523bbb3debb587da39f774f7e2cb7aab6301e2d6f66ebf9c7fed3baccbfa5e4fc57202db3e1d00c53a37686196d1165df560ba9c824cce68efd21af03
|
7
|
+
data.tar.gz: ed36cd1e75dc79eb701238bad818ee0a42531d1ff47ebaba255bdfeb68574f173f49e44f0e38e786d45d41981d720c6ac2e5d32f6a84fa8abebdcde0adebe8bb
|
data/doc/text/news.md
CHANGED
@@ -1,8 +1,47 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.7.2: 2020-06-02
|
4
|
+
|
5
|
+
### Fixes
|
6
|
+
|
7
|
+
* `server-verifier`: Fixed a bug that performance verification
|
8
|
+
doesn't try 5 times.
|
9
|
+
|
10
|
+
## 1.7.1: 2020-06-01
|
11
|
+
|
12
|
+
### Fixes
|
13
|
+
|
14
|
+
* `server-verifier`: Fixed a bug that performance verification with
|
15
|
+
`--stop-onlfailre` doesn't work.
|
16
|
+
|
17
|
+
* `run-regression-test`: Fixed a bug that failure is ignored.
|
18
|
+
|
19
|
+
## 1.7.0: 2020-05-31
|
20
|
+
|
21
|
+
### Fixes
|
22
|
+
|
23
|
+
* `server-verifier`: Fixed a bug that performance verification
|
24
|
+
doesn't work.
|
25
|
+
|
26
|
+
## 1.6.9: 2020-05-30
|
27
|
+
|
28
|
+
### Fixes
|
29
|
+
|
30
|
+
* `server-verifier`: Fixed a bug that performance verification
|
31
|
+
doesn't work.
|
32
|
+
|
33
|
+
## 1.6.8: 2020-05-30
|
34
|
+
|
35
|
+
### Improvements
|
36
|
+
|
37
|
+
* `server-verifier`: Stopped sorting elapsed times.
|
38
|
+
|
39
|
+
* `run-regression-test`: Ensured killing Groonga server on start up
|
40
|
+
error.
|
41
|
+
|
3
42
|
## 1.6.7: 2020-05-30
|
4
43
|
|
5
|
-
###
|
44
|
+
### Improvements
|
6
45
|
|
7
46
|
* `extract`: Added support for no command request case such as `/`.
|
8
47
|
|
@@ -559,6 +559,7 @@ module GroongaQueryLog
|
|
559
559
|
@host = "127.0.0.1"
|
560
560
|
@port = find_unused_port
|
561
561
|
@options = options
|
562
|
+
@pid = nil
|
562
563
|
end
|
563
564
|
|
564
565
|
def run
|
@@ -579,25 +580,28 @@ module GroongaQueryLog
|
|
579
580
|
spawn_args << @database_path.to_s
|
580
581
|
@pid = spawn(*spawn_args)
|
581
582
|
|
582
|
-
n_retries = 10
|
583
583
|
begin
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
584
|
+
n_retries = 60
|
585
|
+
begin
|
586
|
+
send_command("status")
|
587
|
+
rescue SystemCallError
|
588
|
+
sleep(1)
|
589
|
+
n_retries -= 1
|
590
|
+
raise if n_retries.zero?
|
591
|
+
retry
|
592
|
+
end
|
591
593
|
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
594
|
+
if @options[:warm_up]
|
595
|
+
send_command("dump?dump_records=no")
|
596
|
+
warm_up_commands = @options[:warm_up_commands] || []
|
597
|
+
warm_up_commands.each do |command|
|
598
|
+
send_command(command)
|
599
|
+
end
|
597
600
|
end
|
601
|
+
rescue
|
602
|
+
shutdown
|
603
|
+
raise
|
598
604
|
end
|
599
|
-
|
600
|
-
yield if block_given?
|
601
605
|
end
|
602
606
|
|
603
607
|
def ensure_database
|
@@ -688,11 +692,14 @@ module GroongaQueryLog
|
|
688
692
|
end
|
689
693
|
|
690
694
|
def shutdown
|
695
|
+
return if @pid.nil?
|
691
696
|
begin
|
692
697
|
send_command("shutdown")
|
693
698
|
rescue SystemCallError
|
699
|
+
Process.kill(:KILL, @pid)
|
694
700
|
end
|
695
701
|
Process.waitpid(@pid)
|
702
|
+
@pid = nil
|
696
703
|
end
|
697
704
|
|
698
705
|
def n_leaked_objects
|
@@ -769,7 +776,6 @@ module GroongaQueryLog
|
|
769
776
|
@n_clients = options[:n_clients] || 1
|
770
777
|
@stop_on_failure = options[:stop_on_failure]
|
771
778
|
@options = options
|
772
|
-
@n_ready_waits = 2
|
773
779
|
@n_executed_commands = 0
|
774
780
|
end
|
775
781
|
|
@@ -777,21 +783,42 @@ module GroongaQueryLog
|
|
777
783
|
@old.ensure_database
|
778
784
|
@new.ensure_database
|
779
785
|
|
786
|
+
ready_queue = Thread::Queue.new
|
787
|
+
wait_queue = Thread::Queue.new
|
780
788
|
old_thread = Thread.new do
|
781
|
-
@old.run
|
782
|
-
|
789
|
+
@old.run
|
790
|
+
begin
|
791
|
+
ready_queue.push(true)
|
792
|
+
wait_queue.pop
|
793
|
+
true
|
794
|
+
ensure
|
795
|
+
@old.shutdown
|
783
796
|
end
|
784
797
|
end
|
785
798
|
new_thread = Thread.new do
|
786
|
-
@new.run
|
787
|
-
|
799
|
+
@new.run
|
800
|
+
begin
|
801
|
+
ready_queue.push(true)
|
802
|
+
wait_queue.pop
|
803
|
+
true
|
804
|
+
ensure
|
805
|
+
@new.shutdown
|
788
806
|
end
|
789
807
|
end
|
808
|
+
test_thread = Thread.new do
|
809
|
+
ready_queue.pop
|
810
|
+
ready_queue.pop
|
811
|
+
success = run_test
|
812
|
+
wait_queue.push(true)
|
813
|
+
wait_queue.push(true)
|
814
|
+
success
|
815
|
+
end
|
790
816
|
|
791
817
|
old_thread_success = old_thread.value
|
792
818
|
new_thread_success = new_thread.value
|
819
|
+
test_thread_success = test_thread.value
|
793
820
|
|
794
|
-
old_thread_success and new_thread_success
|
821
|
+
old_thread_success and new_thread_success and test_thread_success
|
795
822
|
end
|
796
823
|
|
797
824
|
def n_executed_commands
|
@@ -800,10 +827,7 @@ module GroongaQueryLog
|
|
800
827
|
|
801
828
|
private
|
802
829
|
def run_test
|
803
|
-
|
804
|
-
return true unless @n_ready_waits.zero?
|
805
|
-
|
806
|
-
same = true
|
830
|
+
success = true
|
807
831
|
query_log_paths.each do |query_log_path|
|
808
832
|
log_path = test_log_path(query_log_path)
|
809
833
|
if @options[:skip_finished_queries] and log_path.exist?
|
@@ -828,24 +852,14 @@ module GroongaQueryLog
|
|
828
852
|
callback = nil
|
829
853
|
end
|
830
854
|
unless verify_server(log_path, query_log_path, &callback)
|
831
|
-
|
855
|
+
success = false
|
832
856
|
break if @stop_on_failure
|
833
857
|
end
|
834
858
|
rescue Interrupt
|
835
859
|
puts("Interrupt: #{query_log_path}")
|
836
860
|
end
|
837
861
|
end
|
838
|
-
|
839
|
-
old_thread = Thread.new do
|
840
|
-
@old.shutdown
|
841
|
-
end
|
842
|
-
new_thread = Thread.new do
|
843
|
-
@new.shutdown
|
844
|
-
end
|
845
|
-
old_thread.join
|
846
|
-
new_thread.join
|
847
|
-
|
848
|
-
same
|
862
|
+
success
|
849
863
|
end
|
850
864
|
|
851
865
|
def verify_server(test_log_path, query_log_path, &callback)
|
@@ -47,16 +47,16 @@ module GroongaQueryLog
|
|
47
47
|
diff_ratio > @threshold_ratio
|
48
48
|
end
|
49
49
|
|
50
|
-
def
|
51
|
-
|
50
|
+
def old_elapsed_times
|
51
|
+
collect_elapsed_times(@old_responses)
|
52
52
|
end
|
53
53
|
|
54
54
|
def old_elapsed_time
|
55
55
|
choose_target_elapsed_time(@old_responses)
|
56
56
|
end
|
57
57
|
|
58
|
-
def
|
59
|
-
|
58
|
+
def new_elapsed_times
|
59
|
+
collect_elapsed_times(@new_responses)
|
60
60
|
end
|
61
61
|
|
62
62
|
def new_elapsed_time
|
@@ -74,15 +74,14 @@ module GroongaQueryLog
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
def
|
78
|
-
|
77
|
+
def collect_elapsed_times(responses)
|
78
|
+
responses.collect do |response|
|
79
79
|
response.elapsed_time
|
80
80
|
end
|
81
|
-
elapsed_times.sort
|
82
81
|
end
|
83
82
|
|
84
83
|
def choose_target_elapsed_time(responses)
|
85
|
-
sorted_elapsed_times =
|
84
|
+
sorted_elapsed_times = collect_elapsed_times(responses).sort
|
86
85
|
|
87
86
|
strategy = @options.choose_strategy
|
88
87
|
case strategy
|
@@ -188,11 +188,19 @@ module GroongaQueryLog
|
|
188
188
|
end
|
189
189
|
|
190
190
|
if @options.verify_performance?
|
191
|
-
verify_performance(command,
|
191
|
+
verify_performance(command,
|
192
|
+
groonga1_client,
|
193
|
+
groonga2_client,
|
194
|
+
response1,
|
195
|
+
response2)
|
192
196
|
end
|
193
197
|
end
|
194
198
|
|
195
|
-
def verify_performance(command,
|
199
|
+
def verify_performance(command,
|
200
|
+
groonga1_client,
|
201
|
+
groonga2_client,
|
202
|
+
response1,
|
203
|
+
response2)
|
196
204
|
responses1 = [response1]
|
197
205
|
responses2 = [response2]
|
198
206
|
verifier = PerformanceVerifier.new(command,
|
@@ -203,23 +211,24 @@ module GroongaQueryLog
|
|
203
211
|
|
204
212
|
n_tries = 4
|
205
213
|
n_tries.times do
|
214
|
+
return if stop?
|
215
|
+
|
206
216
|
responses1 << groonga1_client.execute(command)
|
207
217
|
responses2 << groonga2_client.execute(command)
|
208
218
|
verifier = PerformanceVerifier.new(command,
|
209
219
|
responses1,
|
210
220
|
responses2,
|
211
221
|
@options.performance_verifier_options)
|
212
|
-
|
213
|
-
@slow = true
|
214
|
-
@events.push([:slow,
|
215
|
-
command,
|
216
|
-
verifier.old_elapsed_time,
|
217
|
-
verifier.new_elapsed_time,
|
218
|
-
verifier.old_sorted_elapsed_time,
|
219
|
-
verifier.new_sorted_elapsed_time])
|
220
|
-
return
|
221
|
-
end
|
222
|
+
return unless verifier.slow?
|
222
223
|
end
|
224
|
+
|
225
|
+
@slow = true
|
226
|
+
@events.push([:slow,
|
227
|
+
command,
|
228
|
+
verifier.old_elapsed_time,
|
229
|
+
verifier.new_elapsed_time,
|
230
|
+
verifier.old_elapsed_times,
|
231
|
+
verifier.new_elapsed_times])
|
223
232
|
end
|
224
233
|
|
225
234
|
def rewrite_filter(command, name)
|
@@ -251,14 +260,14 @@ module GroongaQueryLog
|
|
251
260
|
command,
|
252
261
|
old_elapsed_time,
|
253
262
|
new_elapsed_time,
|
254
|
-
|
255
|
-
|
263
|
+
old_elapsed_times,
|
264
|
+
new_elapsed_times)
|
256
265
|
command_source = command.original_source || command.to_uri_format
|
257
266
|
output.puts("command: #{command_source}")
|
258
267
|
output.puts("elapsed_time_old: #{old_elapsed_time}")
|
259
268
|
output.puts("elapsed_time_new: #{new_elapsed_time}")
|
260
|
-
output.puts("elapsed_times_old: #{
|
261
|
-
output.puts("elapsed_times_new: #{
|
269
|
+
output.puts("elapsed_times_old: #{old_elapsed_times.join(' ')}")
|
270
|
+
output.puts("elapsed_times_new: #{new_elapsed_times.join(' ')}")
|
262
271
|
output.puts("elapsed_time_ratio: #{new_elapsed_time / old_elapsed_time}")
|
263
272
|
output.flush
|
264
273
|
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.
|
4
|
+
version: 1.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: charty
|