groonga-query-log 1.0.6 → 1.0.7
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2eefbe93d2c19b8bbcd1bb9500431012c363f7a
|
4
|
+
data.tar.gz: dae8822afd3dc89125f8739f81f375c120416143
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66d45d79027aaf124b7bf470451c832163685b6debed1f24f8a997876066df2795dbfb9bbdda694874b5436c9855782a05057060e3ebca66e0deb6304cff57fe
|
7
|
+
data.tar.gz: acecf0d714ab9f5de1c61feb57f6f1a9795aa68655e2ee3a016eb03052f7ee1b138fc5449747d136c5d365b798fa13e9308ad820d4acb419270071167c3564ac
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
#
|
4
|
+
# Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
|
5
|
+
#
|
6
|
+
# This library is free software; you can redistribute it and/or
|
7
|
+
# modify it under the terms of the GNU Lesser General Public
|
8
|
+
# License as published by the Free Software Foundation; either
|
9
|
+
# version 2.1 of the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# This library is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
# Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with this library; if not, write to the Free Software
|
18
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
19
|
+
|
20
|
+
require "groonga/query-log/command/show-running-queries"
|
21
|
+
|
22
|
+
command = Groonga::QueryLog::Command::ShowRunningQueries.new
|
23
|
+
exit(command.run(ARGV))
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.0.7: 2014-06-23
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* groonga-query-log-show-running-queries: Added a command that shows
|
8
|
+
running queries on the specified base time. It will be useful to
|
9
|
+
find a query that causes a problem.
|
10
|
+
|
3
11
|
## 1.0.6: 2014-06-02
|
4
12
|
|
5
13
|
### Improvements
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
require "optparse"
|
18
|
+
require "time"
|
19
|
+
|
20
|
+
require "groonga/query-log/version"
|
21
|
+
require "groonga/query-log/parser"
|
22
|
+
|
23
|
+
module Groonga
|
24
|
+
module QueryLog
|
25
|
+
module Command
|
26
|
+
class ShowRunningQueries
|
27
|
+
def initialize
|
28
|
+
@base_time = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def run(command_line)
|
32
|
+
input_paths = create_parser.parse(command_line)
|
33
|
+
each_parsing_statistic(input_paths) do |statistic|
|
34
|
+
timestamp = statistic.start_time.strftime("%Y-%m-%d %H:%M:%S.%6N")
|
35
|
+
puts("#{timestamp}:#{statistic.raw_command}")
|
36
|
+
end
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
def create_parser
|
42
|
+
parser = OptionParser.new
|
43
|
+
parser.version = VERSION
|
44
|
+
parser.banner += " QUERY_LOG"
|
45
|
+
|
46
|
+
parser.separator("")
|
47
|
+
parser.separator("Options:")
|
48
|
+
|
49
|
+
parser.on("--base-time=TIME",
|
50
|
+
"Show running queries at TIME",
|
51
|
+
"You can use popular time format for TIME such as W3C-DTF",
|
52
|
+
"(now)") do |base_time|
|
53
|
+
@base_time = Time.parse(base_time)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def each_parsing_statistic(input_paths)
|
58
|
+
parser = Parser.new
|
59
|
+
catch do |tag|
|
60
|
+
input_paths.each do |input_path|
|
61
|
+
File.open(input_path) do |input|
|
62
|
+
parser.parse(input) do |statistic|
|
63
|
+
next if @base_time.nil?
|
64
|
+
next if statistic.start_time < @base_time
|
65
|
+
if statistic.start_time == @base_time
|
66
|
+
yield(statistic)
|
67
|
+
end
|
68
|
+
throw(tag)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
parser.parsing_statistics.each do |statistic|
|
74
|
+
yield(statistic)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -27,6 +27,7 @@ module Groonga
|
|
27
27
|
@options = options
|
28
28
|
@slow_operation_threshold = options[:slow_operation_threshold]
|
29
29
|
@slow_response_threshold = options[:slow_response_threshold]
|
30
|
+
@parsing_statistics = {}
|
30
31
|
end
|
31
32
|
|
32
33
|
# Parses query-log file as stream to
|
@@ -39,7 +40,6 @@ module Groonga
|
|
39
40
|
# @yieldparam [Groonga::QueryLog::Analyzer::Statistic] statistic
|
40
41
|
# statistics of each query in log files.
|
41
42
|
def parse(input, &block)
|
42
|
-
current_statistics = {}
|
43
43
|
input.each_line do |line|
|
44
44
|
next unless line.valid_encoding?
|
45
45
|
case line
|
@@ -51,26 +51,28 @@ module Groonga
|
|
51
51
|
rest = $POSTMATCH.strip
|
52
52
|
time_stamp = Time.local(year, month, day, hour, minutes, seconds,
|
53
53
|
micro_seconds)
|
54
|
-
parse_line(
|
55
|
-
time_stamp, context_id, type, rest, &block)
|
54
|
+
parse_line(time_stamp, context_id, type, rest, &block)
|
56
55
|
end
|
57
56
|
end
|
58
57
|
end
|
59
58
|
|
59
|
+
def parsing_statistics
|
60
|
+
@parsing_statistics.values
|
61
|
+
end
|
62
|
+
|
60
63
|
private
|
61
|
-
def parse_line(
|
62
|
-
time_stamp, context_id, type, rest, &block)
|
64
|
+
def parse_line(time_stamp, context_id, type, rest, &block)
|
63
65
|
case type
|
64
66
|
when ">"
|
65
67
|
statistic = create_statistic(context_id)
|
66
68
|
statistic.start(time_stamp, rest)
|
67
|
-
|
69
|
+
@parsing_statistics[context_id] = statistic
|
68
70
|
when ":"
|
69
71
|
return unless /\A(\d+) (.+)\((\d+)\)/ =~ rest
|
70
72
|
elapsed = $1
|
71
73
|
name = $2
|
72
74
|
n_records = $3.to_i
|
73
|
-
statistic =
|
75
|
+
statistic = @parsing_statistics[context_id]
|
74
76
|
return if statistic.nil?
|
75
77
|
statistic.add_operation(:name => name,
|
76
78
|
:elapsed => elapsed.to_i,
|
@@ -79,7 +81,7 @@ module Groonga
|
|
79
81
|
return unless /\A(\d+) rc=(-?\d+)/ =~ rest
|
80
82
|
elapsed = $1
|
81
83
|
return_code = $2
|
82
|
-
statistic =
|
84
|
+
statistic = @parsing_statistics.delete(context_id)
|
83
85
|
return if statistic.nil?
|
84
86
|
statistic.finish(elapsed.to_i, return_code.to_i)
|
85
87
|
block.call(statistic)
|
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.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: groonga-command-parser
|
@@ -159,6 +159,7 @@ executables:
|
|
159
159
|
- groonga-query-log-extract
|
160
160
|
- groonga-query-log-run-regression-test
|
161
161
|
- groonga-query-log-replay
|
162
|
+
- groonga-query-log-show-running-queries
|
162
163
|
- groonga-query-log-detect-memory-leak
|
163
164
|
- groonga-query-log-analyze
|
164
165
|
extensions: []
|
@@ -174,6 +175,7 @@ files:
|
|
174
175
|
- bin/groonga-query-log-format-regression-test-logs
|
175
176
|
- bin/groonga-query-log-replay
|
176
177
|
- bin/groonga-query-log-run-regression-test
|
178
|
+
- bin/groonga-query-log-show-running-queries
|
177
179
|
- bin/groonga-query-log-verify-server
|
178
180
|
- doc/text/lgpl-2.1.txt
|
179
181
|
- doc/text/news.md
|
@@ -194,6 +196,7 @@ files:
|
|
194
196
|
- lib/groonga/query-log/command/format-regression-test-logs.rb
|
195
197
|
- lib/groonga/query-log/command/replay.rb
|
196
198
|
- lib/groonga/query-log/command/run-regression-test.rb
|
199
|
+
- lib/groonga/query-log/command/show-running-queries.rb
|
197
200
|
- lib/groonga/query-log/command/verify-server.rb
|
198
201
|
- lib/groonga/query-log/extractor.rb
|
199
202
|
- lib/groonga/query-log/memory-leak-detector.rb
|