honeykiq 1.5.1 → 1.6.0

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
  SHA256:
3
- metadata.gz: 46ba2f2a444e752ec808468482baa250c018fc6217ea8fe745377b9cd0ad19a8
4
- data.tar.gz: 013d77542806960135ced82f15251e41a30af8d91779b2e63a3f512ba22a15f5
3
+ metadata.gz: c53a5f965e190c5016243288c0898fc6588fa9a8bd4aeb97a5633ecb92ced900
4
+ data.tar.gz: 866fedd93255c33eedda9c560674cd9f6ad42e1c02b2009dda02542b347b7f68
5
5
  SHA512:
6
- metadata.gz: 7773365409a90a1fd569849016c1c1c8010f58af33bd207be97b432acc981971393aef76598b3f7140f033792e6203798145051d077a4f723dbcd0b3b82350d8
7
- data.tar.gz: 866cc76f3bd37e359530df6fb9c899b7bc3986ff3261621e707b7fae831b5f3afc882068eb224bd04a3ef175f84f0c1d12de774377cd72c1dd25c1d299d45694
6
+ metadata.gz: c021b21d6d534f41cc64c23a91da1b994d738d23ade4d85597cbfd909a9b03c6ed6cd7f7bbbf2524ae203003e2c62d63f4b4e34b1f6747f4b901163506c51a37
7
+ data.tar.gz: 764c9ec1d6ff48f1f128b58bd105f23c5eccea57e0a04c11a7ef6098f05628062d757de8b2ec895a3c695250e0782406cdc099b30c37751614d6539e90bc14c5
data/.circleci/config.yml CHANGED
@@ -20,4 +20,4 @@ workflows:
20
20
  - test:
21
21
  matrix:
22
22
  parameters:
23
- ruby: ["3.2", "3.1", "3.0", "2.7", "2.6"]
23
+ ruby: ["3.2", "3.1", "3.0", "2.7"]
data/honeykiq.gemspec CHANGED
@@ -17,13 +17,13 @@ Gem::Specification.new do |spec|
17
17
  end
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.required_ruby_version = ">= 2.6"
20
+ spec.required_ruby_version = ">= 2.7"
21
21
 
22
- spec.add_dependency "sidekiq", "~> 6.2", ">= 6.2.2"
22
+ spec.add_dependency "sidekiq", ">= 6.2.2", "<8"
23
23
 
24
- spec.add_development_dependency "honeycomb-beeline", "~> 2.6"
24
+ spec.add_development_dependency "honeycomb-beeline", "~> 2"
25
25
  spec.add_development_dependency "pry", "~> 0.14"
26
- spec.add_development_dependency "rake", "~> 13.0"
27
- spec.add_development_dependency "rspec", "~> 3.10"
28
- spec.add_development_dependency "standard", "~> 0.13"
26
+ spec.add_development_dependency "rake", "~> 13"
27
+ spec.add_development_dependency "rspec", "~> 3"
28
+ spec.add_development_dependency "standard", "~> 1"
29
29
  end
@@ -32,11 +32,11 @@ module Honeykiq
32
32
 
33
33
  Honeycomb.start_span(
34
34
  name: "link",
35
- 'trace.link.trace_id': trace_id,
36
- 'trace.link.span_id': parent_span_id,
37
- 'meta.annotation_type': "link",
38
- 'trace.parent_id': current.id,
39
- 'trace.trace_id': current.trace.id
35
+ "trace.link.trace_id": trace_id,
36
+ "trace.link.span_id": parent_span_id,
37
+ "meta.annotation_type": "link",
38
+ "trace.parent_id": current.id,
39
+ "trace.trace_id": current.trace.id
40
40
  ).send
41
41
  end
42
42
 
@@ -47,7 +47,7 @@ module Honeykiq
47
47
  def child_trace(name, serialized_trace, &block)
48
48
  parent_trace_id, = TraceParser.parse(serialized_trace)
49
49
 
50
- Honeycomb.start_span(name: name, 'parent.trace_id': parent_trace_id, &block)
50
+ Honeycomb.start_span(name: name, "parent.trace_id": parent_trace_id, &block)
51
51
  end
52
52
 
53
53
  if defined?(Honeycomb)
@@ -29,12 +29,12 @@ module Honeykiq
29
29
  stats = Sidekiq::Stats.new
30
30
 
31
31
  {
32
- 'instance.processes': stats.processes_size,
33
- 'instance.busy': stats.workers_size,
34
- 'instance.enqueued': stats.enqueued,
35
- 'instance.scheduled': stats.scheduled_size,
36
- 'instance.retries': stats.retry_size,
37
- 'instance.dead': stats.dead_size
32
+ "instance.processes": stats.processes_size,
33
+ "instance.busy": stats.workers_size,
34
+ "instance.enqueued": stats.enqueued,
35
+ "instance.scheduled": stats.scheduled_size,
36
+ "instance.retries": stats.retry_size,
37
+ "instance.dead": stats.dead_size
38
38
  }
39
39
  end
40
40
 
@@ -42,27 +42,37 @@ module Honeykiq
42
42
  redis_info = fetch_redis_info
43
43
 
44
44
  {
45
- 'redis.connections': redis_info["connected_clients"].to_i,
46
- 'redis.memory_used': redis_info["used_memory"].to_i
45
+ "redis.connections": redis_info["connected_clients"].to_i,
46
+ "redis.memory_used": redis_info["used_memory"].to_i
47
47
  }
48
48
  end
49
49
 
50
50
  def fetch_redis_info
51
51
  Sidekiq.redis do |redis|
52
- redis.pipelined {
53
- redis.info :clients
54
- redis.info :memory
55
- }.reduce(&:merge)
52
+ redis.pipelined { |redis|
53
+ redis.call "INFO", "clients"
54
+ redis.call "INFO", "memory"
55
+ }
56
+ .map(&method(:hashify_info))
57
+ .reduce(&:merge)
56
58
  end
57
59
  end
58
60
 
61
+ def hashify_info(reply)
62
+ # based on: https://github.com/redis/redis-rb/blob/master/lib/redis/commands.rb
63
+ lines = reply.split("\r\n").grep_v(/^(#|$)/)
64
+ lines.map! { |line| line.split(":", 2) }
65
+ lines.compact!
66
+ lines.to_h
67
+ end
68
+
59
69
  def send_process_event(process, &extra)
60
70
  libhoney.event.add(
61
71
  type: :process,
62
- 'meta.dyno': process["hostname"],
63
- 'meta.process_id': process["pid"],
64
- 'process.concurrency': process["concurrency"],
65
- 'process.busy': process["busy"],
72
+ "meta.dyno": process["hostname"],
73
+ "meta.process_id": process["pid"],
74
+ "process.concurrency": process["concurrency"],
75
+ "process.busy": process["busy"],
66
76
  **(extra&.call(:process, process) || {})
67
77
  ).send
68
78
  end
@@ -70,9 +80,9 @@ module Honeykiq
70
80
  def send_queue_event(queue, &extra)
71
81
  libhoney.event.add(
72
82
  type: :queue,
73
- 'queue.name': queue.name,
74
- 'queue.latency_sec': queue.latency.to_f,
75
- 'queue.size': queue.size,
83
+ "queue.name": queue.name,
84
+ "queue.latency_sec": queue.latency.to_f,
85
+ "queue.size": queue.size,
76
86
  **(extra&.call(:queue, queue) || {})
77
87
  ).send
78
88
  end
@@ -35,7 +35,7 @@ module Honeykiq
35
35
  def call_with_event(event, job, queue)
36
36
  event.add(default_fields(job, queue))
37
37
  yield
38
- event.add_field(:'job.status', "finished")
38
+ event.add_field(:"job.status", "finished")
39
39
  rescue => error
40
40
  on_error(event, error)
41
41
  raise
@@ -48,37 +48,37 @@ module Honeykiq
48
48
  type: :job,
49
49
  **job_fields(job),
50
50
  **queue_fields(queue),
51
- 'meta.thread_id': Thread.current.object_id
51
+ "meta.thread_id": Thread.current.object_id
52
52
  }
53
53
  end
54
54
 
55
55
  def job_fields(job)
56
56
  {
57
- 'job.class': job.display_class,
58
- 'job.attempt_number': (job["retry_count"].to_i.nonzero? || 0) + 1,
59
- 'job.id': job.jid,
60
- 'job.arguments_bytes': job.args.to_json.bytesize,
61
- 'job.latency_sec': job.latency,
62
- 'job.batch_id': job["bid"]
57
+ "job.class": job.display_class,
58
+ "job.attempt_number": (job["retry_count"].to_i.nonzero? || 0) + 1,
59
+ "job.id": job.jid,
60
+ "job.arguments_bytes": job.args.to_json.bytesize,
61
+ "job.latency_sec": job.latency,
62
+ "job.batch_id": job["bid"]
63
63
  }.compact
64
64
  end
65
65
 
66
66
  def queue_fields(queue)
67
67
  {
68
- 'queue.name': queue.name,
69
- 'queue.size': queue.size
68
+ "queue.name": queue.name,
69
+ "queue.size": queue.size
70
70
  }
71
71
  end
72
72
 
73
73
  def on_error(event, error)
74
74
  return unless event
75
75
 
76
- event.add_field(:'job.status', "failed")
76
+ event.add_field(:"job.status", "failed")
77
77
  return unless libhoney?
78
78
 
79
79
  event.add(
80
- 'error.class': error.class.name,
81
- 'error.message': error.message
80
+ "error.class": error.class.name,
81
+ "error.message": error.message
82
82
  )
83
83
  end
84
84
 
@@ -1,3 +1,3 @@
1
1
  module Honeykiq
2
- VERSION = "1.5.1".freeze
2
+ VERSION = "1.6.0".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeykiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - carwow Developers
@@ -14,36 +14,36 @@ dependencies:
14
14
  name: sidekiq
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '6.2'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 6.2.2
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '6.2'
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 6.2.2
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: honeycomb-beeline
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '2.6'
39
+ version: '2'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '2.6'
46
+ version: '2'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pry
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -64,42 +64,42 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '13.0'
67
+ version: '13'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '13.0'
74
+ version: '13'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rspec
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '3.10'
81
+ version: '3'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '3.10'
88
+ version: '3'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: standard
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0.13'
95
+ version: '1'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0.13'
102
+ version: '1'
103
103
  description: Send Sidekiq related events to Honeycomb.
104
104
  email:
105
105
  - developers@carwow.co.uk
@@ -137,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
137
  requirements:
138
138
  - - ">="
139
139
  - !ruby/object:Gem::Version
140
- version: '2.6'
140
+ version: '2.7'
141
141
  required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="