ddtrace 0.7.0 → 0.7.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 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