gitlab-exporter 16.1.0 → 16.3.0
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 +4 -4
- data/.gitlab-ci.yml +1 -1
- data/Gemfile.lock +10 -10
- data/gitlab-exporter.gemspec +3 -3
- data/lib/gitlab_exporter/database/zoekt.rb +121 -14
- data/lib/gitlab_exporter/version.rb +1 -1
- data/spec/database/zoekt_spec.rb +73 -23
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f525375bfd6495a98af906badecaa459b07d6464327b47abd754e9a54b002522
|
|
4
|
+
data.tar.gz: 13388a0735f269ed0ad9c43a324e8e77a4c008ac2f8d9ec9a10a48a623886141
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0e754a5a16e88b93604313e719ae13441ffad1c4062d531c375aa11d7747a2aa4235037a42665d318b7534c3d6568ccc1f0c4fd8321cbed5fde3333e4a81bbbb
|
|
7
|
+
data.tar.gz: 230d9ac1d8925987027961bde296501e3dd665082f7f8140c29582997249f0342a721b58b5ad351e2c204c16afac46bdc1ee8ceed9095533a8614c7ad0f250b2
|
data/.gitlab-ci.yml
CHANGED
|
@@ -62,7 +62,7 @@ rspec_integration:
|
|
|
62
62
|
services:
|
|
63
63
|
- name: redis:${REDIS_VERSION}
|
|
64
64
|
alias: redis-master
|
|
65
|
-
- name:
|
|
65
|
+
- name: bitnamilegacy/redis-sentinel:${REDIS_SENTINEL_VERSION}
|
|
66
66
|
alias: redis-sentinel
|
|
67
67
|
command:
|
|
68
68
|
- /bin/sh
|
data/Gemfile.lock
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gitlab-exporter (16.
|
|
5
|
-
connection_pool (= 2.5.
|
|
4
|
+
gitlab-exporter (16.3.0)
|
|
5
|
+
connection_pool (= 2.5.4)
|
|
6
6
|
deep_merge (~> 1.2.2)
|
|
7
|
-
faraday (= 2.
|
|
8
|
-
pg (= 1.6.
|
|
7
|
+
faraday (= 2.14.0)
|
|
8
|
+
pg (= 1.6.2)
|
|
9
9
|
puma (= 6.6.1)
|
|
10
10
|
quantile (= 0.2.1)
|
|
11
11
|
redis (= 4.8.1)
|
|
@@ -19,10 +19,10 @@ GEM
|
|
|
19
19
|
specs:
|
|
20
20
|
ast (2.4.3)
|
|
21
21
|
base64 (0.2.0)
|
|
22
|
-
connection_pool (2.5.
|
|
22
|
+
connection_pool (2.5.4)
|
|
23
23
|
deep_merge (1.2.2)
|
|
24
24
|
diff-lcs (1.5.0)
|
|
25
|
-
faraday (2.
|
|
25
|
+
faraday (2.14.0)
|
|
26
26
|
faraday-net_http (>= 2.0, < 3.5)
|
|
27
27
|
json
|
|
28
28
|
logger
|
|
@@ -38,7 +38,7 @@ GEM
|
|
|
38
38
|
parser (3.3.9.0)
|
|
39
39
|
ast (~> 2.4.1)
|
|
40
40
|
racc
|
|
41
|
-
pg (1.6.
|
|
41
|
+
pg (1.6.2)
|
|
42
42
|
prism (1.4.0)
|
|
43
43
|
puma (6.6.1)
|
|
44
44
|
nio4r (~> 2.0)
|
|
@@ -66,7 +66,7 @@ GEM
|
|
|
66
66
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
67
67
|
rspec-support (~> 3.12.0)
|
|
68
68
|
rspec-support (3.12.0)
|
|
69
|
-
rubocop (1.
|
|
69
|
+
rubocop (1.81.6)
|
|
70
70
|
json (~> 2.3)
|
|
71
71
|
language_server-protocol (~> 3.17.0.2)
|
|
72
72
|
lint_roller (~> 1.1.0)
|
|
@@ -74,10 +74,10 @@ GEM
|
|
|
74
74
|
parser (>= 3.3.0.2)
|
|
75
75
|
rainbow (>= 2.2.2, < 4.0)
|
|
76
76
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
77
|
-
rubocop-ast (>= 1.
|
|
77
|
+
rubocop-ast (>= 1.47.1, < 2.0)
|
|
78
78
|
ruby-progressbar (~> 1.7)
|
|
79
79
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
80
|
-
rubocop-ast (1.
|
|
80
|
+
rubocop-ast (1.47.1)
|
|
81
81
|
parser (>= 3.3.7.2)
|
|
82
82
|
prism (~> 1.4)
|
|
83
83
|
ruby-progressbar (1.13.0)
|
data/gitlab-exporter.gemspec
CHANGED
|
@@ -22,10 +22,10 @@ Gem::Specification.new do |s|
|
|
|
22
22
|
|
|
23
23
|
s.required_ruby_version = Gem::Requirement.new(">= 3.0")
|
|
24
24
|
|
|
25
|
-
s.add_runtime_dependency "connection_pool", "2.5.
|
|
25
|
+
s.add_runtime_dependency "connection_pool", "2.5.4"
|
|
26
26
|
s.add_runtime_dependency "deep_merge", "~> 1.2.2"
|
|
27
|
-
s.add_runtime_dependency "faraday", "2.
|
|
28
|
-
s.add_runtime_dependency "pg", "1.6.
|
|
27
|
+
s.add_runtime_dependency "faraday", "2.14.0"
|
|
28
|
+
s.add_runtime_dependency "pg", "1.6.2"
|
|
29
29
|
s.add_runtime_dependency "puma", "6.6.1"
|
|
30
30
|
s.add_runtime_dependency "quantile", "0.2.1"
|
|
31
31
|
s.add_runtime_dependency "redis", "4.8.1"
|
|
@@ -3,7 +3,8 @@ module GitLab
|
|
|
3
3
|
module Database
|
|
4
4
|
# A helper class to collect zoekt metrics.
|
|
5
5
|
class ZoektCollector < Base
|
|
6
|
-
|
|
6
|
+
# Query to get processing zoekt_tasks distribution by zoekt_node_id
|
|
7
|
+
ZOEKT_TASKS_PROCESSING_QUERY = <<~SQL.freeze
|
|
7
8
|
WITH task_counts AS (
|
|
8
9
|
SELECT
|
|
9
10
|
zoekt_node_id,
|
|
@@ -26,6 +27,34 @@ module GitLab
|
|
|
26
27
|
task_counts tc ON n.id = tc.zoekt_node_id
|
|
27
28
|
SQL
|
|
28
29
|
|
|
30
|
+
ZOEKT_NODES_QUERY = <<~SQL.freeze
|
|
31
|
+
SELECT schema_version, id FROM zoekt_nodes
|
|
32
|
+
SQL
|
|
33
|
+
|
|
34
|
+
ZOEKT_NODES_STATUS_QUERY = <<~SQL.freeze
|
|
35
|
+
SELECT
|
|
36
|
+
id,
|
|
37
|
+
CASE
|
|
38
|
+
WHEN last_seen_at < NOW() - INTERVAL '2 minute' THEN 0
|
|
39
|
+
ELSE 1
|
|
40
|
+
END AS status
|
|
41
|
+
FROM zoekt_nodes;
|
|
42
|
+
SQL
|
|
43
|
+
|
|
44
|
+
ZOEKT_REPOSITORY_SCHEMA_VERSION_QUERY = <<~SQL.freeze
|
|
45
|
+
SELECT
|
|
46
|
+
COUNT(*)
|
|
47
|
+
FROM
|
|
48
|
+
zoekt_repositories
|
|
49
|
+
INNER JOIN
|
|
50
|
+
zoekt_indices
|
|
51
|
+
ON zoekt_repositories.zoekt_index_id = zoekt_indices.id
|
|
52
|
+
WHERE
|
|
53
|
+
zoekt_indices.zoekt_node_id = $1
|
|
54
|
+
AND zoekt_repositories.schema_version < $2
|
|
55
|
+
AND zoekt_repositories.state = 10;
|
|
56
|
+
SQL
|
|
57
|
+
|
|
29
58
|
ZOEKT_ENABLED_QUERY = <<~SQL.freeze
|
|
30
59
|
SELECT
|
|
31
60
|
zoekt_settings ->> 'zoekt_indexing_enabled' AS zoekt_indexing_enabled
|
|
@@ -35,13 +64,50 @@ module GitLab
|
|
|
35
64
|
SQL
|
|
36
65
|
|
|
37
66
|
def run
|
|
38
|
-
return unless zoekt_indexing_enabled?
|
|
67
|
+
return {} unless zoekt_indexing_enabled?
|
|
39
68
|
|
|
40
|
-
|
|
69
|
+
{
|
|
70
|
+
task_processing_query_result: execute(ZOEKT_TASKS_PROCESSING_QUERY, [Time.now.utc]),
|
|
71
|
+
repositories_schema_version_query_result: repositories_schema_version_query_result,
|
|
72
|
+
zoekt_nodes_status_query_result: execute(ZOEKT_NODES_STATUS_QUERY)
|
|
73
|
+
}.compact
|
|
41
74
|
end
|
|
42
75
|
|
|
43
76
|
private
|
|
44
77
|
|
|
78
|
+
def repositories_schema_version_query_result
|
|
79
|
+
hash = zoekt_node_schema_version_hash
|
|
80
|
+
return if hash.nil?
|
|
81
|
+
|
|
82
|
+
zoekt_repository_schema_version_result(hash)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def zoekt_node_schema_version_hash
|
|
86
|
+
zoekt_nodes = execute(ZOEKT_NODES_QUERY)
|
|
87
|
+
return if zoekt_nodes.nil?
|
|
88
|
+
|
|
89
|
+
hash = {}
|
|
90
|
+
zoekt_nodes.each do |row|
|
|
91
|
+
hash[row["id"]] = row["schema_version"]
|
|
92
|
+
end
|
|
93
|
+
hash
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def zoekt_repository_schema_version_result(hash)
|
|
97
|
+
result = Set.new
|
|
98
|
+
hash.each do |id, schema_version|
|
|
99
|
+
query_result = execute(ZOEKT_REPOSITORY_SCHEMA_VERSION_QUERY, [id, schema_version])
|
|
100
|
+
if query_result.nil?
|
|
101
|
+
result = nil
|
|
102
|
+
break
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
count = query_result[0]["count"].to_i
|
|
106
|
+
result.add({ target_schema_version: schema_version, zoekt_node_id: id, unfinished_repository_count: count })
|
|
107
|
+
end
|
|
108
|
+
result
|
|
109
|
+
end
|
|
110
|
+
|
|
45
111
|
def zoekt_indexing_enabled?
|
|
46
112
|
@zoekt_indexing_enabled ||=
|
|
47
113
|
begin
|
|
@@ -53,7 +119,7 @@ module GitLab
|
|
|
53
119
|
end
|
|
54
120
|
end
|
|
55
121
|
|
|
56
|
-
def execute(query, params)
|
|
122
|
+
def execute(query, params = [])
|
|
57
123
|
with_connection_pool do |conn|
|
|
58
124
|
conn.exec_params(query, params)
|
|
59
125
|
end
|
|
@@ -64,9 +130,23 @@ module GitLab
|
|
|
64
130
|
|
|
65
131
|
# The prober which is called when gathering metrics
|
|
66
132
|
class ZoektProber
|
|
67
|
-
PrometheusMetrics.describe(
|
|
68
|
-
|
|
69
|
-
|
|
133
|
+
PrometheusMetrics.describe(
|
|
134
|
+
"search_zoekt_task_processing_queue_size",
|
|
135
|
+
"Number of tasks waiting to be processed by Zoekt",
|
|
136
|
+
"gauge"
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
PrometheusMetrics.describe(
|
|
140
|
+
"search_zoekt_repositories_schema_version_count",
|
|
141
|
+
"Number of zoekt_repositories which do not have the latest schema version",
|
|
142
|
+
"gauge"
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
PrometheusMetrics.describe(
|
|
146
|
+
"search_zoekt_nodes_status",
|
|
147
|
+
"Status of each zoekt_node. 0 is offline (last seen more than 2 minutes ago), 1 is online",
|
|
148
|
+
"gauge"
|
|
149
|
+
)
|
|
70
150
|
|
|
71
151
|
def initialize(metrics: PrometheusMetrics.new, **opts)
|
|
72
152
|
@metrics = metrics
|
|
@@ -75,13 +155,14 @@ module GitLab
|
|
|
75
155
|
|
|
76
156
|
def probe_db
|
|
77
157
|
results = @collector.run
|
|
78
|
-
results.to_a.each do |row|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
158
|
+
results[:task_processing_query_result].to_a.each do |row|
|
|
159
|
+
add_processing_zoekt_tasks_to_metric(row)
|
|
160
|
+
end
|
|
161
|
+
results[:repositories_schema_version_query_result]&.each do |row|
|
|
162
|
+
add_zoekt_repositories_by_schema_version_to_metric(row)
|
|
163
|
+
end
|
|
164
|
+
results[:zoekt_nodes_status_query_result]&.each do |row|
|
|
165
|
+
add_zoekt_nodes_status_to_metric(row)
|
|
85
166
|
end
|
|
86
167
|
|
|
87
168
|
self
|
|
@@ -89,6 +170,32 @@ module GitLab
|
|
|
89
170
|
self
|
|
90
171
|
end
|
|
91
172
|
|
|
173
|
+
def add_processing_zoekt_tasks_to_metric(row)
|
|
174
|
+
@metrics.add(
|
|
175
|
+
"search_zoekt_task_processing_queue_size",
|
|
176
|
+
row["task_count"].to_i,
|
|
177
|
+
node_name: row["node_name"],
|
|
178
|
+
node_id: row["node_id"]
|
|
179
|
+
)
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def add_zoekt_repositories_by_schema_version_to_metric(row)
|
|
183
|
+
@metrics.add(
|
|
184
|
+
"search_zoekt_repositories_schema_version_count",
|
|
185
|
+
row[:unfinished_repository_count].to_i,
|
|
186
|
+
target_schema_version: row[:target_schema_version],
|
|
187
|
+
zoekt_node_id: row[:zoekt_node_id]
|
|
188
|
+
)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def add_zoekt_nodes_status_to_metric(row)
|
|
192
|
+
@metrics.add(
|
|
193
|
+
"search_zoekt_nodes_status",
|
|
194
|
+
row["status"].to_i,
|
|
195
|
+
zoekt_node_id: row["id"]
|
|
196
|
+
)
|
|
197
|
+
end
|
|
198
|
+
|
|
92
199
|
def write_to(target)
|
|
93
200
|
target.write(@metrics.to_s)
|
|
94
201
|
end
|
data/spec/database/zoekt_spec.rb
CHANGED
|
@@ -4,8 +4,15 @@ require "gitlab_exporter/database/zoekt"
|
|
|
4
4
|
describe GitLab::Exporter::Database::ZoektCollector do
|
|
5
5
|
let(:connection_pool) { double("connection pool") }
|
|
6
6
|
let(:connection) { double("connection") }
|
|
7
|
-
let(:
|
|
7
|
+
let(:zoekt_tasks_processing_query) { described_class::ZOEKT_TASKS_PROCESSING_QUERY }
|
|
8
|
+
let(:zoekt_nodes_query) { described_class::ZOEKT_NODES_QUERY }
|
|
9
|
+
let(:zoekt_nodes_query_results) { [{ "id" => "1", "schema_version" => "2302" }] }
|
|
8
10
|
let(:zoekt_enabled_query) { described_class::ZOEKT_ENABLED_QUERY }
|
|
11
|
+
let(:zoekt_repository_schema_version_query) { described_class::ZOEKT_REPOSITORY_SCHEMA_VERSION_QUERY }
|
|
12
|
+
let(:zoekt_nodes_status_query) { described_class::ZOEKT_NODES_STATUS_QUERY }
|
|
13
|
+
let(:zoekt_nodes_status_query_results) { [{ "id" => "1", "status" => "1" }] }
|
|
14
|
+
|
|
15
|
+
let(:zoekt_repository_schema_version_query_results) { [{ "count" => "1" }] }
|
|
9
16
|
|
|
10
17
|
subject(:collector) { described_class.new(connection_string: "host=localhost") }
|
|
11
18
|
|
|
@@ -26,13 +33,25 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
26
33
|
describe "#run" do
|
|
27
34
|
let(:zoekt_enabled_results) {}
|
|
28
35
|
let(:frozen_time) { Time.new(2023, 1, 1, 0, 0, 0, 0) }
|
|
29
|
-
let(:
|
|
36
|
+
let(:zoekt_tasks_processing_query_results) do
|
|
30
37
|
[
|
|
31
38
|
{ "node_id" => "1", "node_name" => "zoekt-1", "task_count" => "5" },
|
|
32
39
|
{ "node_id" => "2", "node_name" => "zoekt-2", "task_count" => "10" }
|
|
33
40
|
]
|
|
34
41
|
end
|
|
35
42
|
|
|
43
|
+
let(:zoekt_repositories_schema_version_query_results) do
|
|
44
|
+
Set.new([{ target_schema_version: "2302", zoekt_node_id: "1", unfinished_repository_count: 1 }])
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
let(:result) do
|
|
48
|
+
{
|
|
49
|
+
repositories_schema_version_query_result: zoekt_repositories_schema_version_query_results,
|
|
50
|
+
task_processing_query_result: zoekt_tasks_processing_query_results,
|
|
51
|
+
zoekt_nodes_status_query_result: zoekt_nodes_status_query_results
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
|
|
36
55
|
before do
|
|
37
56
|
allow(Time).to receive(:now).and_return(frozen_time)
|
|
38
57
|
end
|
|
@@ -42,10 +61,8 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
42
61
|
stub_zoekt_not_enabled
|
|
43
62
|
end
|
|
44
63
|
|
|
45
|
-
it "returns
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
expect(collector.run).to be_nil
|
|
64
|
+
it "returns {}" do
|
|
65
|
+
expect(collector.run).to eq({})
|
|
49
66
|
end
|
|
50
67
|
end
|
|
51
68
|
|
|
@@ -54,25 +71,43 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
54
71
|
stub_zoekt_enabled
|
|
55
72
|
end
|
|
56
73
|
|
|
57
|
-
it "executes the query with
|
|
58
|
-
expect(connection).to receive(:exec_params).with(
|
|
59
|
-
|
|
60
|
-
expect(
|
|
74
|
+
it "executes the query with correct params" do
|
|
75
|
+
expect(connection).to receive(:exec_params).with(zoekt_tasks_processing_query, [frozen_time])
|
|
76
|
+
.and_return(zoekt_tasks_processing_query_results)
|
|
77
|
+
expect(connection).to receive(:exec_params).with(zoekt_nodes_query, [])
|
|
78
|
+
.and_return(zoekt_nodes_query_results)
|
|
79
|
+
expect(connection).to receive(:exec_params).with(zoekt_repository_schema_version_query, %w[1 2302])
|
|
80
|
+
.and_return(zoekt_repository_schema_version_query_results)
|
|
81
|
+
expect(connection).to receive(:exec_params).with(zoekt_nodes_status_query, [])
|
|
82
|
+
.and_return(zoekt_nodes_status_query_results)
|
|
83
|
+
|
|
84
|
+
expect(collector.run).to eq(result)
|
|
61
85
|
end
|
|
62
86
|
|
|
63
87
|
context "when PG::UndefinedTable is raised" do
|
|
64
|
-
it "
|
|
65
|
-
allow(connection).to receive(:exec_params).with(
|
|
66
|
-
|
|
67
|
-
|
|
88
|
+
it "does not includes the key which got the exception" do
|
|
89
|
+
allow(connection).to receive(:exec_params).with(zoekt_tasks_processing_query, [frozen_time])
|
|
90
|
+
.and_raise(PG::UndefinedTable)
|
|
91
|
+
allow(connection).to receive(:exec_params).with(zoekt_nodes_query, [])
|
|
92
|
+
.and_raise(PG::UndefinedTable)
|
|
93
|
+
allow(connection).to receive(:exec_params).with(zoekt_nodes_status_query, [])
|
|
94
|
+
.and_raise(PG::UndefinedTable)
|
|
95
|
+
|
|
96
|
+
expect(collector.run).to eq({})
|
|
68
97
|
end
|
|
69
98
|
end
|
|
70
99
|
|
|
71
100
|
context "when PG::UndefinedColumn is raised" do
|
|
72
|
-
it "
|
|
73
|
-
allow(connection).to receive(:exec_params).with(
|
|
74
|
-
|
|
75
|
-
expect(
|
|
101
|
+
it "does not includes the key which got the exception" do
|
|
102
|
+
allow(connection).to receive(:exec_params).with(zoekt_tasks_processing_query, [frozen_time])
|
|
103
|
+
.and_return(zoekt_tasks_processing_query_results)
|
|
104
|
+
expect(connection).to receive(:exec_params).with(zoekt_nodes_query, [])
|
|
105
|
+
.and_return(zoekt_nodes_query_results)
|
|
106
|
+
expect(connection).to receive(:exec_params).with(zoekt_repository_schema_version_query, %w[1 2302])
|
|
107
|
+
.and_raise(PG::UndefinedTable)
|
|
108
|
+
expect(connection).to receive(:exec_params).with(zoekt_nodes_status_query, []).and_raise(PG::UndefinedTable)
|
|
109
|
+
|
|
110
|
+
expect(collector.run).to eq({ task_processing_query_result: zoekt_tasks_processing_query_results })
|
|
76
111
|
end
|
|
77
112
|
end
|
|
78
113
|
end
|
|
@@ -99,10 +134,15 @@ describe GitLab::Exporter::Database::ZoektProber do
|
|
|
99
134
|
let(:metrics) { double("PrometheusMetrics", add: nil) }
|
|
100
135
|
let(:collector) { double(GitLab::Exporter::Database::ZoektCollector, run: data) }
|
|
101
136
|
let(:data) do
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
137
|
+
{
|
|
138
|
+
repositories_schema_version_query_result: Set.new(
|
|
139
|
+
[{ target_schema_version: "2302", zoekt_node_id: "1", unfinished_repository_count: 1 }]
|
|
140
|
+
),
|
|
141
|
+
task_processing_query_result: [
|
|
142
|
+
{ "node_id" => "1", "node_name" => "zoekt-1", "task_count" => "5" },
|
|
143
|
+
{ "node_id" => "2", "node_name" => "zoekt-2", "task_count" => "10" }
|
|
144
|
+
]
|
|
145
|
+
}
|
|
106
146
|
end
|
|
107
147
|
|
|
108
148
|
describe "#probe_db" do
|
|
@@ -123,7 +163,7 @@ describe GitLab::Exporter::Database::ZoektProber do
|
|
|
123
163
|
it "adds metrics for each node" do
|
|
124
164
|
expect(collector).to receive(:run).and_return(data)
|
|
125
165
|
|
|
126
|
-
data.each do |node_data|
|
|
166
|
+
data[:task_processing_query_result].each do |node_data|
|
|
127
167
|
expect(metrics).to receive(:add)
|
|
128
168
|
.with("search_zoekt_task_processing_queue_size",
|
|
129
169
|
node_data["task_count"].to_i,
|
|
@@ -131,6 +171,16 @@ describe GitLab::Exporter::Database::ZoektProber do
|
|
|
131
171
|
node_id: node_data["node_id"])
|
|
132
172
|
end
|
|
133
173
|
|
|
174
|
+
data[:repositories_schema_version_query_result].each do |node_data|
|
|
175
|
+
expect(metrics).to receive(:add)
|
|
176
|
+
.with(
|
|
177
|
+
"search_zoekt_repositories_schema_version_count",
|
|
178
|
+
node_data[:unfinished_repository_count].to_i,
|
|
179
|
+
target_schema_version: node_data[:target_schema_version],
|
|
180
|
+
zoekt_node_id: node_data[:zoekt_node_id]
|
|
181
|
+
)
|
|
182
|
+
end
|
|
183
|
+
|
|
134
184
|
probe_db
|
|
135
185
|
end
|
|
136
186
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gitlab-exporter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 16.
|
|
4
|
+
version: 16.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pablo Carranza
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 2.5.
|
|
19
|
+
version: 2.5.4
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - '='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 2.5.
|
|
26
|
+
version: 2.5.4
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: deep_merge
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -44,28 +44,28 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - '='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 2.
|
|
47
|
+
version: 2.14.0
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - '='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 2.
|
|
54
|
+
version: 2.14.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: pg
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - '='
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 1.6.
|
|
61
|
+
version: 1.6.2
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - '='
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 1.6.
|
|
68
|
+
version: 1.6.2
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: puma
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|