oboe 1.3.9.1 → 1.4.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -43,7 +43,7 @@ module Oboe
43
43
  end
44
44
 
45
45
  def insert_with_oboe(column_family, key, hash, options = {})
46
- if Oboe::Config.tracing?
46
+ if Oboe.tracing?
47
47
  report_kvs = extract_trace_details(:insert, column_family, key, hash, options)
48
48
 
49
49
  Oboe::API.trace('cassandra', report_kvs) do
@@ -57,7 +57,7 @@ module Oboe
57
57
  def remove_with_oboe(column_family, key, *columns_and_options)
58
58
  args = [column_family, key] + columns_and_options
59
59
 
60
- if Oboe::Config.tracing?
60
+ if Oboe.tracing?
61
61
  report_kvs = extract_trace_details(:remove, column_family, key, columns_and_options)
62
62
 
63
63
  Oboe::API.trace('cassandra', report_kvs) do
@@ -71,7 +71,7 @@ module Oboe
71
71
  def count_columns_with_oboe(column_family, key, *columns_and_options)
72
72
  args = [column_family, key] + columns_and_options
73
73
 
74
- if Oboe::Config.tracing?
74
+ if Oboe.tracing?
75
75
  report_kvs = extract_trace_details(:count_columns, column_family, key, columns_and_options)
76
76
 
77
77
  Oboe::API.trace('cassandra', report_kvs) do
@@ -85,7 +85,7 @@ module Oboe
85
85
  def get_columns_with_oboe(column_family, key, *columns_and_options)
86
86
  args = [column_family, key] + columns_and_options
87
87
 
88
- if Oboe::Config.tracing? and not Oboe::Context.tracing_layer_op?(:multi_get_columns)
88
+ if Oboe.tracing? and not Oboe::Context.tracing_layer_op?(:multi_get_columns)
89
89
  report_kvs = extract_trace_details(:get_columns, column_family, key, columns_and_options)
90
90
 
91
91
  Oboe::API.trace('cassandra', report_kvs) do
@@ -99,7 +99,7 @@ module Oboe
99
99
  def multi_get_columns_with_oboe(column_family, key, *columns_and_options)
100
100
  args = [column_family, key] + columns_and_options
101
101
 
102
- if Oboe::Config.tracing?
102
+ if Oboe.tracing?
103
103
  report_kvs = extract_trace_details(:multi_get_columns, column_family, key, columns_and_options)
104
104
 
105
105
  Oboe::API.trace('cassandra', report_kvs, :multi_get_columns) do
@@ -113,7 +113,7 @@ module Oboe
113
113
  def get_with_oboe(column_family, key, *columns_and_options)
114
114
  args = [column_family, key] + columns_and_options
115
115
 
116
- if Oboe::Config.tracing?
116
+ if Oboe.tracing?
117
117
  report_kvs = extract_trace_details(:get, column_family, key, columns_and_options)
118
118
 
119
119
  Oboe::API.trace('cassandra', report_kvs, :get) do
@@ -127,7 +127,7 @@ module Oboe
127
127
  def multi_get_with_oboe(column_family, key, *columns_and_options)
128
128
  args = [column_family, key] + columns_and_options
129
129
 
130
- if Oboe::Config.tracing? and not Oboe::Context.tracing_layer_op?(:get)
130
+ if Oboe.tracing? and not Oboe::Context.tracing_layer_op?(:get)
131
131
  report_kvs = extract_trace_details(:multi_get, column_family, key, columns_and_options)
132
132
 
133
133
  Oboe::API.trace('cassandra', report_kvs) do
@@ -141,7 +141,7 @@ module Oboe
141
141
  def exists_with_oboe?(column_family, key, *columns_and_options)
142
142
  args = [column_family, key] + columns_and_options
143
143
 
144
- if Oboe::Config.tracing?
144
+ if Oboe.tracing?
145
145
  report_kvs = extract_trace_details(:exists?, column_family, key, columns_and_options)
146
146
 
147
147
  Oboe::API.trace('cassandra', report_kvs) do
@@ -153,7 +153,7 @@ module Oboe
153
153
  end
154
154
 
155
155
  def get_range_single_with_oboe(column_family, options = {})
156
- if Oboe::Config.tracing? and not Oboe::Context.tracing_layer_op?(:get_range_batch)
156
+ if Oboe.tracing? and not Oboe::Context.tracing_layer_op?(:get_range_batch)
157
157
  report_kvs = extract_trace_details(:get_range_single, column_family, nil, nil)
158
158
  args = [column_family, options]
159
159
 
@@ -166,7 +166,7 @@ module Oboe
166
166
  end
167
167
 
168
168
  def get_range_batch_with_oboe(column_family, options = {})
169
- if Oboe::Config.tracing?
169
+ if Oboe.tracing?
170
170
  report_kvs = extract_trace_details(:get_range_batch, column_family, nil, nil)
171
171
  args = [column_family, options]
172
172
 
@@ -181,7 +181,7 @@ module Oboe
181
181
  def get_indexed_slices_with_oboe(column_family, index_clause, *columns_and_options)
182
182
  args = [column_family, index_clause] + columns_and_options
183
183
 
184
- if Oboe::Config.tracing?
184
+ if Oboe.tracing?
185
185
  report_kvs = extract_trace_details(:get_indexed_slices, column_family, nil, columns_and_options)
186
186
 
187
187
  Oboe::API.trace('cassandra', report_kvs) do
@@ -193,7 +193,7 @@ module Oboe
193
193
  end
194
194
 
195
195
  def create_index_with_oboe(keyspace, column_family, column_name, validation_class)
196
- if Oboe::Config.tracing?
196
+ if Oboe.tracing?
197
197
  report_kvs = extract_trace_details(:create_index, column_family, nil, nil)
198
198
  begin
199
199
  report_kvs[:Keyspace] = keyspace.to_s
@@ -211,7 +211,7 @@ module Oboe
211
211
  end
212
212
 
213
213
  def drop_index_with_oboe(keyspace, column_family, column_name)
214
- if Oboe::Config.tracing?
214
+ if Oboe.tracing?
215
215
  report_kvs = extract_trace_details(:drop_index, column_family, nil, nil)
216
216
  begin
217
217
  report_kvs[:Keyspace] = keyspace.to_s
@@ -228,7 +228,7 @@ module Oboe
228
228
  end
229
229
 
230
230
  def add_column_family_with_oboe(cf_def)
231
- if Oboe::Config.tracing?
231
+ if Oboe.tracing?
232
232
  report_kvs = extract_trace_details(:add_column_family, nil, nil, nil)
233
233
  begin
234
234
  report_kvs[:Cf] = cf_def[:name] if cf_def.is_a?(Hash) and cf_def.has_key?(:name)
@@ -244,7 +244,7 @@ module Oboe
244
244
  end
245
245
 
246
246
  def drop_column_family_with_oboe(column_family)
247
- if Oboe::Config.tracing?
247
+ if Oboe.tracing?
248
248
  report_kvs = extract_trace_details(:drop_column_family, column_family, nil, nil)
249
249
 
250
250
  Oboe::API.trace('cassandra', report_kvs) do
@@ -256,7 +256,7 @@ module Oboe
256
256
  end
257
257
 
258
258
  def add_keyspace_with_oboe(ks_def)
259
- if Oboe::Config.tracing?
259
+ if Oboe.tracing?
260
260
  report_kvs = extract_trace_details(:add_keyspace, nil, nil, nil)
261
261
  report_kvs[:Name] = ks_def.name rescue ""
262
262
 
@@ -269,7 +269,7 @@ module Oboe
269
269
  end
270
270
 
271
271
  def drop_keyspace_with_oboe(keyspace)
272
- if Oboe::Config.tracing?
272
+ if Oboe.tracing?
273
273
  report_kvs = extract_trace_details(:drop_keyspace, nil, nil, nil)
274
274
  report_kvs[:Name] = keyspace.to_s rescue ""
275
275
 
@@ -284,8 +284,9 @@ module Oboe
284
284
  end
285
285
  end
286
286
 
287
- if defined?(::Cassandra)
288
- puts "[oboe/loading] Instrumenting cassandra"
287
+ if defined?(::Cassandra) and Oboe::Config[:cassandra][:enabled]
288
+ puts "[oboe/loading] Instrumenting cassandra" if Oboe::Config[:verbose]
289
+
289
290
  class ::Cassandra
290
291
  include Oboe::Inst::Cassandra
291
292
 
@@ -14,11 +14,16 @@ module Oboe
14
14
  alias perform perform_with_oboe
15
15
  else puts "[oboe/loading] Couldn't properly instrument Memcache (Dalli). Partial traces may occur."
16
16
  end
17
+
18
+ if ::Dalli::Client.method_defined? :get_multi
19
+ alias get_multi_without_oboe get_multi
20
+ alias get_multi get_multi_with_oboe
21
+ end
17
22
  end
18
23
  end
19
24
 
20
25
  def perform_with_oboe(op, key, *args)
21
- if Oboe::Config.tracing?
26
+ if Oboe.tracing? and not Oboe::Context.tracing_layer_op?(:get_multi)
22
27
  opts = {}
23
28
  opts[:KVOp] = op
24
29
  opts[:KVKey] = key
@@ -34,12 +39,41 @@ module Oboe
34
39
  perform_without_oboe(op, key, *args)
35
40
  end
36
41
  end
42
+
43
+ def get_multi_with_oboe(*keys)
44
+ if Oboe.tracing?
45
+ layer_kvs = {}
46
+ layer_kvs[:KVOp] = :get_multi
47
+
48
+ Oboe::API.trace('memcache', layer_kvs || {}, :get_multi) do
49
+ begin
50
+ info_kvs = {}
51
+
52
+ if keys.last.is_a?(Hash) || keys.last.nil?
53
+ info_kvs[:KVKeyCount] = keys.flatten.length - 1
54
+ else
55
+ info_kvs[:KVKeyCount] = keys.flatten.length
56
+ end
57
+
58
+ values = get_multi_without_oboe(keys)
59
+
60
+ info_kvs[:KVHitCount] = values.length
61
+ Oboe::API.log('memcache', 'info', info_kvs)
62
+ rescue
63
+ values = get_multi_without_oboe(keys)
64
+ end
65
+ values
66
+ end
67
+ else
68
+ get_multi_without_oboe(keys)
69
+ end
70
+ end
37
71
  end
38
72
  end
39
73
  end
40
74
 
41
- if defined?(Dalli)
42
- Dalli::Client.module_eval do
75
+ if defined?(Dalli) and Oboe::Config[:dalli][:enabled]
76
+ ::Dalli::Client.module_eval do
43
77
  include Oboe::Inst::Dalli
44
78
  end
45
79
  end
@@ -27,7 +27,7 @@ Net::HTTP.class_eval do
27
27
  resp = request_without_oboe(*args, &block)
28
28
 
29
29
  xtrace = resp.get_fields('X-Trace')
30
- if xtrace and xtrace.size and Oboe::Config.tracing?
30
+ if xtrace and xtrace.size and Oboe.tracing?
31
31
  Oboe::Context.fromString(xtrace[0])
32
32
  end
33
33
  next resp
@@ -1,40 +1,109 @@
1
1
  # Copyright (c) 2012 by Tracelytics, Inc.
2
2
  # All rights reserved.
3
3
 
4
- if defined?(::MemCache)
5
- class ::MemCache
6
- include Oboe::API::Memcache
7
-
8
- MEMCACHE_OPS.reject { |m| not method_defined?(m) }.each do |m|
9
- opts = { :KVOp => m }
10
- define_method("#{m}_with_oboe") do |*args|
11
- Oboe::API.trace('memcache', opts) do
12
- send("#{m}_without_oboe", *args)
4
+ module Oboe
5
+ module Inst
6
+ module MemCache
7
+ include Oboe::API::Memcache
8
+
9
+ def self.included(cls)
10
+ puts "[oboe/loading] Instrumenting memcache" if Oboe::Config[:verbose]
11
+
12
+ cls.class_eval do
13
+ MEMCACHE_OPS.reject { |m| not method_defined?(m) }.each do |m|
14
+
15
+ define_method("#{m}_with_oboe") do |*args|
16
+ report_kvs = { :KVOp => m }
17
+
18
+ if Oboe.tracing?
19
+ Oboe::API.trace('memcache', report_kvs) do
20
+ result = send("#{m}_without_oboe", *args)
21
+ end
22
+ else
23
+ result = send("#{m}_without_oboe", *args)
24
+ end
25
+ result
26
+ end
27
+
28
+ class_eval "alias #{m}_without_oboe #{m}"
29
+ class_eval "alias #{m} #{m}_with_oboe"
30
+ end
31
+
32
+ if ::MemCache.method_defined? :request_setup
33
+ alias request_setup_without_oboe request_setup
34
+ alias request_setup request_setup_with_oboe
35
+ elsif Oboe::Config[:verbose]
36
+ puts "[oboe/loading] Couldn't properly instrument Memcache. Partial traces may occur."
37
+ end
38
+
39
+ if ::MemCache.method_defined? :cache_get
40
+ alias cache_get_without_oboe cache_get
41
+ alias cache_get cache_get_with_oboe
42
+ elsif Oboe::Config[:verbose]
43
+ puts "[oboe/loading] Couldn't properly instrument Memcache. Partial traces may occur."
44
+ end
45
+
46
+ if ::MemCache.method_defined? :get_multi
47
+ alias get_multi_without_oboe get_multi
48
+ alias get_multi get_multi_with_oboe
49
+ elsif Oboe::Config[:verbose]
50
+ puts "[oboe/loading] Couldn't properly instrument Memcache. Partial traces may occur."
51
+ end
13
52
  end
14
53
  end
15
54
 
16
- class_eval "alias #{m}_without_oboe #{m}"
17
- class_eval "alias #{m} #{m}_with_oboe"
18
- end
55
+ def get_multi_with_oboe(*args)
56
+ if Oboe.tracing?
57
+ layer_kvs = {}
58
+ layer_kvs[:KVOp] = :get_multi
19
59
 
20
- define_method(:request_setup_with_oboe) do |*args|
21
- server, cache_key = request_setup_without_oboe(*args)
22
- Oboe::API.log('memcache', 'info', { :KVKey => cache_key, :RemoteHost => server.host })
23
- return [server, cache_key]
24
- end
60
+ Oboe::API.trace('memcache', layer_kvs || {}, :get_multi) do
61
+ begin
62
+ info_kvs = {}
63
+
64
+ if args.last.is_a?(Hash) || args.last.nil?
65
+ info_kvs[:KVKeyCount] = args.flatten.length - 1
66
+ else
67
+ info_kvs[:KVKeyCount] = args.flatten.length
68
+ end
25
69
 
26
- alias request_setup_without_oboe request_setup
27
- alias request_setup request_setup_with_oboe
70
+ values = get_multi_without_oboe(args)
71
+
72
+ info_kvs[:KVHitCount] = values.length
73
+ Oboe::API.log('memcache', 'info', info_kvs)
74
+ rescue
75
+ values = get_multi_without_oboe(args)
76
+ end
77
+ values
78
+ end
79
+ else
80
+ get_multi_without_oboe(args)
81
+ end
82
+ end
83
+
84
+ def request_setup_with_oboe(*args)
85
+ if Oboe.tracing? and not Oboe::Context.tracing_layer_op?(:get_multi)
86
+ server, cache_key = request_setup_without_oboe(*args)
87
+ Oboe::API.log('memcache', 'info', { :KVKey => cache_key, :RemoteHost => server.host })
88
+ else
89
+ server, cache_key = request_setup_without_oboe(*args)
90
+ end
91
+ return [server, cache_key]
92
+ end
28
93
 
94
+ def cache_get_with_oboe(server, cache_key)
95
+ result = cache_get_without_oboe(server, cache_key)
96
+ Oboe::API.log('memcache', 'info', { :KVHit => memcache_hit?(result) })
97
+ result
98
+ end
29
99
 
30
- define_method(:cache_get_with_oboe) do |server, cache_key|
31
- result = cache_get_without_oboe(server, cache_key)
32
- Oboe::API.log('memcache', 'info', { :KVHit => memcache_hit?(result) })
33
- result
34
- end
100
+ end # module MemCache
101
+ end # module Inst
102
+ end # module Oboe
35
103
 
36
- alias cache_get_without_oboe cache_get
37
- alias cache_get cache_get_with_oboe
104
+ if defined?(::MemCache) and Oboe::Config[:memcache][:enabled]
105
+ ::MemCache.class_eval do
106
+ include Oboe::Inst::MemCache
38
107
  end
39
- puts "[oboe/loading] Instrumenting memcache" if Oboe::Config[:verbose]
40
108
  end
109
+
@@ -2,31 +2,90 @@
2
2
  # All rights reserved.
3
3
  #
4
4
 
5
- if defined?(Memcached)
6
- class Memcached
7
- include Oboe::API::Memcache
8
-
9
- MEMCACHE_OPS.reject { |m| not method_defined?(m) }.each do |m|
10
- define_method("#{m}_with_oboe") do |*args|
11
- opts = { :KVOp => m }
12
- if args.length and args[0].class != Array
13
- opts[:KVKey] = args[0].to_s
14
- rhost = remote_host(args[0].to_s)
15
- opts[:RemoteHost] = rhost if rhost
5
+ module Oboe
6
+ module Inst
7
+ module Memcached
8
+ include Oboe::API::Memcache
9
+
10
+ def self.included(cls)
11
+ puts "[oboe/loading] Instrumenting memcached" if Oboe::Config[:verbose]
12
+
13
+ cls.class_eval do
14
+ MEMCACHE_OPS.reject { |m| not method_defined?(m) }.each do |m|
15
+ define_method("#{m}_with_oboe") do |*args|
16
+ opts = { :KVOp => m }
17
+ if args.length and args[0].class != Array
18
+ opts[:KVKey] = args[0].to_s
19
+ rhost = remote_host(args[0].to_s)
20
+ opts[:RemoteHost] = rhost if rhost
21
+ end
22
+
23
+ Oboe::API.trace('memcache', opts) do
24
+ result = send("#{m}_without_oboe", *args)
25
+ if m == :get and args.length and args[0].class == String
26
+ Oboe::API.log('memcache', 'info', { :KVHit => memcache_hit?(result) })
27
+ end
28
+ result
29
+ end
30
+ end
31
+
32
+ class_eval "alias #{m}_without_oboe #{m}"
33
+ class_eval "alias #{m} #{m}_with_oboe"
34
+ end
16
35
  end
36
+ end
37
+
38
+ end # module Memcached
17
39
 
18
- Oboe::API.trace('memcache', opts) do
19
- result = send("#{m}_without_oboe", *args)
20
- if m == :get and args.length and args[0].class == String
21
- Oboe::API.log('memcache', 'info', { :KVHit => memcache_hit?(result) })
40
+ module MemcachedRails
41
+ def self.included(cls)
42
+ cls.class_eval do
43
+ if ::Memcached::Rails.method_defined? :get_multi
44
+ alias get_multi_without_oboe get_multi
45
+ alias get_multi get_multi_with_oboe
46
+ elsif Oboe::Config[:verbose]
47
+ puts "[oboe/loading] Couldn't properly instrument Memcached. Partial traces may occur."
22
48
  end
23
- result
24
49
  end
25
50
  end
26
51
 
27
- class_eval "alias #{m}_without_oboe #{m}"
28
- class_eval "alias #{m} #{m}_with_oboe"
52
+ def get_multi_with_oboe(keys, raw=false)
53
+ if Oboe.tracing?
54
+ layer_kvs = {}
55
+ layer_kvs[:KVOp] = :get_multi
56
+
57
+ Oboe::API.trace('memcache', layer_kvs || {}, :get_multi) do
58
+ begin
59
+ info_kvs = {}
60
+ info_kvs[:KVKeyCount] = keys.flatten.length
61
+
62
+ values = get_multi_without_oboe(keys, raw)
63
+
64
+ info_kvs[:KVHitCount] = values.length
65
+ Oboe::API.log('memcache', 'info', info_kvs)
66
+ rescue
67
+ values = get_multi_without_oboe(keys, raw)
68
+ end
69
+ values
70
+ end
71
+ else
72
+ get_multi_without_oboe(keys, raw)
73
+ end
74
+ end
75
+
76
+ end # module MemcachedRails
77
+ end # module Inst
78
+ end # module Oboe
79
+
80
+ if defined?(::Memcached) and Oboe::Config[:memcached][:enabled]
81
+ ::Memcached.class_eval do
82
+ include Oboe::Inst::Memcached
83
+ end
84
+
85
+ if defined?(::Memcached::Rails)
86
+ ::Memcached::Rails.class_eval do
87
+ include Oboe::Inst::MemcachedRails
29
88
  end
30
89
  end
31
- puts "[oboe/loading] Instrumenting memcached" if Oboe::Config[:verbose]
32
90
  end
91
+