ddtrace 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36285521893bb7e1b8ceaa8f28d5d0b2b5103239
4
- data.tar.gz: 0108b54ce0043a1ac7acd4412ea8cae915e5fdd2
3
+ metadata.gz: be21d892e040ade90a13ed979fa5e6ab7e0a580b
4
+ data.tar.gz: d5964cdb669c87cec23248d797104c19c065dd9e
5
5
  SHA512:
6
- metadata.gz: 1e41922419e9d96624ced8d265301dd1bf4aa2bb487b083a768ffb3282280e5c2f5a8551179016e87b53bd681bd26af9be69bb22e710db1b3bc0d77c3a53ef5d
7
- data.tar.gz: c02b8907da2873100ba44f4abeee8ff9c2034869adea96406b69a8ff79357339bfdfc5da8c1d172d92b976f8232de0436d7d14104019405573e8ef7aaa6150fd
6
+ metadata.gz: 9afe3f5cc5bd6704d7b66a5c6a12cec4c6c66152b75ae38a96030419ef32552c826770e047e77d27b6cb2c614871971580aabe7bd8347b6a52fec57b77f2aa33
7
+ data.tar.gz: 11c875488d99ec5920af2b055b2079f7e1b6a170be9bc3b162b5b5987280b2228ee70980af68071a16d1eff0faf2a67c386b461bf027ffa649f64b23f1023e71
data/.gitignore CHANGED
@@ -54,3 +54,6 @@ build-iPhoneSimulator/
54
54
  # lock files
55
55
  Gemfile.lock
56
56
  gemfiles/*.lock
57
+
58
+ # bundle config
59
+ gemfiles/.bundle
data/circle.yml CHANGED
@@ -24,7 +24,7 @@ dependencies:
24
24
  - pip install docker-compose==1.7.1
25
25
  - docker-compose up -d | cat
26
26
  # installing dev dependencies
27
- - gem update --system
27
+ - gem update --system=2.6.11
28
28
  - gem install builder
29
29
  - gem update bundler
30
30
  - bundle install
@@ -32,7 +32,7 @@ dependencies:
32
32
  - rvm get head
33
33
  - rvm install $MRI_VERSIONS
34
34
  override:
35
- - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem update --system
35
+ - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem update --system=2.6.11
36
36
  - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem install bundler
37
37
  - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do bundle install
38
38
  - rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do appraisal install
@@ -35,7 +35,7 @@ EOS
35
35
 
36
36
  spec.add_development_dependency 'rake', '~> 10.5'
37
37
  spec.add_development_dependency('rubocop', '~> 0.47') if RUBY_VERSION >= '2.1.0'
38
- spec.add_development_dependency 'minitest', '~> 5.10'
38
+ spec.add_development_dependency 'minitest', '= 5.10.1'
39
39
  spec.add_development_dependency 'appraisal', '~> 2.1'
40
40
  spec.add_development_dependency 'yard', '~> 0.9'
41
41
  end
@@ -23,15 +23,15 @@ We strongly suggest pinning the version of the library you deploy.
23
23
  The easiest way to get started with the tracing client is to instrument your web application. ``ddtrace`` gem
24
24
  provides auto instrumentation for the following web frameworks and libraries:
25
25
 
26
- * [Ruby on Rails](#label-Ruby+on+Rails)
27
- * [Sidekiq](#label-Sidekiq)
28
- * [Sinatra](#label-Sinatra)
29
- * [Rack](#label-Rack)
30
- * [Grape](#label-Grape)
31
- * [Active Record](#label-Active+Record)
32
- * [Elastic Search](#label-Elastic+Search)
33
- * [Net/HTTP](#label-Net/HTTP)
34
- * [Redis](#label-Redis)
26
+ * [Ruby on Rails](#Ruby_on_Rails)
27
+ * [Sidekiq](#Sidekiq)
28
+ * [Sinatra](#Sinatra)
29
+ * [Rack](#Rack)
30
+ * [Grape](#Grape)
31
+ * [Active Record](#Active_Record)
32
+ * [Elastic Search](#Elastic_Search)
33
+ * [Net/HTTP](#Net_HTTP)
34
+ * [Redis](#Redis)
35
35
 
36
36
  ## Web Frameworks
37
37
 
@@ -13,4 +13,4 @@ gem "sqlite3"
13
13
  gem "activerecord"
14
14
  gem "sidekiq"
15
15
 
16
- gemspec :path => "../"
16
+ gemspec path: "../"
@@ -12,4 +12,4 @@ gem "sqlite3"
12
12
  gem "activerecord", "3.2.22.5"
13
13
  gem "sidekiq", "4.0.0"
14
14
 
15
- gemspec :path => "../"
15
+ gemspec path: "../"
@@ -4,8 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "test-unit"
6
6
  gem "rails", "3.2.22.5"
7
- gem "mysql2", "0.3.21", :platform => :ruby
8
- gem "activerecord-mysql-adapter", :platform => :ruby
9
- gem "activerecord-jdbcmysql-adapter", :platform => :jruby
7
+ gem "mysql2", "0.3.21", platform: :ruby
8
+ gem "activerecord-mysql-adapter", platform: :ruby
9
+ gem "activerecord-jdbcmysql-adapter", platform: :jruby
10
10
 
11
- gemspec :path => "../"
11
+ gemspec path: "../"
@@ -4,7 +4,7 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "test-unit"
6
6
  gem "rails", "3.2.22.5"
7
- gem "pg", "0.15.1", :platform => :ruby
8
- gem "activerecord-jdbcpostgresql-adapter", :platform => :jruby
7
+ gem "pg", "0.15.1", platform: :ruby
8
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
9
9
 
10
- gemspec :path => "../"
10
+ gemspec path: "../"
@@ -4,8 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "test-unit"
6
6
  gem "rails", "3.2.22.5"
7
- gem "pg", "0.15.1", :platform => :ruby
8
- gem "activerecord-jdbcpostgresql-adapter", :platform => :jruby
7
+ gem "pg", "0.15.1", platform: :ruby
8
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
9
9
  gem "redis-rails"
10
10
 
11
- gemspec :path => "../"
11
+ gemspec path: "../"
@@ -4,8 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "test-unit"
6
6
  gem "rails", "3.2.22.5"
7
- gem "pg", "0.15.1", :platform => :ruby
8
- gem "activerecord-jdbcpostgresql-adapter", :platform => :jruby
7
+ gem "pg", "0.15.1", platform: :ruby
8
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
9
9
  gem "sidekiq"
10
10
 
11
- gemspec :path => "../"
11
+ gemspec path: "../"
@@ -3,7 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "4.2.7.1"
6
- gem "mysql2", :platform => :ruby
7
- gem "activerecord-jdbcmysql-adapter", :platform => :jruby
6
+ gem "mysql2", platform: :ruby
7
+ gem "activerecord-jdbcmysql-adapter", platform: :jruby
8
8
 
9
- gemspec :path => "../"
9
+ gemspec path: "../"
@@ -3,7 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "4.2.7.1"
6
- gem "pg", :platform => :ruby
7
- gem "activerecord-jdbcpostgresql-adapter", :platform => :jruby
6
+ gem "pg", platform: :ruby
7
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
8
8
 
9
- gemspec :path => "../"
9
+ gemspec path: "../"
@@ -3,8 +3,8 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "4.2.7.1"
6
- gem "pg", :platform => :ruby
7
- gem "activerecord-jdbcpostgresql-adapter", :platform => :jruby
6
+ gem "pg", platform: :ruby
7
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
8
8
  gem "redis-rails"
9
9
 
10
- gemspec :path => "../"
10
+ gemspec path: "../"
@@ -3,9 +3,9 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "4.2.7.1"
6
- gem "pg", :platform => :ruby
7
- gem "activerecord-jdbcpostgresql-adapter", :platform => :jruby
6
+ gem "pg", platform: :ruby
7
+ gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
8
8
  gem "sidekiq"
9
9
  gem "activejob"
10
10
 
11
- gemspec :path => "../"
11
+ gemspec path: "../"
@@ -3,6 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "5.0.1"
6
- gem "mysql2", :platform => :ruby
6
+ gem "mysql2", platform: :ruby
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -3,6 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "5.0.1"
6
- gem "pg", :platform => :ruby
6
+ gem "pg", platform: :ruby
7
7
 
8
- gemspec :path => "../"
8
+ gemspec path: "../"
@@ -3,7 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "5.0.1"
6
- gem "pg", :platform => :ruby
6
+ gem "pg", platform: :ruby
7
7
  gem "redis-rails"
8
8
 
9
- gemspec :path => "../"
9
+ gemspec path: "../"
@@ -3,8 +3,8 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "5.0.1"
6
- gem "pg", :platform => :ruby
6
+ gem "pg", platform: :ruby
7
7
  gem "sidekiq"
8
8
  gem "activejob"
9
9
 
10
- gemspec :path => "../"
10
+ gemspec path: "../"
@@ -43,31 +43,60 @@ module Datadog
43
43
  hostname: user_config[:trace_agent_hostname],
44
44
  port: user_config[:trace_agent_port]
45
45
  )
46
-
47
- # configure Sidekiq service
48
- @tracer.set_service_info(
49
- @sidekiq_service,
50
- 'sidekiq',
51
- Datadog::Ext::AppTypes::WORKER
52
- )
53
46
  end
54
47
 
55
48
  def call(worker, job, queue)
56
- @tracer.trace('sidekiq.job', service: @sidekiq_service, span_type: 'job') do |span|
57
- if job['wrapped']
58
- # If class is wrapping something else, the interesting resource info
59
- # is the underlying, wrapped class, and not the wrapper.
60
- span.resource = job['wrapped']
61
- span.set_tag('sidekiq.job.wrapper', job['class'])
62
- else
63
- span.resource = job['class']
64
- end
49
+ # If class is wrapping something else, the interesting resource info
50
+ # is the underlying, wrapped class, and not the wrapper.
51
+ resource = if job['wrapped']
52
+ job['wrapped']
53
+ else
54
+ job['class']
55
+ end
56
+
57
+ # configure Sidekiq service
58
+ service = sidekiq_service(resource_worker(resource))
59
+ set_service_info(service)
60
+
61
+ @tracer.trace('sidekiq.job', service: service, span_type: 'job') do |span|
62
+ span.resource = resource
65
63
  span.set_tag('sidekiq.job.id', job['jid'])
66
64
  span.set_tag('sidekiq.job.retry', job['retry'])
67
65
  span.set_tag('sidekiq.job.queue', job['queue'])
66
+ span.set_tag('sidekiq.job.wrapper', job['class']) if job['wrapped']
67
+
68
68
  yield
69
69
  end
70
70
  end
71
+
72
+ private
73
+
74
+ # rubocop:disable Lint/HandleExceptions
75
+ def resource_worker(resource)
76
+ Object.const_get(resource)
77
+ rescue NameError
78
+ end
79
+
80
+ def worker_config(worker)
81
+ if worker.respond_to?(:datadog_tracer_config)
82
+ worker.datadog_tracer_config
83
+ else
84
+ {}
85
+ end
86
+ end
87
+
88
+ def sidekiq_service(resource)
89
+ worker_config(resource).fetch(:service, @sidekiq_service)
90
+ end
91
+
92
+ def set_service_info(service)
93
+ return if @tracer.services[service]
94
+ @tracer.set_service_info(
95
+ service,
96
+ 'sidekiq',
97
+ Datadog::Ext::AppTypes::WORKER
98
+ )
99
+ end
71
100
  end
72
101
  end
73
102
  end
@@ -14,6 +14,9 @@ module Datadog
14
14
  # seconds before the transport timeout
15
15
  TIMEOUT = 1
16
16
 
17
+ # header containing the number of traces in a payload
18
+ TRACE_COUNT_HEADER = 'X-Datadog-Trace-Count'.freeze
19
+
17
20
  def initialize(hostname, port, options = {})
18
21
  @hostname = hostname
19
22
  @port = port
@@ -41,8 +44,9 @@ module Datadog
41
44
  payload = @encoder.encode_services(data)
42
45
  status_code = post(@services_endpoint, payload)
43
46
  when :traces
47
+ count = data.length
44
48
  payload = @encoder.encode_traces(data)
45
- status_code = post(@traces_endpoint, payload)
49
+ status_code = post(@traces_endpoint, payload, count)
46
50
  else
47
51
  Datadog::Tracer.log.error("Unsupported endpoint: #{endpoint}")
48
52
  return nil
@@ -56,9 +60,11 @@ module Datadog
56
60
  end
57
61
 
58
62
  # send data to the trace-agent; the method is thread-safe
59
- def post(url, data)
63
+ def post(url, data, count = nil)
60
64
  Datadog::Tracer.log.debug("Sending data from process: #{Process.pid}")
61
- request = Net::HTTP::Post.new(url, @headers)
65
+ headers = count.nil? ? {} : { TRACE_COUNT_HEADER => count.to_s }
66
+ headers = headers.merge(@headers)
67
+ request = Net::HTTP::Post.new(url, headers)
62
68
  request.body = data
63
69
 
64
70
  response = Net::HTTP.start(@hostname, @port, read_timeout: TIMEOUT) { |http| http.request(request) }
@@ -2,7 +2,7 @@ module Datadog
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 7
5
- PATCH = 0
5
+ PATCH = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddtrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-24 00:00:00.000000000 Z
11
+ date: 2017-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: '5.10'
61
+ version: 5.10.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: '5.10'
68
+ version: 5.10.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: appraisal
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
192
  version: '0'
193
193
  requirements: []
194
194
  rubyforge_project:
195
- rubygems_version: 2.5.1
195
+ rubygems_version: 2.6.11
196
196
  signing_key:
197
197
  specification_version: 4
198
198
  summary: Datadog tracing code for your Ruby applications