jcw 0.2.2 → 0.2.3
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 +11 -11
- data/lib/jcw/rack_tracer.rb +42 -33
- data/lib/jcw/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b1e12954a296bbc3e7413110a7b151fe38c0d422e156cebbd5ae7157bbe111b
|
4
|
+
data.tar.gz: '00488dffa129ca3c4a2b45fb3f8f947f1dec9b4310b8a900813426afa397fc92'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61b7221435873848d3bb19e0e9ca30157c127601633fb4ca129fbc150fe5da98f2013bdc334139c455801fcb7fe90db8fb47809a4b1bba86f4e58d8ab1034162
|
7
|
+
data.tar.gz: 1140c437317341c6836f196711496f9dedb0e0959571d7f882c9750f6c690ca3026dd807916fd958c7a7628587cea5e985da1b55631f9b4fcbc15691a8cf7e49
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jcw (0.2.
|
4
|
+
jcw (0.2.3)
|
5
5
|
activesupport (>= 5.0, < 7.0.0)
|
6
6
|
gruf (~> 2.10)
|
7
7
|
httprb-opentracing (~> 0.4.0)
|
@@ -49,22 +49,22 @@ GEM
|
|
49
49
|
ffi-compiler (1.0.1)
|
50
50
|
ffi (>= 1.0.0)
|
51
51
|
rake
|
52
|
-
google-protobuf (3.19.
|
52
|
+
google-protobuf (3.19.2)
|
53
53
|
googleapis-common-protos-types (1.3.0)
|
54
54
|
google-protobuf (~> 3.14)
|
55
|
-
grpc (1.
|
56
|
-
google-protobuf (~> 3.
|
55
|
+
grpc (1.41.0)
|
56
|
+
google-protobuf (~> 3.17)
|
57
57
|
googleapis-common-protos-types (~> 1.0)
|
58
|
-
grpc-tools (1.
|
59
|
-
gruf (2.
|
58
|
+
grpc-tools (1.41.0)
|
59
|
+
gruf (2.12.0)
|
60
60
|
activesupport (> 4)
|
61
61
|
concurrent-ruby (> 1)
|
62
|
-
e2mmap (
|
63
|
-
grpc (~> 1.10)
|
64
|
-
grpc-tools (~> 1.10)
|
62
|
+
e2mmap (>= 0.1)
|
63
|
+
grpc (~> 1.10, <= 1.41.0)
|
64
|
+
grpc-tools (~> 1.10, <= 1.41.0)
|
65
65
|
json (>= 2.3)
|
66
|
-
slop (
|
67
|
-
thwait (
|
66
|
+
slop (>= 4.6)
|
67
|
+
thwait (>= 0.1)
|
68
68
|
http (5.0.4)
|
69
69
|
addressable (~> 2.8)
|
70
70
|
http-cookie (~> 1.0)
|
data/lib/jcw/rack_tracer.rb
CHANGED
@@ -38,45 +38,31 @@ module JCW
|
|
38
38
|
method = env[REQUEST_METHOD]
|
39
39
|
path = env[REQUEST_PATH]
|
40
40
|
url = env[REQUEST_URI]
|
41
|
-
|
42
41
|
return @app.call(env) if @ignore_paths.include?(path)
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
@app.call(env).tap do |status_code, _headers, _body|
|
53
|
-
set_tag(@span, status_code, env)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def handle_error(errors)
|
61
|
-
yield
|
62
|
-
rescue *errors => e
|
63
|
-
@span.set_tag("error", true)
|
64
|
-
@span.log_kv(
|
65
|
-
event: "error",
|
66
|
-
"error.kind": e.class.to_s,
|
67
|
-
"error.object": e,
|
68
|
-
message: e.message,
|
69
|
-
stack: e.backtrace.join("\n"),
|
70
|
-
)
|
43
|
+
set_extract_env(env)
|
44
|
+
context = @tracer.extract(OpenTracing::FORMAT_TEXT_MAP, env) if @trust_incoming_span
|
45
|
+
scope = build_scope(method, url, context)
|
46
|
+
span = scope.span
|
47
|
+
perform_on_start_span(env, span, @on_start_span)
|
48
|
+
call_request(env, span)
|
49
|
+
rescue *@errors => error
|
50
|
+
build_error_log(span, error)
|
71
51
|
raise
|
72
52
|
ensure
|
73
53
|
begin
|
74
|
-
|
54
|
+
close_scope(scope)
|
75
55
|
ensure
|
76
|
-
perform_on_finish_span
|
56
|
+
perform_on_finish_span(span)
|
77
57
|
end
|
78
58
|
end
|
79
59
|
|
60
|
+
private
|
61
|
+
|
62
|
+
def set_extract_env(env)
|
63
|
+
env["uber-trace-id"] = env["HTTP_UBER_TRACE_ID"]
|
64
|
+
end
|
65
|
+
|
80
66
|
def build_scope(method, url, context)
|
81
67
|
@tracer.start_active_span(
|
82
68
|
method,
|
@@ -95,10 +81,16 @@ module JCW
|
|
95
81
|
env["rack.span"] = span
|
96
82
|
end
|
97
83
|
|
84
|
+
def call_request(env, span)
|
85
|
+
@app.call(env).tap do |status_code, _headers, _body|
|
86
|
+
set_tag(span, status_code, env)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
98
90
|
def set_tag(span, status_code, env)
|
99
91
|
span.set_tag("http.status_code", status_code)
|
100
92
|
route = route_from_env(env)
|
101
|
-
span.operation_name = route
|
93
|
+
span.operation_name = route
|
102
94
|
end
|
103
95
|
|
104
96
|
def route_from_env(env)
|
@@ -109,6 +101,8 @@ module JCW
|
|
109
101
|
"#{method} #{rails_controller.controller_name}/#{rails_controller.action_name}"
|
110
102
|
elsif (grape_route_args = env["grape.routing_args"] || env["rack.routing_args"])
|
111
103
|
"#{method} #{grape_route_from_args(grape_route_args)}"
|
104
|
+
else
|
105
|
+
"#{method} #{env[REQUEST_PATH] || env["SCRIPT_NAME"] || env["PATH_INFO"]}".strip
|
112
106
|
end
|
113
107
|
end
|
114
108
|
|
@@ -121,9 +115,24 @@ module JCW
|
|
121
115
|
end
|
122
116
|
end
|
123
117
|
|
124
|
-
def
|
118
|
+
def build_error_log(span, error)
|
119
|
+
span.set_tag("error", true)
|
120
|
+
span.log_kv(
|
121
|
+
event: "error",
|
122
|
+
"error.kind": error.class.to_s,
|
123
|
+
"error.object": error,
|
124
|
+
message: error.message,
|
125
|
+
stack: error.backtrace.join("\n"),
|
126
|
+
)
|
127
|
+
end
|
128
|
+
|
129
|
+
def perform_on_finish_span(span)
|
125
130
|
return unless @on_finish_span
|
126
|
-
@on_finish_span.call(
|
131
|
+
@on_finish_span.call(span)
|
132
|
+
end
|
133
|
+
|
134
|
+
def close_scope(scope)
|
135
|
+
scope&.close
|
127
136
|
end
|
128
137
|
end
|
129
138
|
end
|
data/lib/jcw/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jcw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Starovojtov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|