gitlab-exporter 16.6.0 → 16.8.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/Gemfile.lock +6 -6
- data/gitlab-exporter.gemspec +2 -2
- data/lib/gitlab_exporter/database/zoekt.rb +20 -6
- data/lib/gitlab_exporter/sidekiq.rb +1 -1
- data/lib/gitlab_exporter/version.rb +1 -1
- data/spec/database/zoekt_spec.rb +27 -0
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8b320ac3c29627e5bca0700ab6007fb3681a286679032bccae4595af29e764fc
|
|
4
|
+
data.tar.gz: ab52c7b430a87959228fdb4483c2bf3a26f9838c983a5292dd27bb6b72123a8d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dbd696eb2e666142c275e46aff04eb9beda6739863fe505249f0074d1d8d1145fe6b41573e0f3521feee2bcde7dd2ad33e8fc76b1abc3f75e34e23d95d94258f
|
|
7
|
+
data.tar.gz: 2d426ce702f2d360b5aa8cc5ae51f4924295e717615c6da3adbd9ef1e46c241ed40e151082918fa7c963c7367c857730e1fafb41ffc328bc6b3d14879615abcf
|
data/Gemfile.lock
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gitlab-exporter (16.
|
|
4
|
+
gitlab-exporter (16.8.0)
|
|
5
5
|
connection_pool (= 2.5.5)
|
|
6
6
|
deep_merge (~> 1.2.2)
|
|
7
|
-
faraday (= 2.14.
|
|
7
|
+
faraday (= 2.14.1)
|
|
8
8
|
pg (= 1.6.3)
|
|
9
|
-
puma (=
|
|
9
|
+
puma (= 8.0.1)
|
|
10
10
|
quantile (= 0.2.1)
|
|
11
11
|
redis (= 4.8.1)
|
|
12
12
|
redis-namespace (= 1.11.0)
|
|
@@ -22,7 +22,7 @@ GEM
|
|
|
22
22
|
connection_pool (2.5.5)
|
|
23
23
|
deep_merge (1.2.2)
|
|
24
24
|
diff-lcs (1.5.0)
|
|
25
|
-
faraday (2.14.
|
|
25
|
+
faraday (2.14.1)
|
|
26
26
|
faraday-net_http (>= 2.0, < 3.5)
|
|
27
27
|
json
|
|
28
28
|
logger
|
|
@@ -40,7 +40,7 @@ GEM
|
|
|
40
40
|
racc
|
|
41
41
|
pg (1.6.3)
|
|
42
42
|
prism (1.9.0)
|
|
43
|
-
puma (
|
|
43
|
+
puma (8.0.1)
|
|
44
44
|
nio4r (~> 2.0)
|
|
45
45
|
quantile (0.2.1)
|
|
46
46
|
racc (1.8.1)
|
|
@@ -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.84.
|
|
69
|
+
rubocop (1.84.2)
|
|
70
70
|
json (~> 2.3)
|
|
71
71
|
language_server-protocol (~> 3.17.0.2)
|
|
72
72
|
lint_roller (~> 1.1.0)
|
data/gitlab-exporter.gemspec
CHANGED
|
@@ -24,9 +24,9 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
|
|
25
25
|
s.add_runtime_dependency "connection_pool", "2.5.5"
|
|
26
26
|
s.add_runtime_dependency "deep_merge", "~> 1.2.2"
|
|
27
|
-
s.add_runtime_dependency "faraday", "2.14.
|
|
27
|
+
s.add_runtime_dependency "faraday", "2.14.1"
|
|
28
28
|
s.add_runtime_dependency "pg", "1.6.3"
|
|
29
|
-
s.add_runtime_dependency "puma", "
|
|
29
|
+
s.add_runtime_dependency "puma", "8.0.1"
|
|
30
30
|
s.add_runtime_dependency "quantile", "0.2.1"
|
|
31
31
|
s.add_runtime_dependency "redis", "4.8.1"
|
|
32
32
|
s.add_runtime_dependency "redis-namespace", "1.11.0"
|
|
@@ -62,13 +62,26 @@ module GitLab
|
|
|
62
62
|
LIMIT 1
|
|
63
63
|
SQL
|
|
64
64
|
|
|
65
|
+
# unclaimed_storage_bytes and storage_percent_used are not real columns on
|
|
66
|
+
# zoekt_nodes; they are derived in Search::Zoekt::Node. We compute them in SQL
|
|
67
|
+
# here to avoid loading every row through ActiveRecord.
|
|
65
68
|
ZOEKT_NODE_STORAGE_QUERY = <<~SQL.freeze
|
|
66
69
|
SELECT
|
|
67
|
-
id,
|
|
68
|
-
metadata ->> 'name' AS node_name,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
zn.id,
|
|
71
|
+
zn.metadata ->> 'name' AS node_name,
|
|
72
|
+
(zn.usable_storage_bytes - COALESCE(zi.reserved_total, 0))::bigint
|
|
73
|
+
AS unclaimed_storage_bytes,
|
|
74
|
+
CASE
|
|
75
|
+
WHEN zn.total_bytes > 0
|
|
76
|
+
THEN zn.used_bytes::float8 / zn.total_bytes::float8
|
|
77
|
+
ELSE 0
|
|
78
|
+
END AS storage_percent_used
|
|
79
|
+
FROM zoekt_nodes zn
|
|
80
|
+
LEFT JOIN (
|
|
81
|
+
SELECT zoekt_node_id, SUM(reserved_storage_bytes) AS reserved_total
|
|
82
|
+
FROM zoekt_indices
|
|
83
|
+
GROUP BY zoekt_node_id
|
|
84
|
+
) zi ON zi.zoekt_node_id = zn.id
|
|
72
85
|
SQL
|
|
73
86
|
|
|
74
87
|
ZOEKT_REPOSITORIES_STATE_QUERY = <<~SQL.freeze
|
|
@@ -163,7 +176,8 @@ module GitLab
|
|
|
163
176
|
with_connection_pool do |conn|
|
|
164
177
|
conn.exec_params(query, params)
|
|
165
178
|
end
|
|
166
|
-
rescue PG::UndefinedTable, PG::UndefinedColumn
|
|
179
|
+
rescue PG::UndefinedTable, PG::UndefinedColumn => e
|
|
180
|
+
@logger&.warn("ZoektCollector query failed: #{e.class}: #{e.message.lines.first&.strip}")
|
|
167
181
|
nil
|
|
168
182
|
end
|
|
169
183
|
end
|
|
@@ -115,7 +115,7 @@ module GitLab
|
|
|
115
115
|
Sidekiq::Queue.all.each do |queue|
|
|
116
116
|
Sidekiq.redis do |conn|
|
|
117
117
|
conn.lrange("queue:#{queue.name}", 0, PROBE_JOBS_LIMIT).each do |job|
|
|
118
|
-
job_class = Sidekiq.load_json(job)["class"]
|
|
118
|
+
job_class = Sidekiq.load_json(job.force_encoding("utf-8"))["class"]
|
|
119
119
|
|
|
120
120
|
job_stats[job_class] += 1
|
|
121
121
|
end
|
data/spec/database/zoekt_spec.rb
CHANGED
|
@@ -174,6 +174,33 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
174
174
|
end
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
+
describe "ZOEKT_NODE_STORAGE_QUERY" do
|
|
178
|
+
subject(:query) { described_class::ZOEKT_NODE_STORAGE_QUERY }
|
|
179
|
+
|
|
180
|
+
it "selects the unclaimed_storage_bytes and storage_percent_used aliases" do
|
|
181
|
+
expect(query).to match(/AS unclaimed_storage_bytes/)
|
|
182
|
+
expect(query).to match(/AS storage_percent_used/)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
it "computes unclaimed_storage_bytes from real columns rather than referencing a non-existent column" do
|
|
186
|
+
# zoekt_nodes does not have an unclaimed_storage_bytes column; it must be derived
|
|
187
|
+
# from usable_storage_bytes minus the SUM of zoekt_indices.reserved_storage_bytes.
|
|
188
|
+
expect(query).to include("usable_storage_bytes")
|
|
189
|
+
expect(query).to include("reserved_storage_bytes")
|
|
190
|
+
expect(query).to include("zoekt_indices")
|
|
191
|
+
expect(query).not_to match(/^\s*unclaimed_storage_bytes\b/)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it "computes storage_percent_used from used_bytes / total_bytes with a guard" do
|
|
195
|
+
# zoekt_nodes does not have a storage_percent_used column; it must be derived
|
|
196
|
+
# from used_bytes / total_bytes (with a divide-by-zero guard).
|
|
197
|
+
expect(query).to include("used_bytes")
|
|
198
|
+
expect(query).to include("total_bytes")
|
|
199
|
+
expect(query).to match(/total_bytes\s*>\s*0/)
|
|
200
|
+
expect(query).not_to match(/^\s*storage_percent_used\b/)
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
177
204
|
describe "#zoekt_indexing_enabled?" do
|
|
178
205
|
it "returns true when zoekt is enabled" do
|
|
179
206
|
expect(connection).to receive(:exec)
|
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.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pablo Carranza
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - '='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 2.14.
|
|
47
|
+
version: 2.14.1
|
|
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.14.
|
|
54
|
+
version: 2.14.1
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: pg
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,14 +72,14 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - '='
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
75
|
+
version: 8.0.1
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - '='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
82
|
+
version: 8.0.1
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: quantile
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|