gitlab-labkit 2.7.0 → 2.8.1
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/.mise.toml +6 -0
- data/lib/labkit/fields.rb +1 -1
- data/lib/labkit/net_http_publisher.rb +54 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7ad3bb9ba369010544041c2ab2d2ec2d8610c535c5b2c5e592fe0e8313c56a66
|
|
4
|
+
data.tar.gz: 4fa90bdb331f44920cc9969603db7189e42dec21c7fab1d7593e91455de323c3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 21c914360a54bb30e914e7b6771781657463b3febd83b81634b88513f2986d7d9f25016bae84781b69918429a49c13fdfdf7da8581d385bc13adb698c8728f1d
|
|
7
|
+
data.tar.gz: e8b1b9f46c438e2608a1f12e55d2fd3f518586795dfb0327b08fed8bcd6496525fb0fba71c5212fdab45b45a3ca1b3b9c792dc212a838a98124be37d698fd823
|
data/.mise.toml
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
[settings]
|
|
2
2
|
legacy_version_file = false
|
|
3
|
+
# Install precompiled Ruby instead of building from source. The from-source
|
|
4
|
+
# build compiles a vendored OpenSSL (ruby-build's `needs_openssl` check fails
|
|
5
|
+
# because CI images ship the OpenSSL runtime but no dev headers/pkg-config),
|
|
6
|
+
# and that compile is slow and fails in CI. Precompiled Ruby bundles its own
|
|
7
|
+
# OpenSSL and sidesteps it. This becomes mise's default in 2026.8.0.
|
|
8
|
+
ruby.compile = false
|
|
3
9
|
|
|
4
10
|
[tools]
|
|
5
11
|
# Please continue to use `.tool-versions` to specify tool versions, rather than adding them directly here.
|
data/lib/labkit/fields.rb
CHANGED
|
@@ -206,7 +206,7 @@ module Labkit
|
|
|
206
206
|
Fields::SEVERITY => %w[level],
|
|
207
207
|
Fields::LOG_MESSAGE => %w[msg custom_message extra.message fields.message graphql.message reason color_message exception.gitaly],
|
|
208
208
|
Fields::CLASS_NAME => %w[class author_class exception.class extra.class extra.class_name],
|
|
209
|
-
Fields::SERVICE_NAME => %w[service grpc.service_name auth_service
|
|
209
|
+
Fields::SERVICE_NAME => %w[service grpc.service_name auth_service component subcomponent],
|
|
210
210
|
Fields::GL_ORGANIZATION_ID => %w[organization_id],
|
|
211
211
|
Fields::GL_PROJECT_PATH => %w[project_path full_path root_pipeline_project_path requested_project_path auth_project_path extra.gl_project_path],
|
|
212
212
|
}.freeze
|
|
@@ -48,15 +48,68 @@ module Labkit
|
|
|
48
48
|
begin
|
|
49
49
|
super
|
|
50
50
|
ensure
|
|
51
|
-
|
|
51
|
+
# Fold in any connection-establishment time (DNS/TCP/TLS) measured by
|
|
52
|
+
# `#do_start`, so a slow connect is attributed to the request instead
|
|
53
|
+
# of vanishing. Counted once, on the first request of the connection.
|
|
54
|
+
payload[:duration] = (::Labkit::System.monotonic_time - start_time).to_f + take_connect_duration
|
|
52
55
|
end
|
|
53
56
|
payload[:code] = response.code
|
|
54
57
|
response
|
|
55
58
|
end
|
|
56
59
|
end
|
|
57
60
|
|
|
61
|
+
# Net::HTTP establishes the connection (DNS resolution, TCP connect, TLS
|
|
62
|
+
# handshake) here, before any `#request` runs. With the explicit-start
|
|
63
|
+
# pattern (`Net::HTTP.start(host) { |http| http.request(...) }`) this happens
|
|
64
|
+
# entirely outside `#request`, so without instrumenting it a connection that
|
|
65
|
+
# hangs -- or fails with e.g. Net::OpenTimeout before any request is sent --
|
|
66
|
+
# would contribute nothing to external_http timing or counts.
|
|
67
|
+
def do_start
|
|
68
|
+
start_time = ::Labkit::System.monotonic_time
|
|
69
|
+
|
|
70
|
+
begin
|
|
71
|
+
super
|
|
72
|
+
rescue StandardError
|
|
73
|
+
# The connection failed before any request could be sent, so `#request`
|
|
74
|
+
# will never run to attribute this time. Emit a standalone event so the
|
|
75
|
+
# failure and the time spent are still visible.
|
|
76
|
+
ActiveSupport::Notifications.instrument(
|
|
77
|
+
::Labkit::EXTERNAL_HTTP_NOTIFICATION_TOPIC, create_connect_payload
|
|
78
|
+
) do |payload|
|
|
79
|
+
payload[:duration] = (::Labkit::System.monotonic_time - start_time).to_f
|
|
80
|
+
raise
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
@labkit_connect_duration = (::Labkit::System.monotonic_time - start_time).to_f
|
|
85
|
+
end
|
|
86
|
+
private :do_start
|
|
87
|
+
|
|
58
88
|
private
|
|
59
89
|
|
|
90
|
+
def take_connect_duration
|
|
91
|
+
duration = @labkit_connect_duration || 0.0
|
|
92
|
+
@labkit_connect_duration = nil
|
|
93
|
+
duration
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def create_connect_payload
|
|
97
|
+
{
|
|
98
|
+
method: nil,
|
|
99
|
+
host: address,
|
|
100
|
+
port: port,
|
|
101
|
+
scheme: use_ssl? ? "https" : "http",
|
|
102
|
+
path: nil,
|
|
103
|
+
query: nil,
|
|
104
|
+
fragment: nil
|
|
105
|
+
}.tap do |payload|
|
|
106
|
+
if proxy?
|
|
107
|
+
payload[:proxy_host] = proxy_address
|
|
108
|
+
payload[:proxy_port] = proxy_port
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
60
113
|
def create_request_payload(request)
|
|
61
114
|
payload = {
|
|
62
115
|
method: request.method
|