honeykiq 1.5.1 → 1.6.0

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
  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
  - - ">="