skylight 0.3.8 → 0.3.10
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/CHANGELOG.md +10 -0
- data/ext/skylight.h +0 -1
- data/ext/skylight_native.c +0 -11
- data/lib/skylight.rb +16 -13
- data/lib/skylight/formatters/http.rb +9 -24
- data/lib/skylight/native.rb +0 -4
- data/lib/skylight/railtie.rb +8 -8
- data/lib/skylight/version.rb +1 -1
- data/lib/skylight/worker/standalone.rb +17 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c2808cf85e0a48a911372e657dcfe99a191bf6e
|
4
|
+
data.tar.gz: bda10993e74865cc28f05f5db97a244ddf1af972
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c247a8b0b9cde850ff0aa98cfb4a867fc73ef05539ab5f7fbdfc478e820a160bf0f4a8b22e94a94d2de731cf715fcefc623fc2dba64f1979738ffdb08c0620a0
|
7
|
+
data.tar.gz: 7f7893da15b537872e33abe3b670c69ce2ae5b0c62806300dafbed5242fea08edcea068514ed390c4bce5f39da1bdb85641556f115fce7ffcdb39d6e7633fc8c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 0.3.10 (April 8, 2014)
|
2
|
+
|
3
|
+
* Don't raise on missing native agent path
|
4
|
+
|
5
|
+
## 0.3.9 (April 8, 2014)
|
6
|
+
|
7
|
+
* Avoid finalizing sockets in the child process
|
8
|
+
* Fix non-displaying warnings around native agent
|
9
|
+
* Remove HTTP path information from title for better grouping
|
10
|
+
|
1
11
|
## 0.3.8 (April 3, 2014)
|
2
12
|
|
3
13
|
* Update vendored highline to 1.6.21
|
data/ext/skylight.h
CHANGED
@@ -53,7 +53,6 @@ bool skylight_high_res_time(uint64_t*);
|
|
53
53
|
// Rust skylight_trace prototypes
|
54
54
|
bool skylight_trace_new(uint64_t, RustSlice, RustTrace*);
|
55
55
|
bool skylight_trace_free(RustTrace);
|
56
|
-
bool skylight_trace_load(RustSlice, RustTrace*);
|
57
56
|
bool skylight_trace_name_from_serialized_into_new_buffer(RustSlice, RustString*);
|
58
57
|
bool skylight_trace_get_started_at(RustTrace, uint64_t*);
|
59
58
|
bool skylight_trace_set_name(RustTrace, RustSlice);
|
data/ext/skylight_native.c
CHANGED
@@ -308,16 +308,6 @@ static VALUE trace_new(VALUE self, VALUE started_at, VALUE uuid) {
|
|
308
308
|
return Data_Wrap_Struct(rb_cTrace, NULL, skylight_trace_free, trace);
|
309
309
|
}
|
310
310
|
|
311
|
-
static VALUE trace_load(VALUE self, VALUE protobuf) {
|
312
|
-
CHECK_TYPE(protobuf, T_STRING);
|
313
|
-
|
314
|
-
RustTrace trace;
|
315
|
-
|
316
|
-
CHECK_FFI(skylight_trace_load(STR2SLICE(protobuf), &trace), "Could not load Trace");
|
317
|
-
|
318
|
-
return Data_Wrap_Struct(rb_cTrace, NULL, skylight_trace_free, trace);
|
319
|
-
}
|
320
|
-
|
321
311
|
static VALUE trace_name_from_serialized(VALUE self, VALUE protobuf) {
|
322
312
|
CHECK_TYPE(protobuf, T_STRING);
|
323
313
|
|
@@ -513,7 +503,6 @@ void Init_skylight_native() {
|
|
513
503
|
|
514
504
|
rb_cTrace = rb_define_class_under(rb_mSkylight, "Trace", rb_cObject);
|
515
505
|
rb_define_singleton_method(rb_cTrace, "native_new", trace_new, 2);
|
516
|
-
rb_define_singleton_method(rb_cTrace, "native_load", trace_load, 1);
|
517
506
|
rb_define_singleton_method(rb_cTrace, "native_name_from_serialized", trace_name_from_serialized, 1);
|
518
507
|
rb_define_method(rb_cTrace, "native_get_started_at", trace_get_started_at, 0);
|
519
508
|
rb_define_method(rb_cTrace, "native_get_name", trace_get_name, 0);
|
data/lib/skylight.rb
CHANGED
@@ -52,12 +52,13 @@ module Skylight
|
|
52
52
|
|
53
53
|
def self.warn_skylight_native_missing
|
54
54
|
# TODO: Dumping the error messages this way is pretty hacky
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
55
|
+
is_rails = defined?(Rails)
|
56
|
+
env_name = is_rails ? Rails.env : "development"
|
57
|
+
|
58
|
+
if env_name == "development" || env_name == "test"
|
59
|
+
puts "[SKYLIGHT] [#{Skylight::VERSION}] Running Skylight in #{env_name} mode. No data will be reported until you deploy your app."
|
59
60
|
else
|
60
|
-
puts "[SKYLIGHT] [#{Skylight::VERSION}]
|
61
|
+
puts "[SKYLIGHT] [#{Skylight::VERSION}] The Skylight native extension for your platform wasn't found. We currently support monitoring in 32- and 64-bit Linux only. If you are on a supported platform, please contact support at support@skylight.io. The missing extension will not affect the functioning of your application."
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
@@ -157,19 +158,21 @@ module Skylight
|
|
157
158
|
end
|
158
159
|
|
159
160
|
if Hash === opts
|
160
|
-
category
|
161
|
-
title
|
162
|
-
desc
|
161
|
+
category = opts[:category] || DEFAULT_CATEGORY
|
162
|
+
title = opts[:title]
|
163
|
+
desc = opts[:description]
|
164
|
+
annotations = opts[:annotations]
|
163
165
|
else
|
164
|
-
category
|
165
|
-
title
|
166
|
-
desc
|
166
|
+
category = DEFAULT_CATEGORY
|
167
|
+
title = opts.to_s
|
168
|
+
desc = nil
|
169
|
+
annotations = nil
|
167
170
|
end
|
168
171
|
|
169
172
|
if block_given?
|
170
|
-
inst.instrument(category, title, desc) { yield }
|
173
|
+
inst.instrument(category, title, desc, annotations) { yield }
|
171
174
|
else
|
172
|
-
inst.instrument(category, title, desc)
|
175
|
+
inst.instrument(category, title, desc, annotations)
|
173
176
|
end
|
174
177
|
end
|
175
178
|
|
@@ -1,31 +1,16 @@
|
|
1
1
|
module Skylight
|
2
2
|
module Formatters
|
3
3
|
module HTTP
|
4
|
-
|
5
4
|
def self.build_opts(method, scheme, host, port, path, query)
|
6
|
-
category
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
if scheme
|
16
|
-
url << "#{scheme}://"
|
17
|
-
end
|
18
|
-
if host
|
19
|
-
url << host
|
20
|
-
end
|
21
|
-
if port
|
22
|
-
url << ":#{port}"
|
23
|
-
end
|
24
|
-
url << path
|
25
|
-
if query
|
26
|
-
url << "?#{query}"
|
27
|
-
end
|
28
|
-
url
|
5
|
+
{ category: "api.http.#{method.downcase}",
|
6
|
+
title: "#{method.upcase} #{host}",
|
7
|
+
annotations: {
|
8
|
+
method: method.upcase,
|
9
|
+
scheme: scheme,
|
10
|
+
host: host,
|
11
|
+
port: port ? port.to_i : nil,
|
12
|
+
path: path,
|
13
|
+
query: query }}
|
29
14
|
end
|
30
15
|
end
|
31
16
|
end
|
data/lib/skylight/native.rb
CHANGED
data/lib/skylight/railtie.rb
CHANGED
@@ -15,19 +15,19 @@ module Skylight
|
|
15
15
|
config.skylight.probes = []
|
16
16
|
|
17
17
|
initializer 'skylight.configure' do |app|
|
18
|
-
if
|
19
|
-
|
20
|
-
load_probes
|
18
|
+
if activate?
|
19
|
+
load_probes
|
21
20
|
|
22
|
-
|
23
|
-
|
21
|
+
if config = load_skylight_config(app)
|
22
|
+
if Instrumenter.start!(config)
|
24
23
|
app.middleware.insert 0, Middleware
|
25
|
-
|
26
24
|
puts "[SKYLIGHT] [#{Skylight::VERSION}] Skylight agent enabled"
|
27
25
|
end
|
28
|
-
elsif !Rails.env.test? && Rails.env.development?
|
29
|
-
puts "[SKYLIGHT] [#{Skylight::VERSION}] You are running in the #{Rails.env} environment but haven't added it to config.skylight.environments, so no data will be sent to skylight.io."
|
30
26
|
end
|
27
|
+
elsif Rails.env.development?
|
28
|
+
puts "[SKYLIGHT] [#{Skylight::VERSION}] Running Skylight in development mode. No data will be reported until you deploy your app."
|
29
|
+
elsif !Rails.env.test?
|
30
|
+
puts "[SKYLIGHT] [#{Skylight::VERSION}] You are running in the #{Rails.env} environment but haven't added it to config.skylight.environments, so no data will be sent to skylight.io."
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
data/lib/skylight/version.rb
CHANGED
@@ -15,15 +15,19 @@ module Skylight
|
|
15
15
|
|
16
16
|
# Locates skylight_native so that it can be included in the standalone agent startup command
|
17
17
|
def self.locate_skylight_native
|
18
|
-
$LOADED_FEATURES.
|
18
|
+
$LOADED_FEATURES.find do |feature|
|
19
19
|
return feature if feature =~ /skylight_native\.#{RbConfig::CONFIG['DLEXT']}/
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.build_subprocess_cmd
|
24
|
+
# Native extension location
|
25
|
+
native_path = locate_skylight_native
|
26
|
+
native_dir = native_path ? File.dirname(native_path) : nil
|
27
|
+
|
24
28
|
paths = [
|
25
29
|
File.expand_path('../../..', __FILE__), # Ruby code root
|
26
|
-
|
30
|
+
native_dir
|
27
31
|
].uniq.compact
|
28
32
|
|
29
33
|
ret = [ RUBYBIN ]
|
@@ -296,12 +300,20 @@ module Skylight
|
|
296
300
|
# Spawn the worker process.
|
297
301
|
def spawn_worker(f)
|
298
302
|
pid = fork do
|
299
|
-
|
300
|
-
|
303
|
+
# Note: By default, Ruby will finalize C objects inside the fork. Because those C objects
|
304
|
+
# are shared with the parent, this can cause database connections to disconnect in the
|
305
|
+
# parent process. We need to double-fork for proper semantics, so we disable the GC and
|
306
|
+
# exit! to avoid finalizing shared handles.
|
307
|
+
#
|
308
|
+
# We should continue to look for alternate solutions, and to determine whether there is
|
309
|
+
# still a possible race between the fork and the GC disabling.
|
310
|
+
::GC.disable
|
311
|
+
::Process.setsid
|
312
|
+
exit! if fork
|
301
313
|
|
302
314
|
# Acquire exclusive file lock, exit otherwise
|
303
315
|
unless f.flock(File::LOCK_EX | File::LOCK_NB)
|
304
|
-
exit 1
|
316
|
+
exit! 1
|
305
317
|
end
|
306
318
|
|
307
319
|
f.truncate(0)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skylight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tilde, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|